优化贴边交互
This commit is contained in:
@@ -13,5 +13,14 @@ namespace GeekDesk.Constant
|
|||||||
/// 查询框是否在工作
|
/// 查询框是否在工作
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static bool SEARCH_BOX_SHOW = false;
|
public static bool SEARCH_BOX_SHOW = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 贴边隐藏后 以非鼠标经过方式触发显示
|
||||||
|
/// </summary>
|
||||||
|
public static bool MARGIN_HIDE_AND_OTHER_SHOW = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
KeyDown="OnKeyDown"
|
KeyDown="OnKeyDown"
|
||||||
Focusable="True"
|
Focusable="True"
|
||||||
MouseDown="MainWindow_MouseDown"
|
MouseDown="MainWindow_MouseDown"
|
||||||
|
MouseEnter="MainWindow_MouseEnter"
|
||||||
>
|
>
|
||||||
<WindowChrome.WindowChrome>
|
<WindowChrome.WindowChrome>
|
||||||
<WindowChrome CaptionHeight="0" ResizeBorderThickness="15"/>
|
<WindowChrome CaptionHeight="0" ResizeBorderThickness="15"/>
|
||||||
|
|||||||
@@ -351,33 +351,53 @@ namespace GeekDesk
|
|||||||
//{
|
//{
|
||||||
// return;
|
// 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)
|
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.EmptyTextBox);
|
Keyboard.Focus(mainWindow.EmptyTextBox);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void HideApp()
|
public static void HideApp()
|
||||||
{
|
{
|
||||||
if (RunTimeStatus.SEARCH_BOX_SHOW)
|
if (!MarginHide.IS_HIDE)
|
||||||
{
|
{
|
||||||
mainWindow.HidedSearchBox();
|
if (RunTimeStatus.SEARCH_BOX_SHOW)
|
||||||
new Thread(() =>
|
|
||||||
{
|
{
|
||||||
Thread.Sleep(100);
|
mainWindow.HidedSearchBox();
|
||||||
App.Current.Dispatcher.BeginInvoke(new Action(() =>
|
new Thread(() =>
|
||||||
{
|
{
|
||||||
FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
|
Thread.Sleep(100);
|
||||||
}));
|
App.Current.Dispatcher.BeginInvoke(new Action(() =>
|
||||||
}).Start();
|
{
|
||||||
|
FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
|
||||||
|
}));
|
||||||
|
}).Start();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
|
ShowApp();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -596,5 +616,15 @@ namespace GeekDesk
|
|||||||
EmptyTextBox.Focus();
|
EmptyTextBox.Focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 鼠标进入后
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void MainWindow_MouseEnter(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
//防止延迟贴边隐藏
|
||||||
|
RunTimeStatus.MARGIN_HIDE_AND_OTHER_SHOW = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,5 +222,34 @@ namespace GeekDesk.Util
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 判断鼠标是否在窗口内
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="window"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ namespace GeekDesk.Util
|
|||||||
|
|
||||||
public static readonly int shadowWidth = 20;
|
public static readonly int shadowWidth = 20;
|
||||||
|
|
||||||
|
public static bool ON_HIDE = false;
|
||||||
|
|
||||||
|
|
||||||
private static double showMarginWidth = 1;
|
private static double showMarginWidth = 1;
|
||||||
|
|
||||||
@@ -69,7 +71,8 @@ namespace GeekDesk.Util
|
|||||||
#region 窗体贴边隐藏功能
|
#region 窗体贴边隐藏功能
|
||||||
private static void HideWindow(object o, EventArgs e)
|
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 screenLeft = SystemParameters.VirtualScreenLeft;
|
||||||
double screenTop = SystemParameters.VirtualScreenTop;
|
double screenTop = SystemParameters.VirtualScreenTop;
|
||||||
@@ -150,6 +153,7 @@ namespace GeekDesk.Util
|
|||||||
|
|
||||||
public static void StartHide()
|
public static void StartHide()
|
||||||
{
|
{
|
||||||
|
ON_HIDE = true;
|
||||||
if (timer != null) return;
|
if (timer != null) return;
|
||||||
timer = new Timer
|
timer = new Timer
|
||||||
{
|
{
|
||||||
@@ -161,6 +165,7 @@ namespace GeekDesk.Util
|
|||||||
|
|
||||||
public static void StopHide()
|
public static void StopHide()
|
||||||
{
|
{
|
||||||
|
ON_HIDE = false;
|
||||||
if (timer == null) return;
|
if (timer == null) return;
|
||||||
timer.Stop();
|
timer.Stop();
|
||||||
timer.Dispose();
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user