summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-04-04 10:23:02 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-04-05 09:00:51 +0000
commit2823cc6d4b24b26f82c991c532b749baa9dbb3a7 (patch)
tree194c638a65a843672d34554794c8b3ef8972f3c6 /src/plugins/platforms/windows
parentf2fd5f390ce8f93778d755112d0f892758d243e2 (diff)
Windows QPA: Fix override cursor not working when re-entering the window
Return early from QWindowsWindow::applyCursor() when an override cursor is set. Task-number: QTBUG-67467 Change-Id: I0d3ceead8bbbd3c6295c216a944a1ef15b6f8190 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/plugins/platforms/windows')
-rw-r--r--src/plugins/platforms/windows/qwindowscursor.h1
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp2
2 files changed, 3 insertions, 0 deletions
diff --git a/src/plugins/platforms/windows/qwindowscursor.h b/src/plugins/platforms/windows/qwindowscursor.h
index 4772f3fce5..53f185358b 100644
--- a/src/plugins/platforms/windows/qwindowscursor.h
+++ b/src/plugins/platforms/windows/qwindowscursor.h
@@ -107,6 +107,7 @@ public:
void changeCursor(QCursor * widgetCursor, QWindow * widget) override;
void setOverrideCursor(const QCursor &cursor) override;
void clearOverrideCursor() override;
+ bool hasOverrideCursor() const { return m_overriddenCursor != nullptr; }
QPoint pos() const override;
void setPos(const QPoint &pos) override;
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 9872b6b4e0..f1762146ec 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -2410,6 +2410,8 @@ static inline bool applyNewCursor(const QWindow *w)
void QWindowsWindow::applyCursor()
{
+ if (static_cast<const QWindowsCursor *>(screen()->cursor())->hasOverrideCursor())
+ return;
#ifndef QT_NO_CURSOR
if (m_cursor->isNull()) { // Recurse up to parent with non-null cursor. Set default for toplevel.
if (const QWindow *p = window()->parent()) {