[vlc-commits] [Git][videolan/vlc][master] 2 commits: qml: add tooltip to Playback slider

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Sat Feb 18 17:13:30 UTC 2023



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
e62cfa2b by Prince Gupta at 2023-02-18T16:57:03+00:00
qml: add tooltip to Playback slider

- - - - -
999c545e by Prince Gupta at 2023-02-18T16:57:03+00:00
qml: reduce playback slider width

- - - - -


1 changed file:

- modules/gui/qt/player/qml/PlaybackSpeed.qml


Changes:

=====================================
modules/gui/qt/player/qml/PlaybackSpeed.qml
=====================================
@@ -114,11 +114,15 @@ ColumnLayout {
             slider.value = Math.min(value, slider.to)
     }
 
+    function sliderToSpeed(value) {
+        return Math.pow(2, value / 17)
+    }
+
     function _applyPlayer(value) {
         if (_update === false)
             return
 
-        value = Math.pow(2, value / 17)
+        value = sliderToSpeed(value)
 
         if (_shiftPressed === false) {
             for (var i = 0; i < _values.length; i++) {
@@ -280,15 +284,52 @@ ColumnLayout {
         }
 
         handle: Rectangle {
-            width: slider.implicitHeight
-            height: slider.implicitHeight
+            width: VLCStyle.icon_small
+            height: width
+            radius: width * .5
 
             x: slider.leftPadding + slider.visualPosition * (slider.availableWidth - width)
             y: slider.topPadding + slider.availableHeight / 2 - height / 2
 
-            radius: slider.implicitHeight
-
             color: root._color
+
+        }
+
+        MouseArea {
+            id: toolTipTracker
+
+            anchors.fill: parent
+
+            acceptedButtons: Qt.NoButton
+
+            hoverEnabled: true
+
+            onPressed: {
+                mouse.accepted = false
+            }
+
+            preventStealing: true
+
+            propagateComposedEvents: true
+        }
+
+        Widgets.PointingTooltip {
+           z: 1 // without this tooltips get placed below root's parent popup
+
+           property real _mouseX: toolTipTracker.mouseX
+
+           pos: Qt.point(_mouseX, slider.handle.width / 2)
+
+           visible: !slider.pressed && toolTipTracker.containsMouse
+
+           text: {
+               if (!visible) return ""
+
+               var v = slider.valueAt(slider.positionAt(_mouseX))
+               return sliderToSpeed(v).toFixed(2)
+           }
+
+           colors: root.colors
         }
 
         MouseArea {
@@ -302,6 +343,13 @@ ColumnLayout {
                 root._shiftPressed = (mouse.modifiers === Qt.ShiftModifier)
             }
         }
+
+        function positionAt(x) {
+            // find postion under x, taken from qt sources QQuickSlider.cpp
+            var contentX = x - slider.leftPadding - slider.handle.width / 2
+            var extend = slider.availableWidth - slider.handle.width
+            return x / extend
+        }
     }
 
     Item {



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/98a5b3ba8471231107e48253186543073062b197...999c545e1b0aedc7491c8d2510b7bfb74272f6e0

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/98a5b3ba8471231107e48253186543073062b197...999c545e1b0aedc7491c8d2510b7bfb74272f6e0
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list