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.
Attachments
Gerrit Reviews
For Gerrit Dashboard: QTBUG-56881 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
175480,5 | Fix the custom cursor issue | dev | qt/qtdeclarative | Status: ABANDONED | -1 | 0 |
183069,3 | Doc: Added a description of visible in MouseArea | dev | qt/qtdeclarative | Status: MERGED | +2 | 0 |