From 7e46280c0552e1368f21ecf6019147261acb2dc3 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Mon, 24 Jan 2011 21:09:19 +0100 Subject: Cocoa: fix scroll optimization bug The optimization commited a few commits before this one faulty stopped normal dispatching of enter/leave. This patch fixes this. --- src/gui/kernel/qapplication.cpp | 2 ++ src/gui/kernel/qt_cocoa_helpers_mac_p.h | 2 +- src/gui/kernel/qwidget_mac.mm | 3 +-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index af4a258..e91fe04 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -4430,6 +4430,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e) if (w->testAttribute(Qt::WA_AcceptTouchEvents)) qt_widget_private(w)->registerTouchWindow(true); } + res = d->notify_helper(receiver, e); break; case QEvent::Leave: if (receiver->isWidgetType()) { @@ -4437,6 +4438,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e) if (w->testAttribute(Qt::WA_AcceptTouchEvents)) qt_widget_private(w)->registerTouchWindow(false); } + res = d->notify_helper(receiver, e); break; #endif default: diff --git a/src/gui/kernel/qt_cocoa_helpers_mac_p.h b/src/gui/kernel/qt_cocoa_helpers_mac_p.h index eab8a86..9e09fd3 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac_p.h +++ b/src/gui/kernel/qt_cocoa_helpers_mac_p.h @@ -286,10 +286,10 @@ public: { if (!_inWheelEvent) return; + _inWheelEvent = false; if (!_target) return; - _inWheelEvent = false; _target->scroll_sys(_dx, _dy, _scrollRect); _target = 0; diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index f3fbaa7..1a1bb6e 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -4653,11 +4653,10 @@ void QWidgetPrivate::scroll_sys(int dx, int dy) void QWidgetPrivate::scroll_sys(int dx, int dy, const QRect &qscrollRect) { - Q_Q(QWidget); - if (QMacScrollOptimization::delayScroll(this, dx, dy, qscrollRect)) return; + Q_Q(QWidget); if (QApplicationPrivate::graphicsSystem() && !paintOnScreen()) { // INVARIANT: Alien paint engine scrollRect(qscrollRect, dx, dy); -- cgit v0.12