summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qguiapplication.cpp17
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp9
2 files changed, 17 insertions, 9 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
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp
index c6680eacec..86d8da254a 100644
--- a/src/widgets/kernel/qwidget_qpa.cpp
+++ b/src/widgets/kernel/qwidget_qpa.cpp
@@ -1064,9 +1064,7 @@ void QWidgetPrivate::setModal_sys()
static inline void applyCursor(QWidget *w, QCursor c)
{
if (QWindow *window = w->windowHandle())
- if (const QScreen *screen = window->screen())
- if (QPlatformCursor *cursor = screen->handle()->cursor())
- cursor->changeCursor(&c, window);
+ window->setCursor(c);
}
void qt_qpa_set_cursor(QWidget *w, bool force)
@@ -1097,10 +1095,7 @@ void qt_qpa_set_cursor(QWidget *w, bool force)
return;
if (w->isWindow() || w->testAttribute(Qt::WA_SetCursor)) {
- QCursor *oc = QApplication::overrideCursor();
- if (oc)
- applyCursor(nativeParent, *oc);
- else if (w->isEnabled())
+ if (w->isEnabled())
applyCursor(nativeParent, w->cursor());
else
// Enforce the windows behavior of clearing the cursor on