diff --git a/MainWindow.xaml b/MainWindow.xaml index 6625a21..1a8c2bd 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -7,7 +7,7 @@ xmlns:cn="clr-namespace:GeekDesk.Constant" mc:Ignorable="d" xmlns:cvt="clr-namespace:GeekDesk.Converts" - x:Name="window" + x:Name="AppWindow" xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:viewmodel="clr-namespace:GeekDesk.ViewModel" d:DataContext="{d:DesignInstance Type=viewmodel:AppData}" Title="GeekDesk" @@ -18,12 +18,13 @@ Background="Transparent" ShowInTaskbar="False" Opacity="0" - Deactivated="App_LostFocus" + Deactivated="AppWindow_Deactivated" SizeChanged="Window_SizeChanged" KeyDown="OnKeyDown" Focusable="True" MouseDown="MainWindow_MouseDown" MouseEnter="MainWindow_MouseEnter" + GotFocus="Window_GotFocus" > @@ -140,7 +141,6 @@ TextChanged="SearchBox_TextChanged" /> - private void SearchBox_TextChanged(object sender, TextChangedEventArgs e) { - if (!RunTimeStatus.SEARCH_BOX_SHOW && appData.AppConfig.SearchType != SearchType.KEY_DOWN) + if (!RunTimeStatus.SEARCH_BOX_SHOW + && appData.AppConfig.SearchType != SearchType.KEY_DOWN + ) { - SearchBox.Text = ""; + SearchBox.TextChanged -= SearchBox_TextChanged; + SearchBox.Clear(); + SearchBox.TextChanged += SearchBox_TextChanged; return; } @@ -118,11 +122,14 @@ namespace GeekDesk public void HidedSearchBox() { RunTimeStatus.SEARCH_BOX_SHOW = false; + SearchBox.TextChanged -= SearchBox_TextChanged; + SearchBox.Clear(); + SearchBox.TextChanged += SearchBox_TextChanged; SearchBox.Width = 0; - App.DoEvents(); SearchIconList.IconList.Clear(); RightCard.VisibilitySearchCard(Visibility.Collapsed); - SearchBox.Text = ""; + Keyboard.Focus(SearchBox); + App.DoEvents(); } @@ -415,9 +422,11 @@ namespace GeekDesk // return; //} - //修改贴边隐藏状态为未隐藏 + MainWindow.mainWindow.Activate(); + if (MarginHide.ON_HIDE) { + //修改贴边隐藏状态为未隐藏 MarginHide.IS_HIDE = false; if (!CommonCode.MouseInWindow(mainWindow)) { @@ -432,7 +441,7 @@ namespace GeekDesk } FadeStoryBoard(1, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Visible); - + Keyboard.Focus(mainWindow); Keyboard.Focus(mainWindow.SearchBox); } @@ -440,6 +449,8 @@ namespace GeekDesk { if (!MarginHide.IS_HIDE) { + //关闭锁定 + RunTimeStatus.LOCK_APP_PANEL = false; if (RunTimeStatus.SEARCH_BOX_SHOW) { mainWindow.HidedSearchBox(); @@ -586,10 +597,11 @@ namespace GeekDesk SettingButton.ContextMenu = null; } - private void App_LostFocus(object sender, EventArgs e) + + private void AppWindowLostFocus() { if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS - && this.Opacity == 1) + && this.Opacity == 1 && !RunTimeStatus.LOCK_APP_PANEL) { //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口 if (!appData.AppConfig.MarginHide || (appData.AppConfig.MarginHide && !MarginHide.IS_HIDE)) @@ -599,6 +611,7 @@ namespace GeekDesk } } + private void Window_SizeChanged(object sender, SizeChangedEventArgs e) { if (this.DataContext != null) @@ -657,7 +670,7 @@ namespace GeekDesk public void OnKeyDown(object sender, KeyEventArgs e) { - char c = (char)e.Key; + //char c = (char)e.Key; if (e.Key == Key.Escape) { @@ -719,5 +732,15 @@ namespace GeekDesk { TaskbarContextMenu.Visibility = Visibility.Visible; } + + private void Window_GotFocus(object sender, RoutedEventArgs e) + { + Keyboard.Focus(SearchBox); + } + + private void AppWindow_Deactivated(object sender, EventArgs e) + { + AppWindowLostFocus(); + } } } diff --git a/Util/MarginHide.cs b/Util/MarginHide.cs index 0912d0d..ca73440 100644 --- a/Util/MarginHide.cs +++ b/Util/MarginHide.cs @@ -3,7 +3,7 @@ using GeekDesk.MyThread; using System; using System.Threading; using System.Windows; - +using System.Windows.Input; using System.Windows.Media.Animation; using System.Windows.Threading; @@ -77,8 +77,9 @@ namespace GeekDesk.Util #region 窗体贴边隐藏功能 private static void HideWindow(object o, EventArgs e) { - if (window.Visibility != Visibility.Visible - || RunTimeStatus.MARGIN_HIDE_AND_OTHER_SHOW) return; + if (window.Visibility != Visibility.Visible + || RunTimeStatus.MARGIN_HIDE_AND_OTHER_SHOW + || RunTimeStatus.LOCK_APP_PANEL) return; double screenLeft = SystemParameters.VirtualScreenLeft; double screenTop = SystemParameters.VirtualScreenTop; @@ -220,6 +221,7 @@ namespace GeekDesk.Util private static void HideAnimation(double from, double to, DependencyProperty property, HideType hideType) { + new Thread(() => { App.Current.Dispatcher.Invoke(() => @@ -229,7 +231,7 @@ namespace GeekDesk.Util if ((int)hideType <= 3) { - animalTime = showTime; + animalTime = showTime; } else { animalTime = hideTime; @@ -284,7 +286,6 @@ namespace GeekDesk.Util window.Top = to - 20; break; } - //double toTemp = to; //double leftT = 0; //double topT = 0;