broulik created this revision. broulik added reviewers: Plasma, mart. Herald added a project: Frameworks. Herald added a subscriber: kde-frameworks-devel. broulik requested review of this revision.
REVISION SUMMARY The item's `visible` property is independent of the window visibility, which can be checked using `Window.visible`. TEST PLAN Needs D17542 <https://phabricator.kde.org/D17542> to fix tooltips Other than that, kickoff, systray, panelcontroller, notification popups, task manager group dialogs, visibility of pager depending on panelcontroller opening, still works. dialogqmltest and dialogstatetest still pass, dialognativetest is broken before and after Notifications no longer get bogus `containsMouse` and properly times out: When you closed notification popup by clicking the X button inside the popup, and the popup shows again later, because we manually set `visible` to `true`, `QQuickMouseArea` enters the following code case ItemVisibleHasChanged: if (acceptHoverEvents() && d->hovered != (isVisible() && isUnderMouse())) { if (!d->hovered) { QPointF cursorPos = QGuiApplicationPrivate::lastCursorPosition; d->lastScenePos = d->window->mapFromGlobal(cursorPos.toPoint()); d->lastPos = mapFromScene(d->lastScenePos); } setHovered(!d->hovered); } `QGuiApplicationPrivate::lastCursorPosition` is only updated when a `plasmashell` window is hovered, which is usually not the case when you just dismissed a notification popup ontop of another application. Hence, the position is incorrect and opening the dialog again causes it to think it's hovered. `isUnderMouse()` basically checks `contains(QGuiApplicationPrivate::lastCursorPosition)`. If we don't mess with visibility, none of this happens. REPOSITORY R242 Plasma Framework (Library) REVISION DETAIL https://phabricator.kde.org/D17543 AFFECTED FILES src/plasmaquick/dialog.cpp To: broulik, #plasma, mart Cc: kde-frameworks-devel, michaelh, ngraham, bruns