diff options
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); |