499f24a29e
This commit rewrites selection handling at the TermControl layer. Previously, we were keeping track of a number of redundant variables that were easy to get out of sync. The new selection model is as follows: * A single left click will always begin a _pending_ selection operation * A single left click will always clear a selection (#4477) * A double left click will always begin a word selection * A triple left click will always begin a line selection * A selection will only truly start when the cursor moves a quarter of the smallest dimension of a cell (usually its width) in any direction _This eliminates the selection of a single cell on one click._ (#4282, #5082) * We now keep track of whether the selection has been "copied", or "updated" since it was last copied. If an endpoint moves, it is updated. For copy-on-select, it is only copied if it's updated. (#4740) Because of this, we can stop tracking the position of the focus-raising click, and whether it was part of click-drag operation. All clicks can _become_ part of a click-drag operation if the user drags. We can also eliminate the special handling of single cell selection at the TerminalCore layer: since TermControl determines when to begin a selection, TerminalCore no longer needs to know whether copy on select is enabled _or_ whether the user has started and then backtracked over a single cell. This is now implicit in TermControl. Fixes #5082; Fixes #4477 |
||
---|---|---|
.. | ||
IControlSettings.idl | ||
ICoreSettings.idl | ||
IKeyBindings.idl | ||
KeyChord.cpp | ||
KeyChord.h | ||
KeyChord.idl | ||
packages.config | ||
pch.cpp | ||
pch.h | ||
TerminalSettings.cpp | ||
TerminalSettings.def | ||
terminalsettings.h | ||
TerminalSettings.idl | ||
TerminalSettings.vcxproj |