In a Qt Quick Wayland compositor (one that does not use WaylandCursorItem though): Suppose the mouse enters a surface item(a descendant of QQuickItem) which represents a wayland surface. Then it becomes cursorItem when QQuickWindowPrivate::updateCursor() is called. In webOS QQuickWindowPrivate::updateCursor() can be called again by the wayland client. In this case updateCursor doesn't change the cursor because the item returned by findCursorItemAndHandler() is the same with cursorItem. Setting cursorItem to null triggers setCursor on the second call and gets the result expected.
So it is suggested to add QQuickWindow::invalidateCursorItem that clears cursorItem of QQuickWindowPrivate. It results in the next updateCursor call to take effect even if a mouse move event is delivered to the same item.