aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx11
-rw-r--r--src/ViewStyle.cxx2
-rw-r--r--src/ViewStyle.h1
3 files changed, 12 insertions, 2 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 6b86987fa..79c9f6c0f 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -6195,7 +6195,7 @@ void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, b
if (!shift) {
// Single click in margin: select whole line or only subline if word wrap is enabled
lineAnchorPos = newPos.Position();
- selectionType = (wrapState != eWrapNone) ? selSubLine : selWholeLine;
+ selectionType = ((wrapState != eWrapNone) && (vs.marginOptions & SC_MARGINOPTION_SUBLINESELECT)) ? selSubLine : selWholeLine;
LineSelection(lineAnchorPos, lineAnchorPos, selectionType == selWholeLine);
} else {
// Single shift+click in margin: select from line anchor to clicked line
@@ -6208,7 +6208,7 @@ void Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, b
// Otherwise, if there's a non empty selection, reset selection type only if it differs from selSubLine and selWholeLine.
// This ensures that we continue selecting in the same selection mode.
if (sel.Empty() || (selectionType != selSubLine && selectionType != selWholeLine))
- selectionType = (wrapState != eWrapNone) ? selSubLine : selWholeLine;
+ selectionType = ((wrapState != eWrapNone) && (vs.marginOptions & SC_MARGINOPTION_SUBLINESELECT)) ? selSubLine : selWholeLine;
LineSelection(newPos.Position(), lineAnchorPos, selectionType == selWholeLine);
}
@@ -8797,6 +8797,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_MARGINGETSTYLEOFFSET:
return vs.marginStyleOffset;
+ case SCI_SETMARGINOPTIONS:
+ vs.marginOptions = wParam;
+ break;
+
+ case SCI_GETMARGINOPTIONS:
+ return vs.marginOptions;
+
case SCI_MARGINSETTEXT:
pdoc->MarginSetText(wParam, CharPtrFromSPtr(lParam));
break;
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx
index 03a2fb42f..78b13b8da 100644
--- a/src/ViewStyle.cxx
+++ b/src/ViewStyle.cxx
@@ -187,6 +187,7 @@ ViewStyle::ViewStyle(const ViewStyle &source) {
someStylesForceCase = false;
leftMarginWidth = source.leftMarginWidth;
rightMarginWidth = source.rightMarginWidth;
+ marginOptions = source.marginOptions;
for (int i=0; i < margins; i++) {
ms[i] = source.ms[i];
}
@@ -287,6 +288,7 @@ void ViewStyle::Init(size_t stylesSize_) {
leftMarginWidth = 1;
rightMarginWidth = 1;
+ marginOptions = SC_MARGINOPTION_NONE;
ms[0].style = SC_MARGIN_NUMBER;
ms[0].width = 0;
ms[0].mask = 0;
diff --git a/src/ViewStyle.h b/src/ViewStyle.h
index b038a9b54..f62529adf 100644
--- a/src/ViewStyle.h
+++ b/src/ViewStyle.h
@@ -102,6 +102,7 @@ public:
enum { margins=5 };
int leftMarginWidth; ///< Spacing margin on left of text
int rightMarginWidth; ///< Spacing margin on left of text
+ int marginOptions;
bool symbolMargin;
int maskInLine; ///< Mask for markers to be put into text because there is nowhere for them to go in margin
MarginStyle ms[margins];