Skip to content

Commit 4646cd6

Browse files
authored
Code Quality: Prevent mode button from removing Omnibar focus (#17242)
1 parent 622b705 commit 4646cd6

File tree

4 files changed

+7
-9
lines changed

4 files changed

+7
-9
lines changed

src/Files.App.Controls/Omnibar/Omnibar.Events.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@ private void AutoSuggestBox_GettingFocus(UIElement sender, GettingFocusEventArgs
2626

2727
private void AutoSuggestBox_LosingFocus(UIElement sender, LosingFocusEventArgs args)
2828
{
29-
if (args.NewFocusedElement is Button && IsModeButtonPressed)
30-
{
31-
IsModeButtonPressed = false;
32-
args.TryCancel();
29+
// Prevent the TextBox from losing focus when the ModeButton is focused
30+
if (args.NewFocusedElement is not Button button ||
31+
args.InputDevice is FocusInputDeviceKind.Keyboard ||
32+
button.Name.ToString() != "PART_ModeButton")
3333
return;
34-
}
34+
35+
args.TryCancel();
3536
}
3637

3738
private void AutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)

src/Files.App.Controls/Omnibar/Omnibar.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,6 @@ public partial class Omnibar : Control
3333

3434
private WeakReference<UIElement?> _previouslyFocusedElement = new(null);
3535

36-
// NOTE: This is a workaround to keep Omnibar's focus on a mode button being clicked
37-
internal bool IsModeButtonPressed { get; set; }
38-
3936
// Events
4037

4138
public event TypedEventHandler<Omnibar, OmnibarQuerySubmittedEventArgs>? QuerySubmitted;

src/Files.App.Controls/Omnibar/Omnibar.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
<Button
130130
x:Name="PART_ModeButton"
131131
Width="{StaticResource OmnibarModeDefaultClickAreaWidth}"
132+
Height="{StaticResource OmnibarModeDefaultHeight}"
132133
Margin="1"
133134
Background="{TemplateBinding Background}"
134135
BorderBrush="{TemplateBinding BorderBrush}"

src/Files.App.Controls/Omnibar/OmnibarMode.Events.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ private void ModeButton_Click(object sender, RoutedEventArgs e)
4949
if (_ownerRef is null || _ownerRef.TryGetTarget(out var owner) is false || owner.CurrentSelectedMode == this)
5050
return;
5151

52-
owner.IsModeButtonPressed = true;
5352
owner.CurrentSelectedMode = this;
5453
}
5554
}

0 commit comments

Comments
 (0)