[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