Browse Source

qml: resize menus according to content

master
Sander van Grieken 2 years ago
parent
commit
f8eb2e8cf8
  1. 22
      electrum/gui/qml/components/WalletMainView.qml
  2. 24
      electrum/gui/qml/components/main.qml

22
electrum/gui/qml/components/WalletMainView.qml

@ -139,7 +139,8 @@ Item {
color: "#44000000"
}
width: parent.width / 2
property int implicitChildrenWidth: 64
width: implicitChildrenWidth + 60 + constants.paddingLarge
MenuItem {
icon.color: action.enabled ? 'transparent' : Material.iconDisabledColor
@ -204,6 +205,25 @@ Item {
function deselect() {
currentIndex = -1
}
// determine widest element and store in implicitChildrenWidth
function updateImplicitWidth() {
for (let i = 0; i < menu.count; i++) {
var item = menu.itemAt(i)
var txt = item.text
var txtwidth = fontMetrics.advanceWidth(txt)
if (txtwidth > menu.implicitChildrenWidth) {
menu.implicitChildrenWidth = txtwidth
}
}
}
FontMetrics {
id: fontMetrics
font: menu.font
}
Component.onCompleted: updateImplicitWidth()
}
ColumnLayout {

24
electrum/gui/qml/components/main.qml

@ -39,6 +39,8 @@ ApplicationWindow
property var _exceptionDialog
property QtObject appMenu: Menu {
id: menu
parent: Overlay.overlay
dim: true
modal: true
@ -46,7 +48,8 @@ ApplicationWindow
color: "#44000000"
}
id: menu
property int implicitChildrenWidth: 64
width: implicitChildrenWidth + 60 + constants.paddingLarge
MenuItem {
icon.color: action.enabled ? 'transparent' : Material.iconDisabledColor
@ -82,6 +85,25 @@ ApplicationWindow
stack.pushOnRoot(url)
currentIndex = -1
}
// determine widest element and store in implicitChildrenWidth
function updateImplicitWidth() {
for (let i = 0; i < menu.count; i++) {
var item = menu.itemAt(i)
var txt = item.text
var txtwidth = fontMetrics.advanceWidth(txt)
if (txtwidth > menu.implicitChildrenWidth) {
menu.implicitChildrenWidth = txtwidth
}
}
}
FontMetrics {
id: fontMetrics
font: menu.font
}
Component.onCompleted: updateImplicitWidth()
}
function openAppMenu() {

Loading…
Cancel
Save