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?
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);
@ -254,10 +255,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();
}
@ -266,6 +268,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);
@ -405,8 +408,10 @@ void AudioTimingControllerKaraoke::AnnounceChanges(int syl) {
if (auto_commit)
DoCommit();
else
else {
pending_changes = true;
commit_id = -1;
}
}
void AudioTimingControllerKaraoke::OnMarkerDrag(std::vector<AudioMarker*> const& m, int new_position, int) {

View File

@ -42,6 +42,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"
@ -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")
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()) {