diff options
Diffstat (limited to 'debian/patches/0248-fix-qwidget-scroll-slowness.diff')
-rw-r--r-- | debian/patches/0248-fix-qwidget-scroll-slowness.diff | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/debian/patches/0248-fix-qwidget-scroll-slowness.diff b/debian/patches/0248-fix-qwidget-scroll-slowness.diff new file mode 100644 index 0000000..8e0353b --- /dev/null +++ b/debian/patches/0248-fix-qwidget-scroll-slowness.diff @@ -0,0 +1,39 @@ +qt-bugs@ issue : N227210 +Trolltech task ID : 228764 +bugs.kde.org number : 167739 +applied: no +author: Germain Garand <germain@ebooksfrance.org> + +QWidgetPrivate::scrollRect doesn't account for it's rect argument +but rather examine the whole widget surface when pondering if +it can apply accelerated blitting, resulting in unnecessarily slow +and non-blitting QWidget::scroll calls. + +--- a/src/gui/painting/qbackingstore.cpp ++++ b/src/gui/painting/qbackingstore.cpp +@@ -517,7 +517,8 @@ void QWidgetPrivate::scrollRect(const QR + } + + bool overlapped = false; +- bool accelerateScroll = accelEnv && isOpaque() && !(overlapped = isOverlapped(data.crect)); ++ QRect cRect = clipRect(); ++ bool accelerateScroll = accelEnv && isOpaque() && !(overlapped = isOverlapped(rect & cRect)); + + #if defined(Q_WS_QWS) + QWSWindowSurface *surface; +@@ -552,13 +553,13 @@ void QWidgetPrivate::scrollRect(const QR + #ifdef Q_WS_QWS + QWSWindowSurface *surface = static_cast<QWSWindowSurface*>(wbs->windowSurface); + const QRegion clip = surface->clipRegion().translated(-toplevelOffset) +- & clipRect(); ++ & cRect; + const QRect scrollRect = rect & clip.boundingRect(); + const QRect destRect = scrollRect.translated(dx, dy) + & scrollRect + & clip.boundingRect(); + #else +- QRect scrollRect = rect & clipRect(); ++ QRect scrollRect = rect & cRect; + + QRect destRect = scrollRect.isValid() ? scrollRect.translated(dx,dy).intersected(scrollRect) : QRect(); + |