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 6c2ccd8639
commit b006bcc8c4
2 changed files with 13 additions and 2 deletions

View File

@ -113,6 +113,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);
@ -258,10 +259,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();
} }
@ -270,6 +272,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);
@ -409,8 +412,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

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