57 lines
1.4 KiB
QML
57 lines
1.4 KiB
QML
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import "." as M
|
|
|
|
PanelWindow {
|
|
id: root
|
|
|
|
required property var screen
|
|
|
|
visible: M.FlyoutState.visible
|
|
color: "transparent"
|
|
|
|
WlrLayershell.layer: WlrLayer.Overlay
|
|
WlrLayershell.exclusiveZone: 0
|
|
WlrLayershell.namespace: "nova-flyout"
|
|
|
|
anchors.top: true
|
|
anchors.left: true
|
|
|
|
// Flush below bar, centered on hovered item
|
|
margins.top: 0
|
|
margins.left: Math.max(0, Math.min(
|
|
Math.round(M.FlyoutState.itemX - implicitWidth / 2),
|
|
screen.width - implicitWidth
|
|
))
|
|
|
|
implicitWidth: label.implicitWidth + M.Theme.barPadding * 2
|
|
implicitHeight: label.implicitHeight + M.Theme.barPadding * 2
|
|
|
|
// Background matching bar style
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
color: M.Theme.base00
|
|
opacity: M.Theme.barOpacity
|
|
radius: M.Theme.radius
|
|
|
|
// Cover the top rounded corners so the flyout
|
|
// appears flush / attached to the bar above
|
|
Rectangle {
|
|
anchors.top: parent.top
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
height: parent.radius
|
|
color: M.Theme.base00
|
|
}
|
|
}
|
|
|
|
Text {
|
|
id: label
|
|
anchors.centerIn: parent
|
|
text: M.FlyoutState.text
|
|
color: M.Theme.base05
|
|
font.pixelSize: M.Theme.fontSize
|
|
font.family: M.Theme.fontFamily
|
|
}
|
|
}
|