diff --git a/aegisub/audio_display.cpp b/aegisub/audio_display.cpp index 9a6fc11c8..54c90e7eb 100644 --- a/aegisub/audio_display.cpp +++ b/aegisub/audio_display.cpp @@ -55,6 +55,7 @@ #include "colorspace.h" #include "hotkeys.h" #include "utils.h" +#include "timeedit_ctrl.h" /////////////// @@ -1021,9 +1022,15 @@ void AudioDisplay::CommitChanges (bool nextLine) { curDiag->Start.SetMS(curStartMS); curDiag->End.SetMS(curEndMS); + curDiag->Text = grid->editBox->TextEdit->GetText(); curDiag->UpdateData(); } + // Update edit box + grid->editBox->StartTime->Update(); + grid->editBox->EndTime->Update(); + grid->editBox->Duration->Update(); + // Update grid grid->editBox->Update(!karaoke->enabled); grid->ass->FlagAsModified(); @@ -1321,7 +1328,8 @@ void AudioDisplay::OnMouseEvent(wxMouseEvent& event) { // Dragging nothing, time from scratch if (!gotGrab) { if (buttonIsDown) { - hold = 3; + if (leftIsDown) hold = 3; + else hold = 2; lastX = x; gotGrab = true; } @@ -1427,7 +1435,13 @@ void AudioDisplay::OnMouseEvent(wxMouseEvent& event) { if (diagUpdated) { diagUpdated = false; NeedCommit = true; - if (Options.AsBool(_T("Audio Autocommit")) && curStartMS <= curEndMS) CommitChanges(); + if (curStartMS <= curEndMS) { + grid->editBox->StartTime->SetTime(curStartMS,true); + grid->editBox->EndTime->SetTime(curEndMS,true); + grid->editBox->Duration->SetTime(curEndMS-curStartMS,true); + if (Options.AsBool(_T("Audio Autocommit"))) CommitChanges(); + } + else UpdateImage(true); } @@ -1451,6 +1465,7 @@ void AudioDisplay::OnMouseEvent(wxMouseEvent& event) { // Update stuff if (updated) { + if (diagUpdated) NeedCommit = true; player->SetEndPosition(GetSampleAtX(selEnd)); wxCursor cursor(wxCURSOR_SIZEWE); SetCursor(cursor); diff --git a/aegisub/changelog.txt b/aegisub/changelog.txt index e5603b325..f6c2c65f1 100644 --- a/aegisub/changelog.txt +++ b/aegisub/changelog.txt @@ -81,6 +81,8 @@ Please visit http://aegisub.net to download latest version - Moved karaoke syllable text in audio display to the top instead of bottom, since it often covers important information in spectrum mode (jfs) - Implemented a version checker that can automatically or manually check if there are any updates to Aegisub. (AMZ) - Added support for reading v4.00++ (ASS2) files. (AMZ) +- Changes to text will no longer be discarded when you commit timing in the audio display and vice-versa. (AMZ) +- Fixed glitches related to the Duration time edit box. (AMZ) = 1.10 beta - 2006.08.07 =========================== diff --git a/aegisub/subs_edit_box.cpp b/aegisub/subs_edit_box.cpp index 1008b88e0..e3056a158 100644 --- a/aegisub/subs_edit_box.cpp +++ b/aegisub/subs_edit_box.cpp @@ -321,6 +321,7 @@ void SubsEditBox::SetToLine(int n) { linen = n; StartTime->Update(); EndTime->Update(); + Duration->Update(); } } @@ -449,6 +450,7 @@ void SubsEditBox::OnFrameRadio(wxCommandEvent &event) { if (ByFrame->GetValue()) { StartTime->SetByFrame(true); EndTime->SetByFrame(true); + Duration->SetByFrame(true); grid->SetByFrame(true); } event.Skip(); @@ -461,6 +463,7 @@ void SubsEditBox::OnTimeRadio(wxCommandEvent &event) { if (ByTime->GetValue()) { StartTime->SetByFrame(false); EndTime->SetByFrame(false); + Duration->SetByFrame(false); grid->SetByFrame(false); } event.Skip(); @@ -509,6 +512,7 @@ void SubsEditBox::SetControlsState (bool state) { TextEdit->SetTextTo(_T("")); StartTime->SetTime(0); EndTime->SetTime(0); + Duration->SetTime(0); Layer->SetValue(_T("")); MarginL->SetValue(_T("")); MarginR->SetValue(_T("")); diff --git a/aegisub/subs_edit_box.h b/aegisub/subs_edit_box.h index bcd08e51c..5c8194c36 100644 --- a/aegisub/subs_edit_box.h +++ b/aegisub/subs_edit_box.h @@ -59,6 +59,7 @@ class wxScintilla; class SubsEditBox : public wxPanel { friend class SubsTextEditHandler; friend class SubsTextEditCtrl; + friend class AudioDisplay; private: bool splitLineMode; diff --git a/aegisub/timeedit_ctrl.cpp b/aegisub/timeedit_ctrl.cpp index 6b1f479cb..d32777dda 100644 --- a/aegisub/timeedit_ctrl.cpp +++ b/aegisub/timeedit_ctrl.cpp @@ -102,9 +102,11 @@ void TimeEdit::Modified() { ///////////////////////////// // Set time and update stuff -void TimeEdit::SetTime(int ms) { +void TimeEdit::SetTime(int ms,bool setModified) { + int oldMs = time.GetMS(); time.SetMS(ms); UpdateText(); + if (setModified && oldMs != ms) Modified(); } diff --git a/aegisub/timeedit_ctrl.h b/aegisub/timeedit_ctrl.h index 4e9ad65f8..abd1c529d 100644 --- a/aegisub/timeedit_ctrl.h +++ b/aegisub/timeedit_ctrl.h @@ -69,7 +69,7 @@ public: TimeEdit(wxWindow* parent, wxWindowID id, const wxString& value = _T(""), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr); void SetByFrame(bool enable); - void SetTime(int ms); + void SetTime(int ms,bool setModified=false); void Update(); bool HasBeenModified() { return modified; }