diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml index 5b63303ac..2440e89fa 100644 --- a/Flow.Launcher/MainWindow.xaml +++ b/Flow.Launcher/MainWindow.xaml @@ -242,6 +242,8 @@ InputMethod.PreferredImeState="{Binding StartWithEnglishMode, Converter={StaticResource BoolToIMEStateConverter}}" PreviewDragOver="QueryTextBox_OnPreviewDragOver" PreviewKeyUp="QueryTextBox_KeyUp" + GotKeyboardFocus="QueryTextBox_OnGotKeyboardFocus" + PreviewLostKeyboardFocus="QueryTextBox_OnPreviewLostKeyboardFocus" Style="{DynamicResource QueryBoxStyle}" Text="{Binding QueryText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="Visible" diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 2ce3d1e95..bf560e621 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -989,6 +989,22 @@ namespace Flow.Launcher e.Handled = true; } + private void QueryTextBox_OnGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) + { + if (_viewModel.StartWithEnglishMode) + { + Win32Helper.SwitchToEnglishKeyboardLayout(true); + } + } + + private void QueryTextBox_OnPreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) + { + if (_viewModel.StartWithEnglishMode) + { + Win32Helper.RestorePreviousKeyboardLayout(); + } + } + #endregion } } diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 59af95da5..97ed422c5 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -1373,11 +1373,6 @@ namespace Flow.Launcher.ViewModel MainWindowOpacity = 1; MainWindowVisibilityStatus = true; VisibilityChanged?.Invoke(this, new VisibilityChangedEventArgs { IsVisible = true }); - - if (StartWithEnglishMode) - { - Win32Helper.SwitchToEnglishKeyboardLayout(true); - } }); } @@ -1447,11 +1442,6 @@ namespace Flow.Launcher.ViewModel Win32Helper.DWMSetCloakForWindow(mainWindow, true); } - if (StartWithEnglishMode) - { - Win32Helper.RestorePreviousKeyboardLayout(); - } - await Task.Delay(50); // Update WPF properties