aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Editor.h')
-rw-r--r--src/Editor.h27
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);