diff --git a/aegisub/src/initial_line_state.cpp b/aegisub/src/initial_line_state.cpp index e8837b847..b7c0425b4 100644 --- a/aegisub/src/initial_line_state.cpp +++ b/aegisub/src/initial_line_state.cpp @@ -27,10 +27,15 @@ InitialLineState::InitialLineState(agi::Context *c) } void InitialLineState::OnActiveLineChanged(AssDialogue *new_line) { - if (new_line) + if (new_line) { + if (new_line->Id == line_id) return; + line_id = new_line->Id; initial_text = new_line->Text; - else + } + else { + line_id = 0; initial_text.clear(); + } InitialStateChanged(initial_text); } diff --git a/aegisub/src/initial_line_state.h b/aegisub/src/initial_line_state.h index 1bfa6ea3c..1230bab0a 100644 --- a/aegisub/src/initial_line_state.h +++ b/aegisub/src/initial_line_state.h @@ -24,6 +24,7 @@ class AssDialogue; class InitialLineState { agi::signal::Connection active_line_connection; wxString initial_text; + int line_id; agi::signal::Signal InitialStateChanged; void OnActiveLineChanged(AssDialogue *new_line);