This commit is contained in:
Benjamin Palko 2025-09-04 16:46:04 -04:00
parent 13dc798565
commit 75f1fc1905
2 changed files with 65 additions and 23 deletions

View file

@ -0,0 +1,37 @@
import qs.config
import QtQuick
import Quickshell
import Quickshell.Hyprland
PopupWindow {
id: root
implicitWidth: background.implicitWidth
implicitHeight: background.implicitHeight
color: "transparent"
function open() {
visible = true;
}
function close() {
visible = false;
}
HyprlandFocusGrab {
id: grab
windows: [root]
onCleared: {
root.close();
}
}
Rectangle {
id: background
anchors.centerIn: root
implicitWidth: root.contentItem.children.reduce((prev, child) => Math.max(prev, child.width), 0)
implicitHeight: root.contentItem.children.reduce((prev, child) => prev + child.height, 0)
color: Theme.palette.base200
radius: 8
}
}

View file

@ -1,6 +1,5 @@
pragma ComponentBehavior: Bound pragma ComponentBehavior: Bound
import qs.widgets
import qs.components import qs.components
import qs.config import qs.config
import qs.constants import qs.constants
@ -22,24 +21,28 @@ StyledWindow {
WlrLayershell.layer: WlrLayer.Top WlrLayershell.layer: WlrLayer.Top
WlrLayershell.keyboardFocus: root.visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None WlrLayershell.keyboardFocus: root.visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
HyprlandFocusGrab {
active: Visibility.storybook
windows: [root]
onCleared: {
Visibility.storybook = false;
}
}
StyledWrapperRectangle { StyledWrapperRectangle {
id: rect id: rect
margin: 48 margin: 48
HyprlandFocusGrab { GridLayout {
active: Visibility.storybook id: grid
windows: [root]
onCleared: {
Visibility.storybook = false;
}
}
ColumnLayout { flow: GridLayout.TopToBottom
columns: 2
spacing: 12 rows: 10
StyledText { StyledText {
Layout.columnSpan: grid.columns
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
text: "Components" text: "Components"
font.pixelSize: 24 font.pixelSize: 24
@ -151,7 +154,7 @@ StyledWindow {
ColumnLayout { ColumnLayout {
StyledText { StyledText {
text: "Menu" text: "Popup"
font.pixelSize: 18 font.pixelSize: 18
} }
Button { Button {
@ -159,19 +162,21 @@ StyledWindow {
text: "File" text: "File"
onPressed: menu.visible ? menu.close() : menu.open() onPressed: menu.visible ? menu.close() : menu.open()
StyledMenu { StyledPopup {
id: menu id: menu
y: fileButton.height
StyledMenuItem { anchor.item: fileButton
text: "New..."
} Column {
StyledMenuItem { StyledButton {
text: "Open..." text: "New..."
} }
StyledMenuSeparator {} StyledButton {
StyledMenuItem { text: "Open..."
text: "Close" }
StyledText {
text: "Close"
}
} }
} }
} }