diff options
author | nyamatongwe <unknown> | 2004-01-18 07:15:12 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2004-01-18 07:15:12 +0000 |
commit | 7363f3ce9a5068c9c23f948a7e11541f4f9e50d0 (patch) | |
tree | efa32b81b9232cc5feffc2b191b09f6824d95d06 | |
parent | c30a000dcbef83732bea3605f5ca94ae8e996f3f (diff) | |
download | scintilla-mirror-7363f3ce9a5068c9c23f948a7e11541f4f9e50d0.tar.gz |
Patch from Bruce Dodson to ensure correct folding.
When toggling fold on line that is not a fold header line,
toggle the previous fold header line.
-rw-r--r-- | src/Editor.cxx | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index f02ce2b6a..f9d20aa47 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -5276,16 +5276,34 @@ void Editor::Expand(int &line, bool doExpand) { } void Editor::ToggleContraction(int line) { - if (pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG) { + if (line >= 0) { + if ((pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG) == 0) { + line = pdoc->GetFoldParent(line); + if (line < 0) + return; + } + if (cs.GetExpanded(line)) { int lineMaxSubord = pdoc->GetLastChild(line); cs.SetExpanded(line, 0); if (lineMaxSubord > line) { cs.SetVisible(line + 1, lineMaxSubord, false); + + int lineCurrent = pdoc->LineFromPosition(currentPos); + if (lineCurrent > line && lineCurrent <= lineMaxSubord) { + // This does not re-expand the fold + EnsureCaretVisible(); + } + SetScrollBars(); Redraw(); } + } else { + if (!(cs.GetVisible(line))) { + EnsureLineVisible(line, false); + GoToLine(line); + } cs.SetExpanded(line, 1); Expand(line, true); SetScrollBars(); |