diff options
author | nyamatongwe <unknown> | 2001-08-17 08:23:16 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2001-08-17 08:23:16 +0000 |
commit | 07a269a00c84cd96d6bbd2bd7d5ebc907951f925 (patch) | |
tree | 69f92b0a7d7e8f39f0f2e8b95619920d890baf96 /src | |
parent | 7fe7682dbe881c62c40029ade60b71f2a4ebe904 (diff) | |
download | scintilla-mirror-07a269a00c84cd96d6bbd2bd7d5ebc907951f925.tar.gz |
Separate out the enforcement of the visibilty policy by having both an
EnsureVisible method and an EnsureVisibleEnforcePolicy method.
Diffstat (limited to 'src')
-rw-r--r-- | src/Editor.cxx | 46 | ||||
-rw-r--r-- | src/Editor.h | 2 |
2 files changed, 27 insertions, 21 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 1735de498..5b72ac579 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -3482,12 +3482,12 @@ void Editor::ToggleContraction(int line) { // Recurse up from this line to find any folds that prevent this line from being visible // and unfold them all. -void Editor::EnsureLineVisible(int lineDoc) { +void Editor::EnsureLineVisible(int lineDoc, bool enforcePolicy) { if (!cs.GetVisible(lineDoc)) { int lineParent = pdoc->GetFoldParent(lineDoc); if (lineParent >= 0) { if (lineDoc != lineParent) - EnsureLineVisible(lineParent); + EnsureLineVisible(lineParent, enforcePolicy); if (!cs.GetExpanded(lineParent)) { cs.SetExpanded(lineParent, 1); Expand(lineParent, true); @@ -3496,23 +3496,25 @@ void Editor::EnsureLineVisible(int lineDoc) { SetScrollBars(); Redraw(); } - int lineDisplay = cs.DisplayFromDoc(lineDoc); - if (visiblePolicy & VISIBLE_SLOP) { - if ((topLine > lineDisplay) || ((visiblePolicy & VISIBLE_STRICT) && (topLine + visibleSlop > lineDisplay))) { - SetTopLine(Platform::Clamp(lineDisplay - visibleSlop, 0, MaxScrollPos())); - SetVerticalScrollPos(); - Redraw(); - } else if ((lineDisplay > topLine + LinesOnScreen() - 1) || - ((visiblePolicy & VISIBLE_STRICT) && (lineDisplay > topLine + LinesOnScreen() - 1 - visibleSlop))) { - SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() + 1 + visibleSlop, 0, MaxScrollPos())); - SetVerticalScrollPos(); - Redraw(); - } - } else { - if ((topLine > lineDisplay) || (lineDisplay > topLine + LinesOnScreen() - 1) || (visiblePolicy & VISIBLE_STRICT)) { - SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() / 2 + 1, 0, MaxScrollPos())); - SetVerticalScrollPos(); - Redraw(); + if (enforcePolicy) { + int lineDisplay = cs.DisplayFromDoc(lineDoc); + if (visiblePolicy & VISIBLE_SLOP) { + if ((topLine > lineDisplay) || ((visiblePolicy & VISIBLE_STRICT) && (topLine + visibleSlop > lineDisplay))) { + SetTopLine(Platform::Clamp(lineDisplay - visibleSlop, 0, MaxScrollPos())); + SetVerticalScrollPos(); + Redraw(); + } else if ((lineDisplay > topLine + LinesOnScreen() - 1) || + ((visiblePolicy & VISIBLE_STRICT) && (lineDisplay > topLine + LinesOnScreen() - 1 - visibleSlop))) { + SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() + 1 + visibleSlop, 0, MaxScrollPos())); + SetVerticalScrollPos(); + Redraw(); + } + } else { + if ((topLine > lineDisplay) || (lineDisplay > topLine + LinesOnScreen() - 1) || (visiblePolicy & VISIBLE_STRICT)) { + SetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() / 2 + 1, 0, MaxScrollPos())); + SetVerticalScrollPos(); + Redraw(); + } } } } @@ -4637,7 +4639,11 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_ENSUREVISIBLE: - EnsureLineVisible(wParam); + EnsureLineVisible(wParam, false); + break; + + case SCI_ENSUREVISIBLEENFORCEPOLICY: + EnsureLineVisible(wParam, true); break; case SCI_SEARCHANCHOR: diff --git a/src/Editor.h b/src/Editor.h index 3d7c54e8e..d42f5ad14 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -328,7 +328,7 @@ protected: // ScintillaBase subclass needs access to much of Editor void Expand(int &line, bool doExpand); void ToggleContraction(int line); - void EnsureLineVisible(int lineDoc); + void EnsureLineVisible(int lineDoc, bool enforcePolicy); int ReplaceTarget(bool replacePatterns, const char *text, int length=-1); virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) = 0; |