Don't create binding loop
authorFelix Weilbach <felix.weilbach@nextcloud.com>
Fri, 20 Aug 2021 22:26:48 +0000 (00:26 +0200)
committerFelix Weilbach (Rebase PR Action) <felix.weilbach@t-online.de>
Fri, 3 Sep 2021 11:48:42 +0000 (11:48 +0000)
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
resources.qrc
src/gui/tray/AutoSizingMenu.qml [new file with mode: 0644]
src/gui/tray/Window.qml

index 54c4b5cd98b2b822c14e3513a15b23d172993bbb..9fa393c4efe6d15f79714060e2e8736068f77ac6 100644 (file)
@@ -7,5 +7,6 @@
         <file>theme/Style/qmldir</file>
         <file>src/gui/tray/ActivityActionButton.qml</file>
         <file>src/gui/tray/ActivityItem.qml</file>
+        <file>src/gui/tray/AutoSizingMenu.qml</file>
     </qresource>
 </RCC>
diff --git a/src/gui/tray/AutoSizingMenu.qml b/src/gui/tray/AutoSizingMenu.qml
new file mode 100644 (file)
index 0000000..fe929eb
--- /dev/null
@@ -0,0 +1,15 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.3
+
+Menu {
+    width: {
+        var result = 0;
+        var padding = 0;
+        for (var i = 0; i < count; ++i) {
+            var item = itemAt(i);
+            result = Math.max(item.contentItem.implicitWidth, result);
+            padding = Math.max(item.padding, padding);
+        }
+        return result + padding * 2;
+    }
+}
index 1e0d8436bf1ecb1daef0a946f891ae37f9f5fdfc..ccb4af74e8d04846000e6d58d6fb6d8aafb9ce93 100644 (file)
@@ -508,12 +508,10 @@ Window {
                     Accessible.name: qsTr("More apps")\r
                     Accessible.onPressAction: trayWindowAppsButton.clicked()\r
 \r
-                    Menu {\r
+                    AutoSizingMenu {\r
                         id: appsMenu\r
                         y: (trayWindowAppsButton.y + trayWindowAppsButton.height + 2)\r
                         readonly property Item listContentItem: contentItem.contentItem\r
-                        width: Math.min(listContentItem.childrenRect.width + 4, Style.trayWindowWidth / 2)\r
-                        height: Math.min(implicitHeight, maxMenuHeight)\r
                         closePolicy: Menu.CloseOnPressOutsideParent | Menu.CloseOnEscape\r
 \r
                         background: Rectangle {\r
@@ -531,24 +529,9 @@ Window {
                                 text: appName\r
                                 font.pixelSize: Style.topLinePixelSize\r
                                 icon.source: appIconUrl\r
-                                width: contentItem.implicitWidth + leftPadding + rightPadding\r
                                 onTriggered: UserAppsModel.openAppUrl(appUrl)\r
                                 hoverEnabled: true\r
 \r
-                                background: Item {\r
-                                    width: appsMenu.width\r
-                                    height: parent.height\r
-\r
-                                    Rectangle {\r
-                                        anchors.fill: parent\r
-                                        anchors.margins: 1\r
-                                        color: appEntry.hovered ? Style.lightHover : "transparent"\r
-                                    }\r
-                                    \r
-                                    Accessible.role: Accessible.PopupMenu\r
-                                    Accessible.name: qsTr("Apps menu")\r
-                                }\r
-\r
                                 Accessible.role: Accessible.MenuItem\r
                                 Accessible.name: qsTr("Open %1 in browser").arg(appName)\r
                                 Accessible.onPressAction: appEntry.triggered()\r