summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel/qwindow.cpp')
-rw-r--r--src/gui/kernel/qwindow.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index 8471102aee..3f5f71002b 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -2735,26 +2735,29 @@ void QWindowPrivate::setCursor(const QCursor *newCursor)
cursor = QCursor(Qt::ArrowCursor);
hasCursor = false;
}
- // Only attempt to set cursor and emit signal if there is an actual platform cursor
- QScreen* screen = q->screen();
- if (screen && screen->handle()->cursor()) {
- applyCursor();
+ // Only attempt to emit signal if there is an actual platform cursor
+ if (applyCursor()) {
QEvent event(QEvent::CursorChange);
QGuiApplication::sendEvent(q, &event);
}
}
-void QWindowPrivate::applyCursor()
+// Apply the cursor and returns true iff the platform cursor exists
+bool QWindowPrivate::applyCursor()
{
Q_Q(QWindow);
- if (platformWindow) {
- if (QPlatformCursor *platformCursor = q->screen()->handle()->cursor()) {
+ if (QScreen *screen = q->screen()) {
+ if (QPlatformCursor *platformCursor = screen->handle()->cursor()) {
+ if (!platformWindow)
+ return true;
QCursor *c = QGuiApplication::overrideCursor();
if (!c && hasCursor)
c = &cursor;
platformCursor->changeCursor(c, q);
+ return true;
}
}
+ return false;
}
#endif // QT_NO_CURSOR