qgm-sddm/components/common/PopupPanel.qml

55 lines
1.4 KiB
QML
Raw Normal View History

2026-01-22 13:37:02 +01:00
import QtQuick 2.15
import QtQuick.Layouts 1.15
import QtQuick.Controls 2.15
Popup {
id: menu
y: -(height + root.font.pointSize / 2)
property var model
property var delegate
property alias interactive: flickable.interactive
property real delegateHeight: fontSize * 3
// maximum number of options to show at once, scroll/flick to see the rest
// adding .5 works as a visual hint there's more options by displaying half of the next button
property real max_size: 5.5
padding: 0
topPadding: background.radius
bottomPadding: background.radius
background: Rectangle {
color: root.palette.button
radius: 8
}
contentItem: Flickable {
id: flickable
clip: true
implicitWidth: contentWidth
implicitHeight: interactive ? Math.min(contentHeight, menu.max_size * (menu.delegateHeight + delegate_container.spacing)) : contentHeight
contentWidth: delegate_container.width
contentHeight: delegate_container.height
flickableDirection: Flickable.VerticalFlick
ScrollBar.vertical: ScrollBar { }
ColumnLayout {
id: delegate_container
spacing: 4
Repeater {
model: menu.model
}
}
}
enter: Transition {
NumberAnimation { property: "height"; from: 0.0; to: implicitHeight; duration: 50 * root.animationsEnabled }
}
exit: Transition {
NumberAnimation { property: "height"; from: implicitHeight; to: 0.0; duration: 50 * root.animationsEnabled }
}
}