[BUG_FIXED] Fix un regression: folding/unfolding performance issue.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@919 f5eea248-9336-0410-98b8-ebc06183d4e3remotes/trunk
parent
07671e8d71
commit
86f444f829
|
@ -941,7 +941,12 @@ void Notepad_plus::command(int id)
|
|||
case IDM_VIEW_TOGGLE_UNFOLDALL:
|
||||
{
|
||||
_isFolding = true; // So we can ignore events while folding is taking place
|
||||
_pEditView->foldAll((id==IDM_VIEW_TOGGLE_FOLDALL)?fold_collapse:fold_uncollapse);
|
||||
bool doCollapse = (id==IDM_VIEW_TOGGLE_FOLDALL)?fold_collapse:fold_uncollapse;
|
||||
_pEditView->foldAll(doCollapse);
|
||||
if (_pDocMap)
|
||||
{
|
||||
_pDocMap->foldAll(doCollapse);
|
||||
}
|
||||
_isFolding = false;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -1520,9 +1520,7 @@ void ScintillaEditView::syncFoldStateWith(const std::vector<HeaderLineState> & l
|
|||
bool expanded = isFolded(hls._headerLineNumber);
|
||||
// set line to state folded
|
||||
if (hls._isExpanded != expanded)
|
||||
{
|
||||
fold(hls._headerLineNumber, !expanded);
|
||||
}
|
||||
execute(SCI_TOGGLEFOLD, hls._headerLineNumber);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1636,7 +1634,7 @@ void ScintillaEditView::fold(int line, bool mode)
|
|||
if (isFolded(headerLine) != mode)
|
||||
{
|
||||
execute(SCI_TOGGLEFOLD, headerLine);
|
||||
|
||||
|
||||
SCNotification scnN;
|
||||
scnN.nmhdr.code = SCN_FOLDINGSTATECHANGED;
|
||||
scnN.nmhdr.hwndFrom = _hSelf;
|
||||
|
@ -1664,8 +1662,8 @@ void ScintillaEditView::foldAll(bool mode)
|
|||
{
|
||||
int level = execute(SCI_GETFOLDLEVEL, line);
|
||||
if (level & SC_FOLDLEVELHEADERFLAG)
|
||||
if (isFolded(line) != mode)
|
||||
fold(line, mode);
|
||||
if ((execute(SCI_GETFOLDEXPANDED, line) != 0) != mode)
|
||||
execute(SCI_TOGGLEFOLD, line);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -235,6 +235,11 @@ void DocumentMap::fold(int line, bool foldOrNot)
|
|||
_pScintillaEditView->fold(line, foldOrNot);
|
||||
}
|
||||
|
||||
void DocumentMap::foldAll(bool mode)
|
||||
{
|
||||
_pScintillaEditView->foldAll(mode);
|
||||
}
|
||||
|
||||
void DocumentMap::scrollMap(bool direction, moveMode whichMode)
|
||||
{
|
||||
// Visible line for the code view
|
||||
|
|
|
@ -121,6 +121,7 @@ public:
|
|||
void scrollMap(bool direction, moveMode whichMode);
|
||||
void doMove();
|
||||
void fold(int line, bool foldOrNot);
|
||||
void foldAll(bool mode);
|
||||
void setSyntaxLiliting();
|
||||
|
||||
protected:
|
||||
|
|
Loading…
Reference in New Issue