From d7aa990d9352a030615b7695c34f315217deb8c5 Mon Sep 17 00:00:00 2001 From: Vicente Date: Sat, 17 Feb 2018 14:12:12 +1100 Subject: For rectangular selections, pressing Home or End now moves the caret to the Home or End position instead of the limit of the rectangular selection. --- src/Editor.cxx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/Editor.cxx b/src/Editor.cxx index f33eefe69..64be76fa6 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -3359,8 +3359,19 @@ int Editor::HorizontalMove(unsigned int iMessage) { SetRectangularRange(); } else if (sel.IsRectangular()) { // Not a rectangular extension so switch to stream. - const SelectionPosition selAtLimit = - (NaturalDirection(iMessage) > 0) ? sel.Limits().end : sel.Limits().start; + SelectionPosition selAtLimit = (NaturalDirection(iMessage) > 0) ? sel.Limits().end : sel.Limits().start; + switch (iMessage) { + case SCI_HOME: + selAtLimit = SelectionPosition( + static_cast(pdoc->LineStart(pdoc->LineFromPosition(selAtLimit.Position())))); + break; + case SCI_VCHOME: + selAtLimit = SelectionPosition(pdoc->VCHomePosition(selAtLimit.Position())); + break; + case SCI_LINEEND: + selAtLimit = SelectionPosition(pdoc->LineEndPosition(selAtLimit.Position())); + break; + } sel.selType = Selection::selStream; sel.SetSelection(SelectionRange(selAtLimit)); } else { @@ -7537,7 +7548,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { std::vector().swap(vs.theMultiEdge); // Free vector and memory, C++03 compatible InvalidateStyleRedraw(); break; - + case SCI_GETACCESSIBILITY: return SC_ACCESSIBILITY_DISABLED; -- cgit v1.2.3