[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.4/kdelibs/khtml/rendering
From:       Germain Garand <germain () ebooksfrance ! org>
Date:       2010-02-24 2:17:49
Message-ID: 1266977869.971454.24656.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1095343 by ggarand:

automatically merged revision 1088982:
don't allow any synchronous update of scrollbars during layout

 M  +8 -1      render_layer.cpp  
 M  +2 -1      render_layer.h  


--- branches/KDE/4.4/kdelibs/khtml/rendering/render_layer.cpp #1095342:1095343
@@ -75,7 +75,14 @@
 void
 RenderScrollMediator::slotValueChanged()
 {
-    m_layer->updateScrollPositionFromScrollbars();
+    if ( m_layer->renderer()->canvas()->isPerformingLayout() ) {
+        if (!m_waitingForUpdate)
+            QTimer::singleShot(0, this, SLOT(slotValueChanged()));
+        m_waitingForUpdate = true;
+    } else {
+        m_waitingForUpdate = false;
+        m_layer->updateScrollPositionFromScrollbars();
+    }
 }
 
 RenderLayer::RenderLayer(RenderObject* object)
--- branches/KDE/4.4/kdelibs/khtml/rendering/render_layer.h #1095342:1095343
@@ -62,13 +62,14 @@
     Q_OBJECT
 public:
     RenderScrollMediator(RenderLayer* layer)
-    :m_layer(layer) {}
+    :m_layer(layer), m_waitingForUpdate(false) {}
 
 public Q_SLOTS:
     void slotValueChanged();
 
 private:
     RenderLayer* m_layer;
+    bool m_waitingForUpdate;
 };
 
 // This class handles the auto-scrolling of layers with overflow: marquee.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic