48 lines
1008 B
QML
48 lines
1008 B
QML
import QtQuick
|
|
import ZShell.Config
|
|
import qs.Components
|
|
import qs.Services
|
|
|
|
CustomRect {
|
|
id: root
|
|
|
|
readonly property bool closing: PopupManager.closed
|
|
readonly property var currentPopup: PopupManager.currentPopup
|
|
property bool shouldBeVisible: loader.status === Loader.Ready
|
|
|
|
color: Qt.alpha(Colors.palette.m3shadow, 0.3)
|
|
opacity: shouldBeVisible && !closing ? 1 : 0
|
|
visible: opacity > 0
|
|
|
|
Behavior on opacity {
|
|
Anim {
|
|
}
|
|
}
|
|
|
|
onVisibleChanged: if (!visible)
|
|
PopupManager.currentPopup = null
|
|
|
|
CustomMouseArea {
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
preventStealing: true
|
|
propagateComposedEvents: false
|
|
|
|
onClicked: {
|
|
const insideItemWidth = mouseX < loader.x + loader.item.width && mouseX > loader.x;
|
|
const insideItemHeight = mouseY < loader.y + loader.item.height && mouseY > loader.y;
|
|
if (insideItemHeight && insideItemWidth)
|
|
return;
|
|
|
|
PopupManager.requestClose();
|
|
}
|
|
}
|
|
|
|
Loader {
|
|
id: loader
|
|
|
|
anchors.centerIn: parent
|
|
sourceComponent: root.currentPopup
|
|
}
|
|
}
|