From ddce31c12fa34350881df76d1516cd0af30037a8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 27 Oct 2011 13:25:14 +0200 Subject: [PATCH] Do not call setCursor on Desktop or if there is no platform window. Fix a crash on Windows. Change-Id: I2b88e113d7149444ebc8946c0ee0eba7a9b5bbc2 Reviewed-by: Lars Knoll --- src/gui/kernel/qguiapplication.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index e8fa22232e..1dab8a7d62 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1220,6 +1220,14 @@ static void applyCursor(QWindow *w, const QCursor &c) } } +static inline void applyCursor(const QList &l, const QCursor &c) +{ + for (int i = 0; i < l.size(); ++i) { + QWindow *w = l.at(i); + if (w->handle() && w->windowType() != Qt::Desktop) + applyCursor(w, c); + } +} /*! \fn void QGuiApplication::setOverrideCursor(const QCursor &cursor) @@ -1250,8 +1258,7 @@ static void applyCursor(QWindow *w, const QCursor &c) void QGuiApplication::setOverrideCursor(const QCursor &cursor) { qGuiApp->d_func()->cursor_list.prepend(cursor); - for (int i = 0; i < QGuiApplicationPrivate::window_list.size(); ++i) - applyCursor(QGuiApplicationPrivate::window_list.at(i), cursor); + applyCursor(QGuiApplicationPrivate::window_list, cursor); } /*! @@ -1271,8 +1278,7 @@ void QGuiApplication::restoreOverrideCursor() return; qGuiApp->d_func()->cursor_list.removeFirst(); QCursor c(qGuiApp->d_func()->cursor_list.value(0, QCursor())); - for (int i = 0; i < QGuiApplicationPrivate::window_list.size(); ++i) - applyCursor(QGuiApplicationPrivate::window_list.at(i), c); + applyCursor(QGuiApplicationPrivate::window_list, c); } #endif// QT_NO_CURSOR