mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
89 lines
1.9 KiB
QML
89 lines
1.9 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import Quickshell
|
|
import qs.Common
|
|
import qs.Modals.Spotlight
|
|
|
|
Popup {
|
|
id: root
|
|
|
|
property var appLauncher: null
|
|
property var parentHandler: null
|
|
property var searchField: null
|
|
|
|
function show(x, y, app, fromKeyboard) {
|
|
fromKeyboard = fromKeyboard || false;
|
|
menuContent.currentApp = app;
|
|
|
|
root.x = x + 4;
|
|
root.y = y + 4;
|
|
|
|
menuContent.selectedMenuIndex = fromKeyboard ? 0 : -1;
|
|
menuContent.keyboardNavigation = true;
|
|
|
|
if (parentHandler) {
|
|
parentHandler.enabled = false;
|
|
}
|
|
|
|
open();
|
|
}
|
|
|
|
onOpened: {
|
|
Qt.callLater(() => {
|
|
menuContent.keyboardHandler.forceActiveFocus();
|
|
});
|
|
}
|
|
|
|
function hide() {
|
|
if (parentHandler) {
|
|
parentHandler.enabled = true;
|
|
}
|
|
close();
|
|
}
|
|
|
|
width: menuContent.implicitWidth
|
|
height: menuContent.implicitHeight
|
|
padding: 0
|
|
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutside
|
|
modal: true
|
|
dim: false
|
|
background: Item {}
|
|
|
|
onClosed: {
|
|
if (parentHandler) {
|
|
parentHandler.enabled = true;
|
|
}
|
|
if (searchField) {
|
|
Qt.callLater(() => {
|
|
searchField.forceActiveFocus();
|
|
});
|
|
}
|
|
}
|
|
|
|
enter: Transition {
|
|
NumberAnimation {
|
|
property: "opacity"
|
|
from: 0
|
|
to: 1
|
|
duration: Theme.shortDuration
|
|
easing.type: Theme.emphasizedEasing
|
|
}
|
|
}
|
|
|
|
exit: Transition {
|
|
NumberAnimation {
|
|
property: "opacity"
|
|
from: 1
|
|
to: 0
|
|
duration: Theme.shortDuration
|
|
easing.type: Theme.emphasizedEasing
|
|
}
|
|
}
|
|
|
|
contentItem: SpotlightContextMenuContent {
|
|
id: menuContent
|
|
appLauncher: root.appLauncher
|
|
onHideRequested: root.hide()
|
|
}
|
|
}
|