修复失去焦点方式关闭窗口的bug

This commit is contained in:
liufei
2022-01-20 17:13:37 +08:00
parent ff2a103682
commit abdc4b6046
2 changed files with 15 additions and 20 deletions

View File

@@ -18,7 +18,7 @@
Background="Transparent" Background="Transparent"
ShowInTaskbar="False" ShowInTaskbar="False"
Opacity="0" Opacity="0"
Deactivated="Window_Deactivated" Deactivated="App_LostFocus"
SizeChanged="Window_SizeChanged" SizeChanged="Window_SizeChanged"
KeyDown="OnKeyDown" KeyDown="OnKeyDown"
Focusable="True" Focusable="True"
@@ -39,12 +39,13 @@
RenderingBias="Quality" ShadowDepth="2"/> RenderingBias="Quality" ShadowDepth="2"/>
</Window.Effect> </Window.Effect>
<Border Margin="20" CornerRadius="{Binding AppConfig.PannelCornerRadius, Mode=TwoWay, Converter={StaticResource IntToCornerRadius}}" BorderThickness="0" <Border Margin="20" CornerRadius="{Binding AppConfig.PannelCornerRadius, Mode=TwoWay, Converter={StaticResource IntToCornerRadius}}" BorderThickness="0"
Background="AliceBlue" LostFocus="App_LostFocus" Background="AliceBlue"
Opacity="{Binding AppConfig.PannelOpacity, Mode=TwoWay, Converter={StaticResource OpcityConvert}}" Opacity="{Binding AppConfig.PannelOpacity, Mode=TwoWay, Converter={StaticResource OpcityConvert}}"
VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.IsContainerVirtualizable="True" VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.IsContainerVirtualizable="True"
hc:Dialog.Token="IconInfoDialog" hc:Dialog.Token="IconInfoDialog"
Focusable="True"
> >
<hc:DialogContainer> <hc:DialogContainer Focusable="True">
<Border CornerRadius="{Binding AppConfig.PannelCornerRadius, Mode=TwoWay, Converter={StaticResource IntToCornerRadius}}" BorderThickness="0"> <Border CornerRadius="{Binding AppConfig.PannelCornerRadius, Mode=TwoWay, Converter={StaticResource IntToCornerRadius}}" BorderThickness="0">
<!--背景图片--> <!--背景图片-->

View File

@@ -302,13 +302,15 @@ namespace GeekDesk
// return; // return;
//} //}
//修改贴边隐藏状态为未隐藏 //修改贴边隐藏状态为未隐藏
mainWindow.Activate();
MarginHide.IS_HIDE = false; MarginHide.IS_HIDE = false;
if (appData.AppConfig.FollowMouse) if (appData.AppConfig.FollowMouse)
{ {
ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false); ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false);
} }
FadeStoryBoard(1, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Visible); FadeStoryBoard(1, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Visible);
Keyboard.Focus(mainWindow); mainWindow.Focus();
} }
public static void HideApp() public static void HideApp()
@@ -440,26 +442,19 @@ namespace GeekDesk
SettingButton.ContextMenu = null; SettingButton.ContextMenu = null;
} }
private void App_LostFocus(object sender, RoutedEventArgs e) private void App_LostFocus(object sender, EventArgs e)
{ {
if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS) if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS
&& this.Opacity == 1)
{ {
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口 //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
if (appData.AppConfig.MarginHide && !MarginHide.IS_HIDE) if (!appData.AppConfig.MarginHide || (appData.AppConfig.MarginHide && !MarginHide.IS_HIDE))
{ {
this.Visibility = Visibility.Collapsed; HideApp();
} }
} }
} }
private void Window_Deactivated(object sender, EventArgs e)
{
if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
{
this.Visibility = Visibility.Collapsed;
}
}
private void Window_SizeChanged(object sender, SizeChangedEventArgs e) private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{ {
if (this.DataContext != null) if (this.DataContext != null)
@@ -523,9 +518,8 @@ namespace GeekDesk
HideApp(); HideApp();
} }
} }
} }
} }