diff options
author | nyamatongwe <unknown> | 2005-04-01 12:19:32 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2005-04-01 12:19:32 +0000 |
commit | ccb1dbe5f1f7543ff5964dc54fa7f1803c7e7bc4 (patch) | |
tree | a77ee6d9783a6b495f4fdb0c100ac8dcc62581a2 /src/Editor.cxx | |
parent | 17d2a1de3634182474289f9d307e5f060ae1be37 (diff) | |
download | scintilla-mirror-ccb1dbe5f1f7543ff5964dc54fa7f1803c7e7bc4.tar.gz |
Patch from Franck Marcia that makes SCI_PARADOWN and SCI_PARAUP takes
care about hidden lines (in folded blocks).
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index d9ec00a35..b6c671b57 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -4000,6 +4000,22 @@ void Editor::CursorUpOrDown(int direction, selTypes sel) { MovePositionTo(posNew, sel); } +void Editor::ParaUpOrDown(int direction, selTypes sel) { + int lineDoc, savedPos = currentPos; + do { + MovePositionTo(direction > 0 ? pdoc->ParaDown(currentPos) : pdoc->ParaUp(currentPos), sel); + lineDoc = pdoc->LineFromPosition(currentPos); + if (direction > 0) { + if (currentPos >= pdoc->Length() && !cs.GetVisible(lineDoc)) { + if (sel == noSel) { + MovePositionTo(pdoc->LineEndPosition(savedPos)); + } + break; + } + } + } while (!cs.GetVisible(lineDoc)); +} + int Editor::StartEndDisplayLine(int pos, bool start) { RefreshStyleData(); int line = pdoc->LineFromPosition(pos); @@ -4044,10 +4060,10 @@ int Editor::KeyCommand(unsigned int iMessage) { CursorUpOrDown(1, selRectangle); break; case SCI_PARADOWN: - MovePositionTo(pdoc->ParaDown(currentPos)); + ParaUpOrDown(1); break; case SCI_PARADOWNEXTEND: - MovePositionTo(pdoc->ParaDown(currentPos), selStream); + ParaUpOrDown(1, selStream); break; case SCI_LINESCROLLDOWN: ScrollTo(topLine + 1); @@ -4063,10 +4079,10 @@ int Editor::KeyCommand(unsigned int iMessage) { CursorUpOrDown(-1, selRectangle); break; case SCI_PARAUP: - MovePositionTo(pdoc->ParaUp(currentPos)); + ParaUpOrDown(-1); break; case SCI_PARAUPEXTEND: - MovePositionTo(pdoc->ParaUp(currentPos), selStream); + ParaUpOrDown(-1, selStream); break; case SCI_LINESCROLLUP: ScrollTo(topLine - 1); |