From b23b91d26ac117e16d0148510d905297c4df69a4 Mon Sep 17 00:00:00 2001 From: Yair <39923744+yaira2@users.noreply.github.com> Date: Thu, 3 Jul 2025 11:07:53 -0400 Subject: [PATCH 1/3] Code Quality: Prevent mode button from removing Omnibar focus --- src/Files.App.Controls/Omnibar/Omnibar.Events.cs | 11 ++++++----- src/Files.App.Controls/Omnibar/Omnibar.cs | 3 --- src/Files.App.Controls/Omnibar/Omnibar.xaml | 1 + src/Files.App.Controls/Omnibar/OmnibarMode.Events.cs | 1 - 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Files.App.Controls/Omnibar/Omnibar.Events.cs b/src/Files.App.Controls/Omnibar/Omnibar.Events.cs index f33680ad704f..c52403bc00a5 100644 --- a/src/Files.App.Controls/Omnibar/Omnibar.Events.cs +++ b/src/Files.App.Controls/Omnibar/Omnibar.Events.cs @@ -26,12 +26,13 @@ private void AutoSuggestBox_GettingFocus(UIElement sender, GettingFocusEventArgs private void AutoSuggestBox_LosingFocus(UIElement sender, LosingFocusEventArgs args) { - if (args.NewFocusedElement is Button && IsModeButtonPressed) - { - IsModeButtonPressed = false; - args.TryCancel(); + // Prevent the TextBox from losing focus when the ModeButton is focused + if (args.NewFocusedElement is not Button button || + args.InputDevice is FocusInputDeviceKind.Keyboard || + button.Tag?.ToString() != "ModeButton") return; - } + + args.TryCancel(); } private void AutoSuggestBox_GotFocus(object sender, RoutedEventArgs e) diff --git a/src/Files.App.Controls/Omnibar/Omnibar.cs b/src/Files.App.Controls/Omnibar/Omnibar.cs index fbe301a3b9df..5806676b5688 100644 --- a/src/Files.App.Controls/Omnibar/Omnibar.cs +++ b/src/Files.App.Controls/Omnibar/Omnibar.cs @@ -33,9 +33,6 @@ public partial class Omnibar : Control private WeakReference _previouslyFocusedElement = new(null); - // NOTE: This is a workaround to keep Omnibar's focus on a mode button being clicked - internal bool IsModeButtonPressed { get; set; } - // Events public event TypedEventHandler? QuerySubmitted; diff --git a/src/Files.App.Controls/Omnibar/Omnibar.xaml b/src/Files.App.Controls/Omnibar/Omnibar.xaml index 546902e4663a..6a7dc23648a1 100644 --- a/src/Files.App.Controls/Omnibar/Omnibar.xaml +++ b/src/Files.App.Controls/Omnibar/Omnibar.xaml @@ -134,6 +134,7 @@ BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" CornerRadius="{TemplateBinding CornerRadius}" + Tag="ModeButton" ToolTipService.ToolTip="{Binding ModeName, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}"> diff --git a/src/Files.App.Controls/Omnibar/OmnibarMode.Events.cs b/src/Files.App.Controls/Omnibar/OmnibarMode.Events.cs index a40dd8abbdcb..b8633bd24c50 100644 --- a/src/Files.App.Controls/Omnibar/OmnibarMode.Events.cs +++ b/src/Files.App.Controls/Omnibar/OmnibarMode.Events.cs @@ -49,7 +49,6 @@ private void ModeButton_Click(object sender, RoutedEventArgs e) if (_ownerRef is null || _ownerRef.TryGetTarget(out var owner) is false || owner.CurrentSelectedMode == this) return; - owner.IsModeButtonPressed = true; owner.CurrentSelectedMode = this; } } From da3a68e5c579d8b75c23c78cbcecf085f898d500 Mon Sep 17 00:00:00 2001 From: Yair <39923744+yaira2@users.noreply.github.com> Date: Thu, 3 Jul 2025 11:10:15 -0400 Subject: [PATCH 2/3] Fixed button height --- src/Files.App.Controls/Omnibar/Omnibar.xaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Files.App.Controls/Omnibar/Omnibar.xaml b/src/Files.App.Controls/Omnibar/Omnibar.xaml index 6a7dc23648a1..317e001f67ce 100644 --- a/src/Files.App.Controls/Omnibar/Omnibar.xaml +++ b/src/Files.App.Controls/Omnibar/Omnibar.xaml @@ -129,6 +129,7 @@