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 | 69f9cd35dfa530c657c1853a471a4bc45db1818f (patch) | |
| tree | 76a1877fed40d79d302d7ac53b1e14d5533f7d7f /src/Editor.h | |
| parent | a6cef65c0713b7bb55315a0d4f1cfd83f90bf3c1 (diff) | |
| download | scintilla-mirror-69f9cd35dfa530c657c1853a471a4bc45db1818f.tar.gz | |
Backport: Feature [feature-requests:497] Structure caret policy data and pass policy for
dragging instead of manipulating global state..
Backport of changeset 7990:9716682f5120.
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 52d422850..c88a181a7 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); |
