diff options
author | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-08-14 13:34:30 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-08-15 10:35:01 +0200 |
commit | 63f0c196eecb88804f8bbe410a38d0274955f994 (patch) | |
tree | 6892f0e465d142512e3bffa821aa2641a2bfa004 /src | |
parent | 82fc19625263b26343ef6c1de5c5c13ae1c9ab25 (diff) |
Fix cursorShape with QQuickWidget
Task-number: QTBUG-40729
Change-Id: If3b2f8ca8795da1ac7c626db9c872f735d1e7b5d
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 12 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 6 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 9a8243ead5..227889ee0a 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -42,6 +42,7 @@ #include "qquickitem.h" #include "qquickwindow.h" +#include "qquickrendercontrol.h" #include <QtQml/qjsengine.h> #include "qquickwindow_p.h" @@ -6754,9 +6755,10 @@ void QQuickItem::setCursor(const QCursor &cursor) if (oldShape != cursor.shape() || oldShape >= Qt::LastCursor || cursor.shape() >= Qt::LastCursor) { d->extra.value().cursor = cursor; if (d->window) { - QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(d->window); - if (windowPrivate->cursorItem == this) - d->window->setCursor(cursor); + QWindow *renderWindow = QQuickRenderControl::renderWindowFor(d->window); + QWindow *window = renderWindow ? renderWindow : d->window; // this may not be a QQuickWindow + if (QQuickWindowPrivate::get(d->window)->cursorItem == this) + window->setCursor(cursor); } } @@ -6764,7 +6766,9 @@ void QQuickItem::setCursor(const QCursor &cursor) d->incrementCursorCount(+1); d->hasCursor = true; if (d->window) { - QPointF pos = d->window->mapFromGlobal(QGuiApplicationPrivate::lastCursorPosition.toPoint()); + QWindow *renderWindow = QQuickRenderControl::renderWindowFor(d->window); + QWindow *window = renderWindow ? renderWindow : d->window; + QPointF pos = window->mapFromGlobal(QGuiApplicationPrivate::lastCursorPosition.toPoint()); if (contains(mapFromScene(pos))) QQuickWindowPrivate::get(d->window)->updateCursor(pos); } diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index a06f41c045..01ebf59d50 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -2255,10 +2255,12 @@ void QQuickWindowPrivate::updateCursor(const QPointF &scenePos) cursorItem = findCursorItem(contentItem, scenePos); if (cursorItem != oldCursorItem) { + QWindow *renderWindow = QQuickRenderControl::renderWindowFor(q); + QWindow *window = renderWindow ? renderWindow : q; if (cursorItem) - q->setCursor(cursorItem->cursor()); + window->setCursor(cursorItem->cursor()); else - q->unsetCursor(); + window->unsetCursor(); } } |