[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/khtml/xml
From: Viacheslav Tokarev <tsjoker () gmail ! com>
Date: 2009-03-27 17:32:41
Message-ID: 1238175161.385458.22388.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 945551 by vtokarev:
Use remaind bit in NodeImpl for storing :hover dependency of element on itself
which appeared to be very popular
M +2 -1 dom_nodeimpl.cpp
M +3 -1 dom_nodeimpl.h
M +16 -0 dom_restyler.cpp
--- trunk/KDE/kdelibs/khtml/xml/dom_nodeimpl.cpp #945550:945551
@@ -86,7 +86,8 @@
m_implicit( false ),
m_htmlCompat( false ),
m_hasClass( false ),
- m_hasCombinedStyle( false )
+ m_hasCombinedStyle( false ),
+ m_hasHoverDependency(false)
{
}
--- trunk/KDE/kdelibs/khtml/xml/dom_nodeimpl.h #945550:945551
@@ -265,6 +265,8 @@
void setHasChangedChild( bool b = true ) { m_hasChangedChild = b; }
void setInDocument(bool b=true) { m_inDocument = b; }
void setHTMLCompat(bool b) { m_htmlCompat = b; }
+ bool hasHoverDependency() { return m_hasHoverDependency; }
+ void setHasHoverDependency(bool b = true) { m_hasHoverDependency = b; }
virtual void setFocus(bool b=true) { m_focused = b; }
virtual void setActive(bool b=true) { m_active = b; }
virtual void setHovered(bool b=true) { m_hovered = b; }
@@ -524,7 +526,7 @@
bool m_htmlCompat : 1; // true if element was created in HTML compat mode
bool m_hasClass : 1; // true if element has a class property, as relevant to \
CSS
bool m_hasCombinedStyle : 1; // true if element has inline styles and \
presentational styles
- bool m_unused : 1; // free bit
+ bool m_hasHoverDependency : 1; // true if element has hover dependency on itself
};
// this is the full Node Implementation with parents and children.
--- trunk/KDE/kdelibs/khtml/xml/dom_restyler.cpp #945550:945551
@@ -32,6 +32,10 @@
void DynamicDomRestyler::addDependency(ElementImpl* subject, ElementImpl* \
dependency, StructuralDependencyType type) {
assert(type < LastStructuralDependency);
+ if (subject == dependency && type == HoverDependency) {
+ subject->setHasHoverDependency(true);
+ return;
+ }
dependency_map[type].insert(dependency, subject);
reverse_map.insert(subject,dependency);
@@ -39,12 +43,19 @@
void DynamicDomRestyler::removeDependency(ElementImpl* subject, ElementImpl* \
dependency, StructuralDependencyType type) {
+ if (subject == dependency && type == HoverDependency) {
+ subject->setHasHoverDependency(false);
+ return;
+ }
dependency_map[type].remove(dependency, subject);
// don't remove from reverse_map as there might be other dependencies to the \
same element }
void DynamicDomRestyler::removeDependencies(ElementImpl* subject, \
StructuralDependencyType type) {
+ if (type == HoverDependency)
+ subject->setHasHoverDependency(false);
+
QSet<ElementImpl*>* my_dependencies = reverse_map.find(subject);
if (!my_dependencies) return;
@@ -63,6 +74,8 @@
void DynamicDomRestyler::resetDependencies(ElementImpl* subject)
{
+ subject->setHasHoverDependency(false);
+
QSet<ElementImpl*>* my_dependencies = reverse_map.find(subject);
if (!my_dependencies) return;
@@ -83,6 +96,9 @@
void DynamicDomRestyler::restyleDependent(ElementImpl* dependency, \
StructuralDependencyType type) {
assert(type < LastStructuralDependency);
+ if (type == HoverDependency && dependency->hasHoverDependency())
+ dependency->setChanged(true);
+
QSet<ElementImpl*>* dep = dependency_map[type].find(dependency);
if (!dep) return;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic