diff options
author | nyamatongwe <devnull@localhost> | 2005-04-01 12:19:32 +0000 |
---|---|---|
committer | nyamatongwe <devnull@localhost> | 2005-04-01 12:19:32 +0000 |
commit | 19c1fa399ba55f245f8f4405b30d257d8ef026a9 (patch) | |
tree | a77ee6d9783a6b495f4fdb0c100ac8dcc62581a2 /src | |
parent | 97554fe210fa6122ba17bcb17a4336b7cdff7bb8 (diff) | |
download | scintilla-mirror-19c1fa399ba55f245f8f4405b30d257d8ef026a9.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')
-rw-r--r-- | src/Editor.cxx | 24 | ||||
-rw-r--r-- | src/Editor.h | 1 |
2 files changed, 21 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); diff --git a/src/Editor.h b/src/Editor.h index ab80a21c4..71953c298 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -455,6 +455,7 @@ protected: // ScintillaBase subclass needs access to much of Editor virtual void CancelModes(); void NewLine(); void CursorUpOrDown(int direction, selTypes sel=noSel); + void ParaUpOrDown(int direction, selTypes sel=noSel); int StartEndDisplayLine(int pos, bool start); virtual int KeyCommand(unsigned int iMessage); virtual int KeyDefault(int /* key */, int /*modifiers*/); |