From c6f2e949a75d7120236145e1f0eff7acb97d41b1 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Fri, 10 Apr 2026 22:31:18 +0200 Subject: [PATCH] fix: use configured skip setting for dpad/timeline seeking close #751, close #790 --- lib/widgets/video_controls/desktop_video_controls.dart | 7 +++---- lib/widgets/video_controls/video_controls.dart | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/widgets/video_controls/desktop_video_controls.dart b/lib/widgets/video_controls/desktop_video_controls.dart index 7efd00a3..d5078057 100644 --- a/lib/widgets/video_controls/desktop_video_controls.dart +++ b/lib/widgets/video_controls/desktop_video_controls.dart @@ -497,7 +497,7 @@ class DesktopVideoControlsState extends State { // Live TV: epoch-based seeking via onLiveSeek if (_isLive && widget.onLiveSeek != null && widget.currentPositionEpoch != null) { - final stepSeconds = (10.0 * effectiveMultiplier).clamp(1, 300).round(); + final stepSeconds = (widget.seekTimeSmall * effectiveMultiplier).clamp(1, 300).round(); final targetEpoch = widget.currentPositionEpoch! + (isForward ? stepSeconds : -stepSeconds); widget.onLiveSeek!(targetEpoch); widget.onFocusActivity?.call(); @@ -506,9 +506,8 @@ class DesktopVideoControlsState extends State { if (duration.inMilliseconds <= 0) return KeyEventResult.handled; - // Base step: 0.5% of duration, minimum 500ms, maximum 15s - final baseStepMs = (duration.inMilliseconds * 0.005).clamp(500, 15000).toInt(); - final stepMs = (baseStepMs * effectiveMultiplier).clamp(500, 60000).toInt(); + final baseStepMs = widget.seekTimeSmall * 1000; + final stepMs = (baseStepMs * effectiveMultiplier).clamp(500, 120000).toInt(); final step = Duration(milliseconds: stepMs); final newPosition = isForward ? position + step : position - step; diff --git a/lib/widgets/video_controls/video_controls.dart b/lib/widgets/video_controls/video_controls.dart index 880a6951..832c6a4e 100644 --- a/lib/widgets/video_controls/video_controls.dart +++ b/lib/widgets/video_controls/video_controls.dart @@ -1909,6 +1909,10 @@ class _PlexVideoControlsState extends State with WindowListen final isHorizontal = key == LogicalKeyboardKey.arrowLeft || key == LogicalKeyboardKey.arrowRight; if (isHorizontal) { _showControlsWithTimelineFocus(); + if (widget.canControl) { + final forward = key == LogicalKeyboardKey.arrowRight; + unawaited(_seekByTime(forward: forward)); + } } else { _showControlsWithFocus(); }