Fixed behavior of deleting and joining lines on subtitles grid
Originally committed to SVN as r90.
This commit is contained in:
parent
6eae67a95e
commit
a82f60fe72
5 changed files with 60 additions and 4 deletions
|
@ -750,3 +750,49 @@ bool BaseGrid::IsDisplayed(AssDialogue *line) {
|
||||||
if (f1 <= video->frame_n && f2 >= video->frame_n) return true;
|
if (f1 <= video->frame_n && f2 >= video->frame_n) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////
|
||||||
|
// Update maps
|
||||||
|
void BaseGrid::UpdateMaps() {
|
||||||
|
// Store old
|
||||||
|
int len = diagMap.size();
|
||||||
|
std::vector<AssDialogue *> tmpDiagPtrMap;
|
||||||
|
std::vector<bool> tmpSelMap;
|
||||||
|
for (int i=0;i<len;i++) {
|
||||||
|
tmpDiagPtrMap.push_back(diagPtrMap[i]);
|
||||||
|
tmpSelMap.push_back(selMap[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear old
|
||||||
|
diagPtrMap.clear();
|
||||||
|
diagMap.clear();
|
||||||
|
selMap.clear();
|
||||||
|
|
||||||
|
// Re-generate lines
|
||||||
|
int n = 0;
|
||||||
|
AssDialogue *curdiag;
|
||||||
|
for (entryIter cur=AssFile::top->Line.begin();cur != AssFile::top->Line.end();cur++) {
|
||||||
|
curdiag = AssEntry::GetAsDialogue(*cur);
|
||||||
|
if (curdiag) {
|
||||||
|
// Find old pos
|
||||||
|
bool sel = false;
|
||||||
|
for (int i=0;i<len;i++) {
|
||||||
|
if (tmpDiagPtrMap[i] == curdiag) {
|
||||||
|
sel = tmpSelMap[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new
|
||||||
|
diagMap.push_back(cur);
|
||||||
|
diagPtrMap.push_back(curdiag);
|
||||||
|
selMap.push_back(sel);
|
||||||
|
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh
|
||||||
|
Refresh(false);
|
||||||
|
}
|
||||||
|
|
|
@ -87,6 +87,7 @@ public:
|
||||||
|
|
||||||
bool byFrame;
|
bool byFrame;
|
||||||
std::vector<entryIter> diagMap;
|
std::vector<entryIter> diagMap;
|
||||||
|
std::vector<AssDialogue *> diagPtrMap;
|
||||||
std::vector<bool> selMap;
|
std::vector<bool> selMap;
|
||||||
|
|
||||||
void SetColumnWidths();
|
void SetColumnWidths();
|
||||||
|
@ -99,6 +100,7 @@ public:
|
||||||
bool IsInSelection(int row, int col) const;
|
bool IsInSelection(int row, int col) const;
|
||||||
bool IsDisplayed(AssDialogue *line);
|
bool IsDisplayed(AssDialogue *line);
|
||||||
int GetNumberSelection();
|
int GetNumberSelection();
|
||||||
|
void UpdateMaps();
|
||||||
|
|
||||||
int GetRows() const;
|
int GetRows() const;
|
||||||
int GetNumberRows() const { return GetRows(); }
|
int GetNumberRows() const { return GetRows(); }
|
||||||
|
|
|
@ -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)
|
- Rows colliding with the currently active one will now be highlighted in grid (AMZ)
|
||||||
- Selected comments are now highlighted in a different color (AMZ)
|
- Selected comments are now highlighted in a different color (AMZ)
|
||||||
- Added a volume slider bar to audio mode (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 ===========================
|
= 1.09 beta - 2006.01.16 ===========================
|
||||||
|
|
|
@ -259,7 +259,8 @@ void DialogShiftTimes::OnOK(wxCommandEvent &event) {
|
||||||
Options.Save();
|
Options.Save();
|
||||||
|
|
||||||
// End dialog
|
// End dialog
|
||||||
grid->LoadFromAss(NULL,true);
|
//grid->LoadFromAss(NULL,true);
|
||||||
|
grid->UpdateMaps();
|
||||||
EndModal(0);
|
EndModal(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -809,6 +809,7 @@ void SubtitlesGrid::LoadDefault (AssFile *_ass) {
|
||||||
void SubtitlesGrid::Clear () {
|
void SubtitlesGrid::Clear () {
|
||||||
//if (GetNumberRows() > 0) DeleteRows(0,GetNumberRows());
|
//if (GetNumberRows() > 0) DeleteRows(0,GetNumberRows());
|
||||||
diagMap.clear();
|
diagMap.clear();
|
||||||
|
diagPtrMap.clear();
|
||||||
selMap.clear();
|
selMap.clear();
|
||||||
yPos = 0;
|
yPos = 0;
|
||||||
AdjustScrollbar();
|
AdjustScrollbar();
|
||||||
|
@ -845,8 +846,9 @@ void SubtitlesGrid::LoadFromAss (AssFile *_ass,bool keepSelection,bool dontModif
|
||||||
curdiag = AssEntry::GetAsDialogue(*cur);
|
curdiag = AssEntry::GetAsDialogue(*cur);
|
||||||
if (curdiag) {
|
if (curdiag) {
|
||||||
//AppendRows(1);
|
//AppendRows(1);
|
||||||
SetRowToLine(n,curdiag);
|
//SetRowToLine(n,curdiag);
|
||||||
diagMap.push_back(cur);
|
diagMap.push_back(cur);
|
||||||
|
diagPtrMap.push_back(curdiag);
|
||||||
selMap.push_back(false);
|
selMap.push_back(false);
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
@ -866,8 +868,9 @@ void SubtitlesGrid::LoadFromAss (AssFile *_ass,bool keepSelection,bool dontModif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finish setting layout
|
// Finish setting layout
|
||||||
EndBatch();
|
|
||||||
AdjustScrollbar();
|
AdjustScrollbar();
|
||||||
|
SetColumnWidths();
|
||||||
|
EndBatch();
|
||||||
|
|
||||||
// Commit
|
// Commit
|
||||||
if (!AssFile::Popping) {
|
if (!AssFile::Popping) {
|
||||||
|
@ -1080,7 +1083,10 @@ void SubtitlesGrid::DeleteLines(int n1,int n2,bool sel) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update
|
// Update
|
||||||
LoadFromAss();
|
UpdateMaps();
|
||||||
|
AdjustScrollbar();
|
||||||
|
ass->FlagAsModified();
|
||||||
|
CommitChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue