Commit pending audio changes on Enter in the edit box. Closes #1544.

This commit is contained in:
Thomas Goyne 2012-11-03 15:40:54 -07:00
parent a3201178a9
commit 18a46610ca
2 changed files with 13 additions and 2 deletions

View File

@ -109,6 +109,7 @@ class AudioTimingControllerKaraoke : public AudioTimingController {
bool auto_commit; ///< Should changes be automatically commited? bool auto_commit; ///< Should changes be automatically commited?
int commit_id; ///< Last commit id used for an autocommit 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); void OnAutoCommitChange(agi::OptionValue const& opt);
@ -254,10 +255,11 @@ void AudioTimingControllerKaraoke::DoCommit() {
file_changed_slot.Block(); file_changed_slot.Block();
commit_id = c->ass->Commit(_("karaoke timing"), AssFile::COMMIT_DIAG_TEXT, commit_id, active_line); commit_id = c->ass->Commit(_("karaoke timing"), AssFile::COMMIT_DIAG_TEXT, commit_id, active_line);
file_changed_slot.Unblock(); file_changed_slot.Unblock();
pending_changes = false;
} }
void AudioTimingControllerKaraoke::Commit() { void AudioTimingControllerKaraoke::Commit() {
if (!auto_commit) if (!auto_commit && pending_changes)
DoCommit(); DoCommit();
} }
@ -266,6 +268,7 @@ void AudioTimingControllerKaraoke::Revert() {
cur_syl = 0; cur_syl = 0;
commit_id = -1; commit_id = -1;
pending_changes = false;
start_marker.Move(active_line->Start); start_marker.Move(active_line->Start);
end_marker.Move(active_line->End); end_marker.Move(active_line->End);
@ -405,8 +408,10 @@ void AudioTimingControllerKaraoke::AnnounceChanges(int syl) {
if (auto_commit) if (auto_commit)
DoCommit(); DoCommit();
else else {
pending_changes = true;
commit_id = -1; commit_id = -1;
}
} }
void AudioTimingControllerKaraoke::OnMarkerDrag(std::vector<AudioMarker*> const& m, int new_position, int) { void AudioTimingControllerKaraoke::OnMarkerDrag(std::vector<AudioMarker*> const& m, int new_position, int) {

View File

@ -42,6 +42,8 @@
#include "../ass_dialogue.h" #include "../ass_dialogue.h"
#include "../ass_file.h" #include "../ass_file.h"
#include "../audio_controller.h"
#include "../audio_timing.h"
#include "../include/aegisub/context.h" #include "../include/aegisub/context.h"
#include "../main.h" #include "../main.h"
#include "../frame_main.h" #include "../frame_main.h"
@ -73,6 +75,10 @@ struct grid_line_next_create : public Command {
STR_HELP("Move to the next subtitle line, creating a new one if needed") STR_HELP("Move to the next subtitle line, creating a new one if needed")
void operator()(agi::Context *c) { void operator()(agi::Context *c) {
AudioTimingController *tc = c->audioController->GetTimingController();
if (tc)
tc->Commit();
AssDialogue *cur = c->selectionController->GetActiveLine(); AssDialogue *cur = c->selectionController->GetActiveLine();
c->selectionController->NextLine(); c->selectionController->NextLine();
if (cur == c->selectionController->GetActiveLine()) { if (cur == c->selectionController->GetActiveLine()) {