diff --git a/Constant/RunTimeStatus.cs b/Constant/RunTimeStatus.cs
index ae58d12..80ac272 100644
--- a/Constant/RunTimeStatus.cs
+++ b/Constant/RunTimeStatus.cs
@@ -13,5 +13,14 @@ namespace GeekDesk.Constant
/// 查询框是否在工作
///
public static bool SEARCH_BOX_SHOW = false;
+
+ ///
+ /// 贴边隐藏后 以非鼠标经过方式触发显示
+ ///
+ public static bool MARGIN_HIDE_AND_OTHER_SHOW = false;
+
+
+
+
}
}
diff --git a/MainWindow.xaml b/MainWindow.xaml
index 76fe69f..ce1e33f 100644
--- a/MainWindow.xaml
+++ b/MainWindow.xaml
@@ -21,6 +21,7 @@
KeyDown="OnKeyDown"
Focusable="True"
MouseDown="MainWindow_MouseDown"
+ MouseEnter="MainWindow_MouseEnter"
>
diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs
index 48eb13e..53e1fdd 100644
--- a/MainWindow.xaml.cs
+++ b/MainWindow.xaml.cs
@@ -351,33 +351,53 @@ namespace GeekDesk
//{
// return;
//}
+
//修改贴边隐藏状态为未隐藏
- MarginHide.IS_HIDE = false;
+ if (MarginHide.ON_HIDE)
+ {
+ MarginHide.IS_HIDE = false;
+ if (!CommonCode.MouseInWindow(mainWindow))
+ {
+ RunTimeStatus.MARGIN_HIDE_AND_OTHER_SHOW = true;
+ MarginHide.WaitHide(3000);
+ }
+ }
+
if (appData.AppConfig.FollowMouse)
{
ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false);
}
+
FadeStoryBoard(1, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Visible);
+
Keyboard.Focus(mainWindow.EmptyTextBox);
}
public static void HideApp()
{
- if (RunTimeStatus.SEARCH_BOX_SHOW)
+ if (!MarginHide.IS_HIDE)
{
- mainWindow.HidedSearchBox();
- new Thread(() =>
+ if (RunTimeStatus.SEARCH_BOX_SHOW)
{
- Thread.Sleep(100);
- App.Current.Dispatcher.BeginInvoke(new Action(() =>
+ mainWindow.HidedSearchBox();
+ new Thread(() =>
{
- FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
- }));
- }).Start();
+ Thread.Sleep(100);
+ App.Current.Dispatcher.BeginInvoke(new Action(() =>
+ {
+ FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
+ }));
+ }).Start();
+ }
+ else
+ {
+ FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
+ }
} else
{
- FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
+ ShowApp();
}
+
}
///
@@ -596,5 +616,15 @@ namespace GeekDesk
EmptyTextBox.Focus();
}
+ ///
+ /// 鼠标进入后
+ ///
+ ///
+ ///
+ private void MainWindow_MouseEnter(object sender, MouseEventArgs e)
+ {
+ //防止延迟贴边隐藏
+ RunTimeStatus.MARGIN_HIDE_AND_OTHER_SHOW = false;
+ }
}
}
diff --git a/Util/CommonCode.cs b/Util/CommonCode.cs
index 059743c..65f2b1c 100644
--- a/Util/CommonCode.cs
+++ b/Util/CommonCode.cs
@@ -222,5 +222,34 @@ namespace GeekDesk.Util
}
}
+
+
+ ///
+ /// 判断鼠标是否在窗口内
+ ///
+ ///
+ ///
+ public static bool MouseInWindow(Window window)
+ {
+ double windowHeight = window.Height;
+ double windowWidth = window.Width;
+
+ double windowTop = window.Top;
+ double windowLeft = window.Left;
+
+ //获取鼠标位置
+ System.Windows.Point p = MouseUtil.GetMousePosition();
+ double mouseX = p.X;
+ double mouseY = p.Y;
+
+ //鼠标不在窗口上
+ if (mouseX < windowLeft || mouseX > windowLeft + windowWidth
+ || mouseY < windowTop || mouseY > windowTop + windowHeight)
+ {
+ return false;
+ }
+ return true;
+ }
+
}
}
diff --git a/Util/MarginHide.cs b/Util/MarginHide.cs
index c539a0a..50e99ef 100644
--- a/Util/MarginHide.cs
+++ b/Util/MarginHide.cs
@@ -30,6 +30,8 @@ namespace GeekDesk.Util
public static readonly int shadowWidth = 20;
+ public static bool ON_HIDE = false;
+
private static double showMarginWidth = 1;
@@ -69,7 +71,8 @@ namespace GeekDesk.Util
#region 窗体贴边隐藏功能
private static void HideWindow(object o, EventArgs e)
{
- if (window.Visibility != Visibility.Visible) return;
+ if (window.Visibility != Visibility.Visible
+ || RunTimeStatus.MARGIN_HIDE_AND_OTHER_SHOW) return;
double screenLeft = SystemParameters.VirtualScreenLeft;
double screenTop = SystemParameters.VirtualScreenTop;
@@ -150,6 +153,7 @@ namespace GeekDesk.Util
public static void StartHide()
{
+ ON_HIDE = true;
if (timer != null) return;
timer = new Timer
{
@@ -161,6 +165,7 @@ namespace GeekDesk.Util
public static void StopHide()
{
+ ON_HIDE = false;
if (timer == null) return;
timer.Stop();
timer.Dispose();
@@ -295,6 +300,20 @@ namespace GeekDesk.Util
}
+ public static void WaitHide(int waitTime)
+ {
+ new System.Threading.Thread(()=>
+ {
+ System.Threading.Thread.Sleep(waitTime);
+ //修改状态为false 继续执行贴边隐藏
+ RunTimeStatus.MARGIN_HIDE_AND_OTHER_SHOW = false;
+ }).Start();
+ }
+
+
+
+
+
}
}