X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fmainwindow.cpp;h=1ed95c3dc5ab8ed27577510eda88577d6e5efdb5;hb=4d334dafa066cf9af7899a555e1145d1e4dd0b3d;hp=346c6f684446bb179c64ec784c089c019aab9040;hpb=c6fb9649d9f9c2e2cf3d1ac16c6c359630fe72bf;p=nageru diff --git a/futatabi/mainwindow.cpp b/futatabi/mainwindow.cpp index 346c6f6..1ed95c3 100644 --- a/futatabi/mainwindow.cpp +++ b/futatabi/mainwindow.cpp @@ -431,6 +431,14 @@ void MainWindow::defer_timer_expired() void MainWindow::content_changed() { + // If we are playing, update the part of the playlist that's not playing yet. + vector clips; + for (unsigned row = 0; row < playlist_clips->size(); ++row) { + clips.emplace_back(*playlist_clips->clip_with_id(row)); + } + live_player->splice_play(clips); + + // Serialize the state. if (defer_timeout->isActive() && (!currently_deferring_model_changes || deferred_change_id != current_change_id)) { // There's some deferred event waiting, but this event is unrelated. @@ -493,6 +501,7 @@ void MainWindow::play_clicked() } live_player->play(clips); playlist_clips->set_progress({ { start_row, 0.0f } }); + ui->playlist->selectionModel()->clear(); playlist_selection_changed(); ui->stop_btn->setEnabled(true); @@ -509,7 +518,7 @@ void MainWindow::stop_clicked() void MainWindow::live_player_done() { - set_output_status("paused"); + playlist_selection_changed(); playlist_clips->set_progress({}); ui->stop_btn->setEnabled(false); }