Details
-
Bug
-
Resolution: Unresolved
-
P4: Low
-
None
-
5.6.0
-
None
Description
I tried to change the cursor using the updateCursor(QQuickWindowPrivate::updateCursor).
void QQuickWindowPrivate::updateCursor(const QPointF &scenePos) { Q_Q(QQuickWindow); QQuickItem *oldCursorItem = cursorItem; cursorItem = findCursorItem(contentItem, scenePos); if (cursorItem != oldCursorItem) { QWindow *renderWindow = QQuickRenderControl::renderWindowFor(q); QWindow *window = renderWindow ? renderWindow : q; if (cursorItem) window->setCursor(cursorItem->cursor()); else window->unsetCursor(); } }
But If I have a mouseArea, always return mouseArea from findCursorItem.
mouseArea is invisible item, but visible property is true(default).
QQuickItem *QQuickWindowPrivate::findCursorItem(QQuickItem *item, const QPointF &scenePos) { ... if (itemPrivate->subtreeCursorEnabled) { QList<QQuickItem *> children = itemPrivate->paintOrderChildItems(); for (int ii = children.count() - 1; ii >= 0; --ii) { QQuickItem *child = children.at(ii); if (!child->isVisible() || !child->isEnabled() || QQuickItemPrivate::get(child)->culled) continue; if (QQuickItem *cursorItem = findCursorItem(child, scenePos)) return cursorItem; } }
In my opinion, should handle the mouseArea exception case.
Also enabled value are specific to the mouseArea.