1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-08 22:48:28 -04:00

system tray: fix overflow of menus

port 1.5

(cherry picked from commit fb2dbced08)
This commit is contained in:
bbedward
2026-07-15 14:19:49 -04:00
committed by dms-ci[bot]
parent 815820aa27
commit db9fb0bd90
@@ -1752,7 +1752,11 @@ BasePill {
id: trayMenuContainer id: trayMenuContainer
readonly property real rawWidth: Math.min(500, Math.max(250, menuColumn.implicitWidth + Theme.spacingS * 2)) readonly property real rawWidth: Math.min(500, Math.max(250, menuColumn.implicitWidth + Theme.spacingS * 2))
readonly property real rawHeight: Math.max(40, menuColumn.implicitHeight + Theme.spacingS * 2) readonly property real rawHeight: {
const desiredHeight = Math.max(40, menuColumn.implicitHeight + Theme.spacingS * 2);
const maxHeight = Math.max(40, menuWindow.maskHeight - 20);
return Math.min(desiredHeight, maxHeight);
}
readonly property real alignedWidth: Theme.px(rawWidth, menuWindow.dpr) readonly property real alignedWidth: Theme.px(rawWidth, menuWindow.dpr)
readonly property real alignedHeight: Theme.px(rawHeight, menuWindow.dpr) readonly property real alignedHeight: Theme.px(rawHeight, menuWindow.dpr)
@@ -1852,13 +1856,19 @@ BasePill {
} }
} }
DankFlickable {
id: menuFlickable
anchors.fill: parent
anchors.margins: Theme.spacingS
contentWidth: width
contentHeight: menuColumn.implicitHeight
clip: true
interactive: contentHeight > height
Column { Column {
id: menuColumn id: menuColumn
width: parent.width - Theme.spacingS * 2 width: menuFlickable.width
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: Theme.spacingS
spacing: 1 spacing: 1
Rectangle { Rectangle {
@@ -1881,7 +1891,7 @@ BasePill {
font.pixelSize: Theme.fontSizeSmall font.pixelSize: Theme.fontSizeSmall
color: Theme.surfaceTextMedium color: Theme.surfaceTextMedium
elide: Text.ElideMiddle elide: Text.ElideMiddle
width: parent.width - Theme.spacingS * 2 - 24 width: parent.width - Theme.spacingS * 2 - (Theme.iconSizeSmall + Theme.spacingS)
} }
DankIcon { DankIcon {
@@ -1893,7 +1903,7 @@ BasePill {
return "push_pin"; return "push_pin";
return root.isManualHiddenTrayItem(menuRoot.trayItem) ? "visibility" : "visibility_off"; return root.isManualHiddenTrayItem(menuRoot.trayItem) ? "visibility" : "visibility_off";
} }
size: 16 size: Theme.iconSizeSmall
color: Theme.widgetTextColor color: Theme.widgetTextColor
} }
@@ -1940,7 +1950,7 @@ BasePill {
DankIcon { DankIcon {
name: "arrow_back" name: "arrow_back"
size: 16 size: Theme.iconSizeSmall
color: Theme.widgetTextColor color: Theme.widgetTextColor
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
} }
@@ -2018,11 +2028,11 @@ BasePill {
visible: !menuEntry?.isSeparator visible: !menuEntry?.isSeparator
Rectangle { Rectangle {
width: 16 width: Theme.iconSizeSmall
height: 16 height: Theme.iconSizeSmall
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
visible: menuEntry?.buttonType !== undefined && menuEntry.buttonType !== 0 visible: menuEntry?.buttonType !== undefined && menuEntry.buttonType !== 0
radius: menuEntry?.buttonType === 2 ? 8 : 2 radius: menuEntry?.buttonType === 2 ? width / 2 : 2
border.width: 1 border.width: 1
border.color: Theme.outline border.color: Theme.outline
color: "transparent" color: "transparent"
@@ -2039,23 +2049,23 @@ BasePill {
DankIcon { DankIcon {
anchors.centerIn: parent anchors.centerIn: parent
name: "check" name: "check"
size: 10 size: Theme.iconSizeSmall - 6
color: Theme.primaryText color: Theme.primaryText
visible: menuEntry?.buttonType === 1 && menuEntry?.checkState === 2 visible: menuEntry?.buttonType === 1 && menuEntry?.checkState === 2
} }
} }
Item { Item {
width: 16 width: Theme.iconSizeSmall
height: 16 height: Theme.iconSizeSmall
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
visible: (menuEntry?.icon ?? "") !== "" visible: (menuEntry?.icon ?? "") !== ""
Image { Image {
anchors.fill: parent anchors.fill: parent
source: menuEntry?.icon || "" source: menuEntry?.icon || ""
sourceSize.width: 16 sourceSize.width: Theme.iconSizeSmall
sourceSize.height: 16 sourceSize.height: Theme.iconSizeSmall
fillMode: Image.PreserveAspectFit fillMode: Image.PreserveAspectFit
smooth: true smooth: true
} }
@@ -2072,14 +2082,14 @@ BasePill {
} }
Item { Item {
width: 16 width: Theme.iconSizeSmall
height: 16 height: Theme.iconSizeSmall
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
DankIcon { DankIcon {
anchors.centerIn: parent anchors.centerIn: parent
name: "chevron_right" name: "chevron_right"
size: 14 size: Theme.iconSizeSmall - 2
color: Theme.widgetTextColor color: Theme.widgetTextColor
visible: menuEntry?.hasChildren ?? false visible: menuEntry?.hasChildren ?? false
} }
@@ -2092,6 +2102,7 @@ BasePill {
} }
} }
} }
}
function showForTrayItem(item, anchor, screen, atBottom, vertical, axisObj) { function showForTrayItem(item, anchor, screen, atBottom, vertical, axisObj) {
if (!screen) if (!screen)