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:
@@ -24,6 +24,7 @@ Item {
|
||||
readonly property string resolvedConnectedBarSide: impl.item ? (impl.item.resolvedConnectedBarSide ?? "") : ""
|
||||
readonly property bool launcherArcExtenderActive: impl.item ? (impl.item.launcherArcExtenderActive ?? false) : false
|
||||
property bool triggerUsesOverlayLayer: false
|
||||
property bool edgeHoverManaged: false
|
||||
|
||||
signal dialogClosed
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user