vlc | branch: master | Fatih Uzunoglu <[email protected]> | Fri Mar 19 
00:00:00 2021 +0300| [046eab9c5784f3429d3c816af52f23c8400f1d2c] | committer: 
Pierre Lamot

qml: use binding to calculate minimum width of ButtonsLayout

This patch fixes the issue of wrongly positioned controls that happened in two 
or more conditions:
1) Interface scale factor is changed
2) ButtonsLayout model is changed (ToolbarEditor is used to change the player 
controlbar configuration)

Signed-off-by: Pierre Lamot <[email protected]>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=046eab9c5784f3429d3c816af52f23c8400f1d2c
---

 modules/gui/qt/player/qml/ButtonsLayout.qml | 28 ++++++++++++++++------------
 1 file changed, 16 insertions(+), 12 deletions(-)

diff --git a/modules/gui/qt/player/qml/ButtonsLayout.qml 
b/modules/gui/qt/player/qml/ButtonsLayout.qml
index a7b5f0fd9b..c6e5f8408f 100644
--- a/modules/gui/qt/player/qml/ButtonsLayout.qml
+++ b/modules/gui/qt/player/qml/ButtonsLayout.qml
@@ -30,8 +30,22 @@ Widgets.NavigableFocusScope {
 
     property alias model: buttonsRepeater.model
 
-    property real _minimumWidth: 0 // minimumWidth without spacing 
(minimumWidth of all controls inside)
-    property real minimumWidth: _minimumWidth + ((buttonsRepeater.count - 1) * 
buttonrow.spacing) // minimumWidth with spacing
+    readonly property real minimumWidth: {
+        var minimumWidth = 0
+
+        for (var i = 0; i < buttonsRepeater.count; ++i) {
+            var item = buttonsRepeater.itemAt(i).item
+
+            if (item.minimumWidth !== undefined)
+                minimumWidth += item.minimumWidth
+            else
+                minimumWidth += item.width
+        }
+
+        minimumWidth += ((buttonsRepeater.count - 1) * buttonrow.spacing)
+
+        return minimumWidth
+    }
     property real extraWidth: undefined
     property int expandableCount: 0 // widget count that can expand when extra 
width is available
 
@@ -64,11 +78,6 @@ Widgets.NavigableFocusScope {
 
                 if (item.item.extraWidth !== undefined)
                     buttonsLayout.expandableCount--
-
-                if (item.item.minimumWidth !== undefined)
-                    buttonsLayout._minimumWidth -= item.item.minimumWidth
-                else
-                    buttonsLayout._minimumWidth -= item.item.width
             }
 
             delegate: Loader {
@@ -110,11 +119,6 @@ Widgets.NavigableFocusScope {
                     if (buttonloader.item.navigationLeft !== undefined)
                         buttonloader.item.navigationLeft = 
buttonsLayout.navigationLeft
 
-                    if (buttonloader.item.minimumWidth !== undefined)
-                        buttonsLayout._minimumWidth += 
buttonloader.item.minimumWidth
-                    else
-                        buttonsLayout._minimumWidth += buttonloader.item.width
-
                     if (buttonloader.item.extraWidth !== undefined && 
buttonsLayout.extraWidth !== undefined) {
                         buttonsLayout.expandableCount++
                         buttonloader.item.extraWidth = Qt.binding( function() {

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to