aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 9878182c2..bc74e51bd 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -4907,7 +4907,17 @@ void Editor::ButtonMove(Point pt) {
SetSelection(movePos);
} else if (selectionType == selWord) {
// Continue selecting by word
- if (movePos >= originalAnchorPos) { // Moved forward
+ if (movePos == originalAnchorPos) { // Didn't move
+ // No need to do anything. Previously this case was lumped
+ // in with "Moved forward", but that can be harmful in this
+ // case: a handler for the NotifyDoubleClick re-adjusts
+ // the selection for a fancier definition of "word" (for
+ // example, in Perl it is useful to include the leading
+ // '$', '%' or '@' on variables for word selection). In this
+ // the ButtonMove() called via Tick() for auto-scrolling
+ // could result in the fancier word selection adjustment
+ // being unmade.
+ } else if (movePos > originalAnchorPos) { // Moved forward
SetSelection(pdoc->ExtendWordSelect(movePos, 1),
pdoc->ExtendWordSelect(originalAnchorPos, -1));
} else { // Moved backward