diff options
| author | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
|---|---|---|
| committer | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
| commit | 5d94c0a7d44a2255b81815a52a7056a94a39842d (patch) | |
| tree | 759bdea9645c6a62f9e1e4c001f7d81cccd120d2 /raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml | |
| parent | e79cdf210b267f21a186255ce1a4d50029439d54 (diff) | |
| download | RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.tar.gz RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.zip | |
update Raveos themes
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml')
| -rw-r--r-- | raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml new file mode 100644 index 0000000..acd24b9 --- /dev/null +++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml @@ -0,0 +1,83 @@ +import QtQuick +import qs.Common +import qs.Widgets + +DankPopout { + id: root + + layerNamespace: "dms:plugins:" + layerNamespacePlugin + + property var triggerScreen: null + property Component pluginContent: null + property real contentWidth: 400 + property real contentHeight: 0 + + popupWidth: contentWidth + popupHeight: contentHeight + screen: triggerScreen + shouldBeVisible: false + + onBackgroundClicked: close() + + content: Component { + Rectangle { + id: popoutContainer + + implicitHeight: popoutColumn.implicitHeight + Theme.spacingL * 2 + color: "transparent" + focus: true + + Component.onCompleted: { + if (root.shouldBeVisible) { + forceActiveFocus(); + } + } + + Keys.onPressed: event => { + if (event.key === Qt.Key_Escape) { + root.close(); + event.accepted = true; + } + } + + Connections { + target: root + function onShouldBeVisibleChanged() { + if (root.shouldBeVisible) { + Qt.callLater(() => { + popoutContainer.forceActiveFocus(); + }); + } + } + } + + Column { + id: popoutColumn + width: parent.width - Theme.spacingS * 2 + x: Theme.spacingS + y: Theme.spacingS + spacing: Theme.spacingS + + Loader { + id: popoutContentLoader + width: parent.width + sourceComponent: root.pluginContent + + onLoaded: { + if (item && "closePopout" in item) { + item.closePopout = function () { + root.close(); + }; + } + if (item && "parentPopout" in item) { + item.parentPopout = root; + } + if (item) { + root.contentHeight = Qt.binding(() => item.implicitHeight + Theme.spacingS * 2); + } + } + } + } + } + } +} |