diff options
author | Neil <nyamatongwe@gmail.com> | 2020-02-27 11:14:46 +1100 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2020-02-27 11:14:46 +1100 |
commit | 95ecd4d0e34290dbd054a8710a255a9e93347c5f (patch) | |
tree | 8ebfeb3283ffedcc199e0c1e70c1d2d24d741ce3 /src/Editor.h | |
parent | 0a648064cf4d88f6252aa880a0832d39a5331148 (diff) | |
download | scintilla-mirror-95ecd4d0e34290dbd054a8710a255a9e93347c5f.tar.gz |
Feature [feature-requests:497] Structure caret policy data and pass policy for
dragging instead of manipulating global state..
Diffstat (limited to 'src/Editor.h')
-rw-r--r-- | src/Editor.h | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/Editor.h b/src/Editor.h index 69f8ef4ca..374639d4c 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -143,6 +143,18 @@ struct WrapPending { } }; +struct CaretPolicy { + int policy; // Combination from CARET_SLOP, CARET_STRICT, CARET_JUMPS, CARET_EVEN + int slop; // Pixels for X, lines for Y + CaretPolicy(uptr_t policy_=0, sptr_t slop_=0) noexcept : + policy(static_cast<int>(policy_)), slop(static_cast<int>(slop_)) {} +}; + +struct CaretPolicies { + CaretPolicy x; + CaretPolicy y; +}; + /** */ class Editor : public EditModel, public DocWatcher { @@ -232,14 +244,9 @@ protected: // ScintillaBase subclass needs access to much of Editor SelectionText drag; - int caretXPolicy; - int caretXSlop; ///< Ensure this many pixels visible on both sides of caret - - int caretYPolicy; - int caretYSlop; ///< Ensure this many lines visible on both sides of caret + CaretPolicies caretPolicies; - int visiblePolicy; - int visibleSlop; + CaretPolicy visiblePolicy; Sci::Position searchAnchor; @@ -325,7 +332,8 @@ protected: // ScintillaBase subclass needs access to much of Editor bool SelectionContainsProtected(); Sci::Position MovePositionOutsideChar(Sci::Position pos, Sci::Position moveDir, bool checkLineEnd=true) const; SelectionPosition MovePositionOutsideChar(SelectionPosition pos, Sci::Position moveDir, bool checkLineEnd=true) const; - void MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible); + void MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, + bool ensureVisible, CaretPolicies policies); void MovePositionTo(SelectionPosition newPos, Selection::selTypes selt=Selection::noSel, bool ensureVisible=true); void MovePositionTo(Sci::Position newPos, Selection::selTypes selt=Selection::noSel, bool ensureVisible=true); SelectionPosition MovePositionSoVisible(SelectionPosition pos, int moveDir); @@ -356,7 +364,8 @@ protected: // ScintillaBase subclass needs access to much of Editor xysVertical=0x2, xysHorizontal=0x4, xysDefault=xysUseMargin|xysVertical|xysHorizontal}; - XYScrollPosition XYScrollToMakeVisible(const SelectionRange &range, const XYScrollOptions options); + XYScrollPosition XYScrollToMakeVisible(const SelectionRange &range, + const XYScrollOptions options, CaretPolicies policies); void SetXYScroll(XYScrollPosition newXY); void EnsureCaretVisible(bool useMargin=true, bool vert=true, bool horiz=true); void ScrollRange(SelectionRange range); |