diff --git a/core/base_grid.cpp b/core/base_grid.cpp index c3609905d..6ea45dddd 100644 --- a/core/base_grid.cpp +++ b/core/base_grid.cpp @@ -750,3 +750,49 @@ bool BaseGrid::IsDisplayed(AssDialogue *line) { if (f1 <= video->frame_n && f2 >= video->frame_n) return true; return false; } + + +/////////////// +// Update maps +void BaseGrid::UpdateMaps() { + // Store old + int len = diagMap.size(); + std::vector tmpDiagPtrMap; + std::vector tmpSelMap; + for (int i=0;iLine.begin();cur != AssFile::top->Line.end();cur++) { + curdiag = AssEntry::GetAsDialogue(*cur); + if (curdiag) { + // Find old pos + bool sel = false; + for (int i=0;i diagMap; + std::vector diagPtrMap; std::vector selMap; void SetColumnWidths(); @@ -99,6 +100,7 @@ public: bool IsInSelection(int row, int col) const; bool IsDisplayed(AssDialogue *line); int GetNumberSelection(); + void UpdateMaps(); int GetRows() const; int GetNumberRows() const { return GetRows(); } diff --git a/core/changelog.txt b/core/changelog.txt index deedb98e5..f7d6514f0 100644 --- a/core/changelog.txt +++ b/core/changelog.txt @@ -37,6 +37,7 @@ Please visit http://aegisub.net to download latest version - Rows colliding with the currently active one will now be highlighted in grid (AMZ) - Selected comments are now highlighted in a different color (AMZ) - Added a volume slider bar to audio mode (AMZ) +- Fixed behavior of deleting and joining lines on subtitles grid (AMZ) = 1.09 beta - 2006.01.16 =========================== diff --git a/core/dialog_shift_times.cpp b/core/dialog_shift_times.cpp index 108f52d96..8244e40ac 100644 --- a/core/dialog_shift_times.cpp +++ b/core/dialog_shift_times.cpp @@ -259,7 +259,8 @@ void DialogShiftTimes::OnOK(wxCommandEvent &event) { Options.Save(); // End dialog - grid->LoadFromAss(NULL,true); + //grid->LoadFromAss(NULL,true); + grid->UpdateMaps(); EndModal(0); } diff --git a/core/subs_grid.cpp b/core/subs_grid.cpp index 6e804eee7..dc42266c8 100644 --- a/core/subs_grid.cpp +++ b/core/subs_grid.cpp @@ -809,6 +809,7 @@ void SubtitlesGrid::LoadDefault (AssFile *_ass) { void SubtitlesGrid::Clear () { //if (GetNumberRows() > 0) DeleteRows(0,GetNumberRows()); diagMap.clear(); + diagPtrMap.clear(); selMap.clear(); yPos = 0; AdjustScrollbar(); @@ -845,8 +846,9 @@ void SubtitlesGrid::LoadFromAss (AssFile *_ass,bool keepSelection,bool dontModif curdiag = AssEntry::GetAsDialogue(*cur); if (curdiag) { //AppendRows(1); - SetRowToLine(n,curdiag); + //SetRowToLine(n,curdiag); diagMap.push_back(cur); + diagPtrMap.push_back(curdiag); selMap.push_back(false); n++; } @@ -866,8 +868,9 @@ void SubtitlesGrid::LoadFromAss (AssFile *_ass,bool keepSelection,bool dontModif } // Finish setting layout - EndBatch(); AdjustScrollbar(); + SetColumnWidths(); + EndBatch(); // Commit if (!AssFile::Popping) { @@ -1080,7 +1083,10 @@ void SubtitlesGrid::DeleteLines(int n1,int n2,bool sel) { } // Update - LoadFromAss(); + UpdateMaps(); + AdjustScrollbar(); + ass->FlagAsModified(); + CommitChanges(); }