From b006bcc8c40b3f81038b159fc2ee8227d9daefe2 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sat, 3 Nov 2012 15:40:54 -0700 Subject: [PATCH] Commit pending audio changes on Enter in the edit box. Closes #1544. --- aegisub/src/audio_timing_karaoke.cpp | 9 +++++++-- aegisub/src/command/grid.cpp | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/aegisub/src/audio_timing_karaoke.cpp b/aegisub/src/audio_timing_karaoke.cpp index 12ceb031d..0081e21bf 100644 --- a/aegisub/src/audio_timing_karaoke.cpp +++ b/aegisub/src/audio_timing_karaoke.cpp @@ -113,6 +113,7 @@ class AudioTimingControllerKaraoke : public AudioTimingController { bool auto_commit; ///< Should changes be automatically commited? int commit_id; ///< Last commit id used for an autocommit + bool pending_changes; ///< Are there any pending changes to be committed? void OnAutoCommitChange(agi::OptionValue const& opt); @@ -258,10 +259,11 @@ void AudioTimingControllerKaraoke::DoCommit() { file_changed_slot.Block(); commit_id = c->ass->Commit(_("karaoke timing"), AssFile::COMMIT_DIAG_TEXT, commit_id, active_line); file_changed_slot.Unblock(); + pending_changes = false; } void AudioTimingControllerKaraoke::Commit() { - if (!auto_commit) + if (!auto_commit && pending_changes) DoCommit(); } @@ -270,6 +272,7 @@ void AudioTimingControllerKaraoke::Revert() { cur_syl = 0; commit_id = -1; + pending_changes = false; start_marker.Move(active_line->Start); end_marker.Move(active_line->End); @@ -409,8 +412,10 @@ void AudioTimingControllerKaraoke::AnnounceChanges(int syl) { if (auto_commit) DoCommit(); - else + else { + pending_changes = true; commit_id = -1; + } } void AudioTimingControllerKaraoke::OnMarkerDrag(std::vector const& m, int new_position, int) { diff --git a/aegisub/src/command/grid.cpp b/aegisub/src/command/grid.cpp index f77bb377a..83a261bb2 100644 --- a/aegisub/src/command/grid.cpp +++ b/aegisub/src/command/grid.cpp @@ -40,6 +40,8 @@ #include "../ass_dialogue.h" #include "../ass_file.h" +#include "../audio_controller.h" +#include "../audio_timing.h" #include "../include/aegisub/context.h" #include "../main.h" #include "../frame_main.h" @@ -71,6 +73,10 @@ struct grid_line_next_create : public Command { STR_HELP("Move to the next subtitle line, creating a new one if needed") void operator()(agi::Context *c) { + AudioTimingController *tc = c->audioController->GetTimingController(); + if (tc) + tc->Commit(); + AssDialogue *cur = c->selectionController->GetActiveLine(); c->selectionController->NextLine(); if (cur == c->selectionController->GetActiveLine()) {