aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authornyamatongwe <unknown>2005-04-01 12:19:32 +0000
committernyamatongwe <unknown>2005-04-01 12:19:32 +0000
commitccb1dbe5f1f7543ff5964dc54fa7f1803c7e7bc4 (patch)
treea77ee6d9783a6b495f4fdb0c100ac8dcc62581a2 /src
parent17d2a1de3634182474289f9d307e5f060ae1be37 (diff)
downloadscintilla-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')
-rw-r--r--src/Editor.cxx24
-rw-r--r--src/Editor.h1
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*/);