diff options
author | Marko Njezic <unknown> | 2011-06-10 14:38:39 +0200 |
---|---|---|
committer | Marko Njezic <unknown> | 2011-06-10 14:38:39 +0200 |
commit | d2f6831368cd662d7a403cb533f439159f884ca0 (patch) | |
tree | 7aae6e2815aced8376d3d1a67281c6ed86a62f91 /src | |
parent | d9de125c32c08f9c4579d166edccedbd2a70e19d (diff) | |
download | scintilla-mirror-d2f6831368cd662d7a403cb533f439159f884ca0.tar.gz |
Add an option to control how wrapped lines are selected when clicking on margin.
Diffstat (limited to 'src')
-rw-r--r-- | src/Editor.cxx | 11 | ||||
-rw-r--r-- | src/ViewStyle.cxx | 2 | ||||
-rw-r--r-- | src/ViewStyle.h | 1 |
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]; |