1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-28 22:12:10 -04:00

feat(popouts): complete initial hover implementation

This commit is contained in:
purian23
2026-06-26 23:33:40 -04:00
parent 06fa21118e
commit 7979fb2b0e
16 changed files with 642 additions and 80 deletions
@@ -394,6 +394,8 @@ Item {
closeCleanupTimer.stop();
isClosing = false;
openedFromOverview = false;
_edgeArmed = false;
_edgeBodyHover = false;
animationsEnabled = false;
@@ -447,6 +449,9 @@ Item {
keyboardActive = false;
spotlightOpen = false;
_edgeRetractGrace.stop();
_edgeArmed = false;
_edgeBodyHover = false;
ModalManager.closeModal(modalHandle);
closeCleanupTimer.start();
}
@@ -489,6 +494,31 @@ Item {
}
}
// Handles hover dismissal grace periods for edge-hover sessions w/cursor
readonly property bool _edgeRetractEnabled: (modalHandle && modalHandle.edgeHoverManaged === true) && spotlightOpen && !isClosing
property bool _edgeBodyHover: false
property bool _edgeArmed: false
Timer {
id: _edgeRetractGrace
interval: 150
repeat: false
onTriggered: {
if (root._edgeRetractEnabled && root._edgeArmed && !root._edgeBodyHover)
root.hide();
}
}
function _onEdgeBodyHoverChanged(over) {
root._edgeBodyHover = over;
if (over) {
root._edgeArmed = true;
_edgeRetractGrace.stop();
} else if (root._edgeRetractEnabled) {
_edgeRetractGrace.restart();
}
}
Connections {
target: spotlightContent?.controller ?? null
function onModeChanged(mode, userInitiated) {
@@ -628,6 +658,13 @@ Item {
width: root.alignedWidth
height: root.contentSurfaceHeight
// Passive tracker for edge-hover dismissal that preserves input events.
HoverHandler {
id: edgeBodyHoverHandler
enabled: root._edgeRetractEnabled
onHoveredChanged: root._onEdgeBodyHoverChanged(hovered)
}
MouseArea {
anchors.fill: parent
enabled: root.spotlightOpen