mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 09:57:34 +00:00
VideoPlayer: Pause while the user is dragging the seek bar
This commit is contained in:
parent
d9a73bbc96
commit
9e61e48b31
2 changed files with 17 additions and 3 deletions
|
@ -37,6 +37,18 @@ ErrorOr<void> VideoPlayerWidget::setup_interface()
|
||||||
m_video_display->on_click = [&]() { toggle_pause(); };
|
m_video_display->on_click = [&]() { toggle_pause(); };
|
||||||
|
|
||||||
m_seek_slider = find_descendant_of_type_named<GUI::HorizontalSlider>("seek_slider");
|
m_seek_slider = find_descendant_of_type_named<GUI::HorizontalSlider>("seek_slider");
|
||||||
|
m_seek_slider->on_drag_start = [&]() {
|
||||||
|
if (!m_playback_manager)
|
||||||
|
return;
|
||||||
|
m_was_playing_before_seek = m_playback_manager->is_playing();
|
||||||
|
m_playback_manager->pause_playback();
|
||||||
|
};
|
||||||
|
m_seek_slider->on_drag_end = [&]() {
|
||||||
|
if (!m_playback_manager || !m_was_playing_before_seek)
|
||||||
|
return;
|
||||||
|
m_was_playing_before_seek = false;
|
||||||
|
m_playback_manager->resume_playback();
|
||||||
|
};
|
||||||
m_seek_slider->on_change = [&](int value) {
|
m_seek_slider->on_change = [&](int value) {
|
||||||
if (!m_playback_manager)
|
if (!m_playback_manager)
|
||||||
return;
|
return;
|
||||||
|
@ -103,7 +115,7 @@ void VideoPlayerWidget::update_play_pause_icon()
|
||||||
|
|
||||||
m_play_pause_action->set_enabled(true);
|
m_play_pause_action->set_enabled(true);
|
||||||
|
|
||||||
if (m_playback_manager->is_playing()) {
|
if (m_playback_manager->is_playing() || m_was_playing_before_seek) {
|
||||||
m_play_pause_action->set_icon(m_pause_icon);
|
m_play_pause_action->set_icon(m_pause_icon);
|
||||||
m_play_pause_action->set_text("Pause"sv);
|
m_play_pause_action->set_text("Pause"sv);
|
||||||
} else {
|
} else {
|
||||||
|
@ -114,7 +126,7 @@ void VideoPlayerWidget::update_play_pause_icon()
|
||||||
|
|
||||||
void VideoPlayerWidget::resume_playback()
|
void VideoPlayerWidget::resume_playback()
|
||||||
{
|
{
|
||||||
if (!m_playback_manager)
|
if (!m_playback_manager || m_seek_slider->knob_dragging())
|
||||||
return;
|
return;
|
||||||
m_playback_manager->resume_playback();
|
m_playback_manager->resume_playback();
|
||||||
update_play_pause_icon();
|
update_play_pause_icon();
|
||||||
|
@ -122,7 +134,7 @@ void VideoPlayerWidget::resume_playback()
|
||||||
|
|
||||||
void VideoPlayerWidget::pause_playback()
|
void VideoPlayerWidget::pause_playback()
|
||||||
{
|
{
|
||||||
if (!m_playback_manager)
|
if (!m_playback_manager || m_seek_slider->knob_dragging())
|
||||||
return;
|
return;
|
||||||
m_playback_manager->pause_playback();
|
m_playback_manager->pause_playback();
|
||||||
update_play_pause_icon();
|
update_play_pause_icon();
|
||||||
|
|
|
@ -68,6 +68,8 @@ private:
|
||||||
RefPtr<GUI::Action> m_use_fast_seeking;
|
RefPtr<GUI::Action> m_use_fast_seeking;
|
||||||
|
|
||||||
OwnPtr<Video::PlaybackManager> m_playback_manager;
|
OwnPtr<Video::PlaybackManager> m_playback_manager;
|
||||||
|
|
||||||
|
bool m_was_playing_before_seek { false };
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue