diff -ur mozilla-1.9.2.orig/widget/src/qt/nsWindow.cpp mozilla-1.9.2/widget/src/qt/nsWindow.cpp --- mozilla-1.9.2.orig/widget/src/qt/nsWindow.cpp +++ mozilla-1.9.2/widget/src/qt/nsWindow.cpp @@ -668,7 +668,7 @@ void nsWindow::Scroll(const nsIntPoint& aDelta, - const nsIntRect& aSource, + const nsTArray& aDestRects, const nsTArray& aConfigurations) { if (!mWidget) { @@ -695,8 +695,16 @@ } } - QRect rect(aSource.x, aSource.y, aSource.width, aSource.height); - mWidget->scroll(aDelta.x, aDelta.y, rect); + // Do a similar thing to what is done in GTK widget set. + // Even though it's a workaround from old GTK? + for(PRUint32 i = 0; i < aDestRects.Length(); ++i) { + const nsIntRect& aSource = aDestRects[i]; + + QRect rect(aSource.x, aSource.y, aSource.width, aSource.height); + mWidget->scroll(aDelta.x, aDelta.y, rect); + } + + ConfigureChildren(aConfigurations); // Show windows again... diff -ur mozilla-1.9.2.orig/widget/src/qt/nsWindow.h mozilla-1.9.2/widget/src/qt/nsWindow.h --- mozilla-1.9.2.orig/widget/src/qt/nsWindow.h +++ mozilla-1.9.2/widget/src/qt/nsWindow.h @@ -165,7 +165,7 @@ PRBool aIsSynchronous); NS_IMETHOD Update(); void Scroll(const nsIntPoint&, - const nsIntRect&, + const nsTArray&, const nsTArray&); virtual void* GetNativeData(PRUint32 aDataType);