diff options
author | Vicente <unknown> | 2018-02-17 14:12:12 +1100 |
---|---|---|
committer | Vicente <unknown> | 2018-02-17 14:12:12 +1100 |
commit | dea75986e133ed9e54cb67ec0a87c80b7867b5c4 (patch) | |
tree | cd0cff343416523ceb70e68ba92ceb01d99b09d7 | |
parent | a3739179f1f0d35d63a5f23be1d5501c5a81dc44 (diff) | |
download | scintilla-mirror-dea75986e133ed9e54cb67ec0a87c80b7867b5c4.tar.gz |
Backport: 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.
Backport of changeset 6456:eaa6c7fa1a81.
-rw-r--r-- | doc/ScintillaHistory.html | 4 | ||||
-rw-r--r-- | src/Editor.cxx | 17 |
2 files changed, 18 insertions, 3 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index e146fe692..1734970e6 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -581,6 +581,10 @@ complex selection commands. </li> <li> + 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. + </li> + <li> Fix HTML lexer handling of Django so that nesting a {{ }} or {% %} Django tag inside of a {# #} Django comment does not break highlighting of rest of file </li> diff --git a/src/Editor.cxx b/src/Editor.cxx index 63b41a4d5..e810a8742 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<Sci::Position>(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 { @@ -7528,7 +7539,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { std::vector<EdgeProperties>().swap(vs.theMultiEdge); // Free vector and memory, C++03 compatible InvalidateStyleRedraw(); break; - + case SCI_GETACCESSIBILITY: return SC_ACCESSIBILITY_DISABLED; |