aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@digia.com>2014-08-14 13:34:30 +0200
committerLaszlo Agocs <laszlo.agocs@digia.com>2014-08-15 10:35:01 +0200
commit63f0c196eecb88804f8bbe410a38d0274955f994 (patch)
tree6892f0e465d142512e3bffa821aa2641a2bfa004 /src
parent82fc19625263b26343ef6c1de5c5c13ae1c9ab25 (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.cpp12
-rw-r--r--src/quick/items/qquickwindow.cpp6
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();
}
}