From ed67b6cc6d8e7a74e1a2e825145e315975e2e798 Mon Sep 17 00:00:00 2001 From: Rodrigo Braz Monteiro Date: Sun, 19 Feb 2006 03:33:13 +0000 Subject: [PATCH] Changed behavior of commiting time Originally committed to SVN as r71. --- core/hilimod_textctrl.h | 1 + core/subs_edit_box.cpp | 21 +++++++++++++++------ core/subs_edit_box.h | 2 +- core/timeedit_ctrl.cpp | 7 ++++--- core/timeedit_ctrl.h | 1 + 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/core/hilimod_textctrl.h b/core/hilimod_textctrl.h index 7d3f516c0..d69b35c22 100644 --- a/core/hilimod_textctrl.h +++ b/core/hilimod_textctrl.h @@ -59,6 +59,7 @@ public: void Modified(); void Commited(); void SetValue(const wxString& value); + bool HasBeenModified() { return isModified; } }; diff --git a/core/subs_edit_box.cpp b/core/subs_edit_box.cpp index 839f1ebbc..ee3ccb4fd 100644 --- a/core/subs_edit_box.cpp +++ b/core/subs_edit_box.cpp @@ -646,10 +646,10 @@ void SubsEditBox::OnLayerChange(wxCommandEvent &event) { // Start time changed void SubsEditBox::OnStartTimeChange(wxCommandEvent &event) { if (StartTime->time > EndTime->time) StartTime->SetTime(EndTime->time.GetMS()); - bool join = Options.AsBool(_T("Link Time Boxes Commit")); + bool join = Options.AsBool(_T("Link Time Boxes Commit")) && EndTime->HasBeenModified(); StartTime->Update(); if (join) EndTime->Update(); - CommitTimes(true,join); + CommitTimes(true,join,true); } @@ -657,10 +657,10 @@ void SubsEditBox::OnStartTimeChange(wxCommandEvent &event) { // End time changed void SubsEditBox::OnEndTimeChange(wxCommandEvent &event) { if (StartTime->time > EndTime->time) EndTime->SetTime(StartTime->time.GetMS()); - bool join = Options.AsBool(_T("Link Time Boxes Commit")); + bool join = Options.AsBool(_T("Link Time Boxes Commit")) && StartTime->HasBeenModified(); EndTime->Update(); if (join) StartTime->Update(); - CommitTimes(join,true); + CommitTimes(join,true,false); } @@ -669,13 +669,13 @@ void SubsEditBox::OnEndTimeChange(wxCommandEvent &event) { void SubsEditBox::OnDurationChange(wxCommandEvent &event) { EndTime->SetTime(StartTime->time.GetMS() + Duration->time.GetMS()); Duration->Update(); - CommitTimes(false,true); + CommitTimes(false,true,true); } /////////////////////// // Commit time changes -void SubsEditBox::CommitTimes(bool start,bool end) { +void SubsEditBox::CommitTimes(bool start,bool end,bool fromStart) { // Get selection if (!start && !end) return; grid->BeginBatch(); @@ -689,8 +689,17 @@ void SubsEditBox::CommitTimes(bool start,bool end) { for (int i=0;iGetDialogue(sel[i]); if (cur) { + // Set times if (start) cur->Start = StartTime->time; if (end) cur->End = EndTime->time; + + // Ensure that they have positive length + if (cur->Start > cur->End) { + if (fromStart) cur->End = cur->Start; + else cur->Start = cur->End; + } + + // Update cur->UpdateData(); grid->SetRowToLine(sel[i],cur); } diff --git a/core/subs_edit_box.h b/core/subs_edit_box.h index 296653108..a950bae98 100644 --- a/core/subs_edit_box.h +++ b/core/subs_edit_box.h @@ -102,7 +102,7 @@ private: wxButton *Color4; void SetControlsState(bool state); - void CommitTimes(bool start,bool end); + void CommitTimes(bool start,bool end,bool fromStart); int BlockAtPos(int pos); diff --git a/core/timeedit_ctrl.cpp b/core/timeedit_ctrl.cpp index 6197ddecd..056832c38 100644 --- a/core/timeedit_ctrl.cpp +++ b/core/timeedit_ctrl.cpp @@ -79,9 +79,10 @@ void TimeEdit::OnModified(wxCommandEvent &event) { // Colour if (showModified && !modified) { - modified = true; SetBackgroundColour(Options.AsColour(_T("Edit Box Need Enter Background"))); } + modified = true; + wxLogMessage(_T("Time modified!")); // Done ready = true; @@ -154,11 +155,11 @@ void TimeEdit::Update() { } // Update modified status - if (modified) { + if (modified && showModified) { SetBackgroundColour(wxNullColour); Refresh(); - modified = false; } + modified = false; } diff --git a/core/timeedit_ctrl.h b/core/timeedit_ctrl.h index f1c024165..83555e031 100644 --- a/core/timeedit_ctrl.h +++ b/core/timeedit_ctrl.h @@ -65,6 +65,7 @@ public: void SetByFrame(bool enable); void SetTime(int ms); void Update(); + bool HasBeenModified() { return modified; } DECLARE_EVENT_TABLE() };