[vlc-commits] [Git][videolan/vlc][master] 6 commits: qml: use dynamic mutability group for non-static items in `SliderBar`

Steve Lhomme (@robUx4) gitlab at videolan.org
Fri Jul 17 07:24:55 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
2e1338cc by Fatih Uzunoglu at 2026-07-17T06:51:38+00:00
qml: use dynamic mutability group for non-static items in `SliderBar`

- - - - -
39f53ada by Fatih Uzunoglu at 2026-07-17T06:51:38+00:00
qml: use dynamic mutability group for the text in `HighResolutionTimeWidget`

- - - - -
811a4cc5 by Fatih Uzunoglu at 2026-07-17T06:51:38+00:00
qml: use moderate mutability group for progress indicator in `ArtworkInfoWidget`

- - - - -
83194c13 by Fatih Uzunoglu at 2026-07-17T06:51:38+00:00
qml: use moderate mutability group for time texts in `ControlBar`

- - - - -
b9863674 by Fatih Uzunoglu at 2026-07-17T06:51:38+00:00
qml: use moderate mutability group for lyrics label in `Player`

- - - - -
a3cd58a5 by Fatih Uzunoglu at 2026-07-17T06:51:38+00:00
qml: use dynamic mutability group for scrolling text in `TextAutoScroller`

- - - - -


6 changed files:

- modules/gui/qt/player/qml/ControlBar.qml
- modules/gui/qt/player/qml/Player.qml
- modules/gui/qt/player/qml/SliderBar.qml
- modules/gui/qt/player/qml/controlbarcontrols/ArtworkInfoWidget.qml
- modules/gui/qt/player/qml/controlbarcontrols/HighResolutionTimeWidget.qml
- modules/gui/qt/widgets/qml/TextAutoScroller.qml


Changes:

=====================================
modules/gui/qt/player/qml/ControlBar.qml
=====================================
@@ -140,6 +140,15 @@ T.Pane {
                 font: timeTextMetrics.font
                 horizontalAlignment: Text.AlignHCenter
 
+                // TODO: Do not use `Binding` when minimum Qt is 6.12:
+                Binding {
+                    target: mediaTime
+                    property: "mutabilityGroup"
+                    when: (mediaTime.mutabilityGroup !== undefined)
+                    value: (Player.playingState === Player.PLAYING_STATE_PLAYING) ? Item.ModerateMutabilityGroup
+                                                                                  : Item.StaticMutabilityGroup
+                }
+
                 anchors.left: (parent === pseudoRow) ? parent.left : undefined
                 anchors.verticalCenter: (parent === pseudoRow) ? parent.verticalCenter : undefined
             },
@@ -148,7 +157,9 @@ T.Pane {
 
                 Layout.preferredWidth: (textPosition === ControlBar.TimeTextPosition.LeftRightSlider) ? timeTextMetrics.width : -1
 
-                text: (MainCtx.showRemainingTime && Player.remainingTime.valid())
+                readonly property bool showRemainingTime: (MainCtx.showRemainingTime && Player.remainingTime.valid())
+
+                text: showRemainingTime
                       ? "-" + Player.remainingTime.formatHMS()
                       : Player.length.formatHMS()
                 color: mediaTime.color
@@ -157,6 +168,16 @@ T.Pane {
 
                 visible: root.showRemainingTime
 
+                // TODO: Do not use `Binding` when minimum Qt is 6.12:
+                Binding {
+                    target: mediaRemainingTime
+                    property: "mutabilityGroup"
+                    when: (mediaRemainingTime.mutabilityGroup !== undefined)
+                    value: ((Player.playingState === Player.PLAYING_STATE_PLAYING) &&
+                            mediaRemainingTime.showRemainingTime) ? Item.ModerateMutabilityGroup
+                                                                  : Item.StaticMutabilityGroup
+                }
+
                 anchors.right: (parent === pseudoRow) ? parent.right : undefined
                 anchors.verticalCenter: (parent === pseudoRow) ? parent.verticalCenter : undefined
 


=====================================
modules/gui/qt/player/qml/Player.qml
=====================================
@@ -758,6 +758,15 @@ FocusScope {
                             wrapMode: Text.WordWrap
                             color: centerTheme.fg.primary
 
+                            // TODO: Do not use `Binding` when minimum Qt is 6.12:
+                            Binding {
+                                target: lyricsLabel
+                                property: "mutabilityGroup"
+                                when: (lyricsLabel.mutabilityGroup !== undefined)
+                                value: (Player.playingState === Player.PLAYING_STATE_PLAYING) ? Item.ModerateMutabilityGroup
+                                                                                              : Item.StaticMutabilityGroup
+                            }
+
                             TextMetrics {
                                 id: lyricsLabelTextMetrics
                                 font: lyricsLabel.font


=====================================
modules/gui/qt/player/qml/SliderBar.qml
=====================================
@@ -372,6 +372,17 @@ T.ProgressBar {
                         width: sliderRect.width * control.visualPosition - parent.x - control._seekPointsDistance
                         visible: parent._currentChapter === 0
                         color: theme.fg.primary
+
+                        // We use dynamic mutability group because time interpolation
+                        // may induce rapid change:
+                        // TODO: Do not use `Binding` when minimum Qt is 6.12:
+                        Binding {
+                            target: progressRepRect
+                            property: "mutabilityGroup"
+                            when: (progressRepRect.mutabilityGroup !== undefined)
+                            value: (Player.playingState === Player.PLAYING_STATE_PLAYING) ? Item.DynamicMutabilityGroup
+                                                                                          : Item.StaticMutabilityGroup
+                        }
                     }
                 }
 
@@ -424,6 +435,17 @@ T.ProgressBar {
             color: theme.fg.primary
             height: control.barHeight
             radius: control._seekPointsRadius
+
+            // We use dynamic mutability group because time interpolation
+            // may induce rapid change:
+            // TODO: Do not use `Binding` when minimum Qt is 6.12:
+            Binding {
+                target: progressRect
+                property: "mutabilityGroup"
+                when: (progressRect.mutabilityGroup !== undefined)
+                value: (Player.playingState === Player.PLAYING_STATE_PLAYING) ? Item.DynamicMutabilityGroup
+                                                                              : Item.StaticMutabilityGroup
+            }
         }
 
         Rectangle {
@@ -440,6 +462,15 @@ T.ProgressBar {
             color: theme.fg.neutral //FIXME buffer color ?
             radius: control.barHeight
 
+            // TODO: Do not use `Binding` when minimum Qt is 6.12:
+            Binding {
+                target: bufferRect
+                property: "mutabilityGroup"
+                when: bufferRect.mutabilityGroup !== undefined
+                value: bufferRect.buffering ? Item.DynamicMutabilityGroup
+                                            : Item.StaticMutabilityGroup
+            }
+
             Timer {
                 id: bufferingTimer
                 interval: VLCStyle.duration_humanMoment
@@ -548,6 +579,17 @@ T.ProgressBar {
         radius: VLCStyle.margin_small
         color: theme.fg.primary
 
+        // We use dynamic mutability group because time interpolation
+        // may induce rapid change:
+        // TODO: Do not use `Binding` when minimum Qt is 6.12:
+        Binding {
+            target: sliderHandle
+            property: "mutabilityGroup"
+            when: (sliderHandle.mutabilityGroup !== undefined)
+            value: (Player.playingState === Player.PLAYING_STATE_PLAYING) ? Item.DynamicMutabilityGroup
+                                                                          : Item.StaticMutabilityGroup
+        }
+
         transitions: [
             Transition {
                 to: "hidden"


=====================================
modules/gui/qt/player/qml/controlbarcontrols/ArtworkInfoWidget.qml
=====================================
@@ -276,6 +276,15 @@ AbstractButton {
                     }
                 }
                 color: theme.fg.secondary
+
+                // TODO: Do not use `Binding` when minimum Qt is 6.12:
+                Binding {
+                    target: progressIndicator
+                    property: "mutabilityGroup"
+                    when: progressIndicator.mutabilityGroup !== undefined
+                    value: (Player.playingState === Player.PLAYING_STATE_PLAYING) ? Item.ModerateMutabilityGroup
+                                                                                  : Item.StaticMutabilityGroup
+                }
             }
         }
     }


=====================================
modules/gui/qt/player/qml/controlbarcontrols/HighResolutionTimeWidget.qml
=====================================
@@ -94,6 +94,15 @@ Control {
                                                                                                    : null
                 playerController: Player
             }
+
+            // TODO: Do not use `Binding` when minimum Qt is 6.12:
+            Binding {
+                target: label
+                property: "mutabilityGroup"
+                when: label.mutabilityGroup !== undefined
+                value: (Player.playingState === Player.PLAYING_STATE_PLAYING) ? Item.DynamicMutabilityGroup
+                                                                              : Item.StaticMutabilityGroup
+            }
         }
 
         TextMetrics {


=====================================
modules/gui/qt/widgets/qml/TextAutoScroller.qml
=====================================
@@ -44,6 +44,10 @@ Item {
             return root.scrolling ? Text.ElideNone : Text.ElideRight
         })
 
+        if (label.mutabilityGroup !== undefined)
+            label.mutabilityGroup = Qt.binding(function() { return (root.label === label && root.scrolling) ? Item.DynamicMutabilityGroup
+                                                                                                            : Item.AutoMutabilityGroup })
+
         label.Accessible.ignored = true
     }
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/fd4be126d77b6e2560126df84175cad3725ac7fc...a3cd58a5491d880280e3be05555801a8a4d24e3f

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/fd4be126d77b6e2560126df84175cad3725ac7fc...a3cd58a5491d880280e3be05555801a8a4d24e3f
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list