Philipp Hörist pushed to branch master at gajim / gajim


Commits:
7ea2df37 by mesonium at 2025-11-10T22:15:54+01:00
fix: Sync waveform and seek bar position correctly

- - - - -


1 changed file:

- gajim/gtk/preview/audio.py


Changes:

=====================================
gajim/gtk/preview/audio.py
=====================================
@@ -28,7 +28,7 @@
 log = logging.getLogger("gajim.gtk.preview.audio")
 
 
-SEEK_BAR_PADDING = 11
+SEEK_BAR_PADDING = 12
 
 
 @Gtk.Template.from_string(string=get_ui_string("preview/audio.ui"))
@@ -88,7 +88,6 @@ def __init__(
         self._offset_backward = -10e9  # in ns
         self._offset_forward = 10e9
         self._cursor_pos = 0.0
-        self._user_drags_position_slider = False
         self._user_holds_position_slider = False
         self._seek_ts = -1  # in ns, -1 means invalid
         self._new_voice_message_track = False
@@ -317,7 +316,7 @@ def _on_timestamp_label_clicked(
         return Gdk.EVENT_STOP
 
     def _convert_position_to_timestamp(self, position_px: float) -> float:
-        position_max = self._seek_bar.get_width() + SEEK_BAR_PADDING
+        position_max = self._seek_bar.get_width()
         position_px = max(0.0, position_px)
         position_px = min(position_px, position_max)
         timestamp = position_px / position_max * self._preview_state.duration
@@ -327,42 +326,31 @@ def _on_seek_bar_button_pressed(
         self,
         _gesture_click: Gtk.GestureClick,
         _n_press: int,
-        x: float,
+        _x: float,
         _y: float,
     ) -> int:
-        assert app.audio_player is not None
-        assert self._cursor_pos is not None
         self._user_holds_position_slider = True
-
-        new_pos = self._convert_position_to_timestamp(x)
-        if app.audio_player.preview_id != self.id:
-            self._preview_state.position = new_pos
-        else:
-            app.audio_player.set_playback_position(self._id, new_pos)
-
-        self._update_ui_from_state()
-
         return Gdk.EVENT_STOP
 
     def _on_seek_bar_button_released(
         self,
         _gesture_click: Gtk.GestureClick,
         _n_press: int,
-        x: float,
+        _x: float,
         _y: float,
     ) -> int:
         assert app.audio_player is not None
-        new_pos = self._convert_position_to_timestamp(x)
+
+        seek_ts = self._convert_position_to_timestamp(self._cursor_pos)
         if app.audio_player.preview_id != self.id:
-            self._preview_state.position = new_pos
+            self._preview_state.position = seek_ts
         else:
-            app.audio_player.set_playback_position(self._id, new_pos)
+            app.audio_player.set_playback_position(self._id, seek_ts)
 
         self._update_ui_from_state()
 
         self._seek_ts = -1
         self._user_holds_position_slider = False
-        self._user_drags_position_slider = False
 
         return Gdk.EVENT_STOP
 
@@ -377,10 +365,10 @@ def _on_seek_bar_cursor_move(
             return
 
         if self._is_ltr:
-            pos_x = x + SEEK_BAR_PADDING
+            pos_x = x
         else:
             width = self._seek_bar.get_width()
-            pos_x = width - (x + SEEK_BAR_PADDING)
+            pos_x = width - x
 
         if abs(pos_x - self._cursor_pos) < 1e-2:
             return



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/7ea2df3792abd821e2f8ad9fc7197d06c68ab8b9

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/7ea2df3792abd821e2f8ad9fc7197d06c68ab8b9
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to