summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2012-10-03 12:06:14 +0300
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-04 09:13:33 +0200
commit8547205fe882819af9eb4cdd024404ab3b9ad0dc (patch)
tree6561aa30cd0276fe281cb8a27455f3d04b376376 /src/gui
parentb4bf76fffce4dfac1363d83a823a5f26541cd929 (diff)
Show widget cursor after restoring last override cursor
qwidget_qpa.cpp was setting cursor directly to platform window, so QWindow didn't actually know what cursor was supposed to be shown. Since QWindow now supports setting cursor and has override cursor handling there, set cursor via QWindow instead of platform window. Also changed QGuiApplication override cursor handling so that it will query the cursor from QWindow if there is no override cursor. With these changes, widget's custom cursor will be properly shown when final override cursor is restored. Task-number: QTBUG-24674 Change-Id: I2d2bb1027779256f9d6de560b6533f45e205ffe9 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qguiapplication.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 7e7997d7eb..84f22de322 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -2328,6 +2328,15 @@ static inline void applyCursor(const QList<QWindow *> &l, const QCursor &c)
}
}
+static inline void applyWindowCursor(const QList<QWindow *> &l)
+{
+ for (int i = 0; i < l.size(); ++i) {
+ QWindow *w = l.at(i);
+ if (w->handle() && w->windowType() != Qt::Desktop)
+ applyCursor(w, w->cursor());
+ }
+}
+
/*!
\fn void QGuiApplication::setOverrideCursor(const QCursor &cursor)
@@ -2376,8 +2385,12 @@ void QGuiApplication::restoreOverrideCursor()
if (qGuiApp->d_func()->cursor_list.isEmpty())
return;
qGuiApp->d_func()->cursor_list.removeFirst();
- QCursor c(qGuiApp->d_func()->cursor_list.value(0, QCursor()));
- applyCursor(QGuiApplicationPrivate::window_list, c);
+ if (qGuiApp->d_func()->cursor_list.size() > 0) {
+ QCursor c(qGuiApp->d_func()->cursor_list.value(0));
+ applyCursor(QGuiApplicationPrivate::window_list, c);
+ } else {
+ applyWindowCursor(QGuiApplicationPrivate::window_list);
+ }
}
#endif// QT_NO_CURSOR