diff options
Diffstat (limited to 'src/Selection.cxx')
-rw-r--r-- | src/Selection.cxx | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/Selection.cxx b/src/Selection.cxx index 246cfe709..b44d4e96c 100644 --- a/src/Selection.cxx +++ b/src/Selection.cxx @@ -156,7 +156,7 @@ void SelectionRange::MinimizeVirtualSpace() { } } -Selection::Selection() : mainRange(0), moveExtends(false), selType(selStream) { +Selection::Selection() : mainRange(0), moveExtends(false), selType(selStream), tentativeMain(false) { AddSelection(SelectionPosition(0)); } @@ -270,8 +270,19 @@ void Selection::AddSelection(SelectionRange range) { mainRange = ranges.size() - 1; } -void Selection::AddSelection(SelectionPosition spPos) { - AddSelection(SelectionRange(spPos, spPos)); +void Selection::TentativeSelection(SelectionRange range) { + if (!tentativeMain) { + rangesSaved = ranges; + } + ranges = rangesSaved; + AddSelection(range); + TrimSelection(ranges[mainRange]); + tentativeMain = true; +} + +void Selection::CommitTentative() { + rangesSaved.clear(); + tentativeMain = false; } int Selection::CharacterInSelection(int posCharacter) const { |