mirror of
https://github.com/fadden/6502bench.git
synced 2024-09-30 23:55:09 +00:00
Change find-previous hotkey to Shift+F3
The range-select behavior that was giving us problems can be worked around by switching the control to single-select mode when changing the selection.
This commit is contained in:
parent
bd11aea4a4
commit
c8dfa94ce2
@ -2191,13 +2191,7 @@ namespace SourceGen {
|
|||||||
if (matchPos >= 0) {
|
if (matchPos >= 0) {
|
||||||
//Debug.WriteLine("Match " + index + ": " + searchStr);
|
//Debug.WriteLine("Match " + index + ": " + searchStr);
|
||||||
mMainWin.CodeListView_EnsureVisible(index);
|
mMainWin.CodeListView_EnsureVisible(index);
|
||||||
mMainWin.CodeListView_DeselectAll();
|
|
||||||
mMainWin.CodeListView_SelectRange(index, 1);
|
mMainWin.CodeListView_SelectRange(index, 1);
|
||||||
// TODO(someday): I think we need to do something with the ListView
|
|
||||||
// keyboard nav state here. Otherwise Shift+F3 is regarded as selection
|
|
||||||
// movement with shift held down, and it does a range select. Currently
|
|
||||||
// working around this by using Ctrl+F3 instead. See also maybe the
|
|
||||||
// ItemContainerGenerator stuff in MainWindow.
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2460,7 +2454,6 @@ namespace SourceGen {
|
|||||||
mMainWin.CodeListView_EnsureVisible(topLineIndex);
|
mMainWin.CodeListView_EnsureVisible(topLineIndex);
|
||||||
|
|
||||||
// Update the selection.
|
// Update the selection.
|
||||||
mMainWin.CodeListView_DeselectAll();
|
|
||||||
mMainWin.CodeListView_SelectRange(topLineIndex, lastLineIndex - topLineIndex);
|
mMainWin.CodeListView_SelectRange(topLineIndex, lastLineIndex - topLineIndex);
|
||||||
|
|
||||||
if (doPush) {
|
if (doPush) {
|
||||||
@ -2512,7 +2505,6 @@ namespace SourceGen {
|
|||||||
mMainWin.CodeListView_EnsureVisible(lineIndex);
|
mMainWin.CodeListView_EnsureVisible(lineIndex);
|
||||||
|
|
||||||
// Update the selection.
|
// Update the selection.
|
||||||
mMainWin.CodeListView_DeselectAll();
|
|
||||||
mMainWin.CodeListView_SelectRange(lineIndex, 1);
|
mMainWin.CodeListView_SelectRange(lineIndex, 1);
|
||||||
|
|
||||||
if (doPush) {
|
if (doPush) {
|
||||||
|
@ -103,8 +103,7 @@ limitations under the License.
|
|||||||
</RoutedUICommand>
|
</RoutedUICommand>
|
||||||
<RoutedUICommand x:Key="FindPreviousCmd" Text="Find Previous">
|
<RoutedUICommand x:Key="FindPreviousCmd" Text="Find Previous">
|
||||||
<RoutedUICommand.InputGestures>
|
<RoutedUICommand.InputGestures>
|
||||||
<!-- should be Shift+F3, but that causes ListView to do range selection -->
|
<KeyGesture>Shift+F3</KeyGesture>
|
||||||
<KeyGesture>Ctrl+F3</KeyGesture>
|
|
||||||
</RoutedUICommand.InputGestures>
|
</RoutedUICommand.InputGestures>
|
||||||
</RoutedUICommand>
|
</RoutedUICommand>
|
||||||
<RoutedUICommand x:Key="FormatAsWordCmd" Text="Format As Word">
|
<RoutedUICommand x:Key="FormatAsWordCmd" Text="Format As Word">
|
||||||
|
@ -758,7 +758,7 @@ namespace SourceGen.WpfGui {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Selects a range of values. Does not clear the previous selection.
|
/// Selects a range of values. Clears the previous selection.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="start">First line to select.</param>
|
/// <param name="start">First line to select.</param>
|
||||||
/// <param name="count">Number of lines to select.</param>
|
/// <param name="count">Number of lines to select.</param>
|
||||||
@ -766,8 +766,20 @@ namespace SourceGen.WpfGui {
|
|||||||
Debug.Assert(start >= 0 && start < CodeDisplayList.Count);
|
Debug.Assert(start >= 0 && start < CodeDisplayList.Count);
|
||||||
Debug.Assert(count > 0 && start + count <= CodeDisplayList.Count);
|
Debug.Assert(count > 0 && start + count <= CodeDisplayList.Count);
|
||||||
|
|
||||||
|
CodeListView_DeselectAll();
|
||||||
|
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
codeListView.SelectedItems.Add(CodeDisplayList[start]);
|
//codeListView.SelectedItems.Add(CodeDisplayList[start]);
|
||||||
|
|
||||||
|
// Special handling for single-item selection, for the benefit of Shift+F3. If
|
||||||
|
// we're in multi-select mode, and we select an item while the shift key is
|
||||||
|
// down, the control will do a range select instead (as if you shift-clicked).
|
||||||
|
// We work around this by temporarily switching to single-select mode.
|
||||||
|
//
|
||||||
|
// This could cause problems if we wanted to select multiple single lines.
|
||||||
|
codeListView.SelectionMode = SelectionMode.Single;
|
||||||
|
codeListView.SelectedItem = CodeDisplayList[start];
|
||||||
|
codeListView.SelectionMode = SelectionMode.Extended;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user