diff --git a/electrum/gui/qml/components/WalletMainView.qml b/electrum/gui/qml/components/WalletMainView.qml index c991b7619..efd0464c8 100644 --- a/electrum/gui/qml/components/WalletMainView.qml +++ b/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 { diff --git a/electrum/gui/qml/components/main.qml b/electrum/gui/qml/components/main.qml index 5a6c14a7c..0df1fec3e 100644 --- a/electrum/gui/qml/components/main.qml +++ b/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() {