贴边隐藏优化
This commit is contained in:
@@ -204,6 +204,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
|
|||||||
|
|
||||||
private void menus_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void menus_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
|
appData.AppConfig.SelectedMenuIcons = null;
|
||||||
//设置对应菜单的图标列表
|
//设置对应菜单的图标列表
|
||||||
if (MenuListBox.SelectedIndex == -1)
|
if (MenuListBox.SelectedIndex == -1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
|
|||||||
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
||||||
if (appData.AppConfig.MarginHide)
|
if (appData.AppConfig.MarginHide)
|
||||||
{
|
{
|
||||||
if (!MainWindow.hide.IsMargin())
|
if (!MarginHide.IS_HIDE)
|
||||||
{
|
{
|
||||||
MainWindow.HideApp();
|
MainWindow.HideApp();
|
||||||
}
|
}
|
||||||
@@ -172,7 +172,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
|
|||||||
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
||||||
if (appData.AppConfig.MarginHide)
|
if (appData.AppConfig.MarginHide)
|
||||||
{
|
{
|
||||||
if (!MainWindow.hide.IsMargin())
|
if (!MarginHide.IS_HIDE)
|
||||||
{
|
{
|
||||||
MainWindow.HideApp();
|
MainWindow.HideApp();
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
|
|||||||
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
||||||
if (appData.AppConfig.MarginHide)
|
if (appData.AppConfig.MarginHide)
|
||||||
{
|
{
|
||||||
if (!MainWindow.hide.IsMargin())
|
if (!MarginHide.IS_HIDE)
|
||||||
{
|
{
|
||||||
MainWindow.HideApp();
|
MainWindow.HideApp();
|
||||||
}
|
}
|
||||||
@@ -279,7 +279,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
|
|||||||
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
||||||
if (appData.AppConfig.MarginHide)
|
if (appData.AppConfig.MarginHide)
|
||||||
{
|
{
|
||||||
if (!MainWindow.hide.IsMargin())
|
if (!MarginHide.IS_HIDE)
|
||||||
{
|
{
|
||||||
MainWindow.HideApp();
|
MainWindow.HideApp();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ namespace GeekDesk
|
|||||||
public static int hotKeyId = -1;
|
public static int hotKeyId = -1;
|
||||||
public static int toDoHotKeyId = -1;
|
public static int toDoHotKeyId = -1;
|
||||||
public static MainWindow mainWindow;
|
public static MainWindow mainWindow;
|
||||||
public static MarginHide hide;
|
|
||||||
public MainWindow()
|
public MainWindow()
|
||||||
{
|
{
|
||||||
LoadData();
|
LoadData();
|
||||||
@@ -50,10 +49,10 @@ namespace GeekDesk
|
|||||||
ToDoTask.BackLogCheck();
|
ToDoTask.BackLogCheck();
|
||||||
|
|
||||||
////实例化隐藏 Hide类,进行时间timer设置
|
////实例化隐藏 Hide类,进行时间timer设置
|
||||||
hide = new MarginHide(this);
|
MarginHide.ReadyHide(this);
|
||||||
if (appData.AppConfig.MarginHide)
|
if (appData.AppConfig.MarginHide)
|
||||||
{
|
{
|
||||||
hide.TimerSet();
|
MarginHide.StartHide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +61,6 @@ namespace GeekDesk
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void LoadData()
|
private void LoadData()
|
||||||
{
|
{
|
||||||
GC.KeepAlive(MainWindow.appData); // 持活
|
|
||||||
this.DataContext = appData;
|
this.DataContext = appData;
|
||||||
if (appData.MenuList.Count == 0)
|
if (appData.MenuList.Count == 0)
|
||||||
{
|
{
|
||||||
@@ -131,7 +129,7 @@ namespace GeekDesk
|
|||||||
{
|
{
|
||||||
if (MotionControl.hotkeyFinished)
|
if (MotionControl.hotkeyFinished)
|
||||||
{
|
{
|
||||||
if (mainWindow.Visibility == Visibility.Collapsed || mainWindow.Opacity == 0 || MarginHide.isHide)
|
if (mainWindow.Visibility == Visibility.Collapsed || mainWindow.Opacity == 0 || MarginHide.IS_HIDE)
|
||||||
{
|
{
|
||||||
ShowApp();
|
ShowApp();
|
||||||
}
|
}
|
||||||
@@ -337,7 +335,7 @@ namespace GeekDesk
|
|||||||
// return;
|
// return;
|
||||||
//}
|
//}
|
||||||
//修改贴边隐藏状态为未隐藏
|
//修改贴边隐藏状态为未隐藏
|
||||||
MarginHide.isHide = 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);
|
||||||
@@ -395,20 +393,6 @@ namespace GeekDesk
|
|||||||
p.Start();
|
p.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 右键任务栏图标退出
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="e"></param>
|
|
||||||
private void ExitApp(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
if (appData.AppConfig.MouseMiddleShow)
|
|
||||||
{
|
|
||||||
MouseHookThread.Dispose();
|
|
||||||
}
|
|
||||||
hide.TimerStop();
|
|
||||||
Application.Current.Shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -455,7 +439,7 @@ namespace GeekDesk
|
|||||||
if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
|
if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
|
||||||
{
|
{
|
||||||
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
|
||||||
if (appData.AppConfig.MarginHide && !hide.IsMargin())
|
if (appData.AppConfig.MarginHide && !MarginHide.IS_HIDE)
|
||||||
{
|
{
|
||||||
this.Visibility = Visibility.Collapsed;
|
this.Visibility = Visibility.Collapsed;
|
||||||
}
|
}
|
||||||
@@ -480,6 +464,21 @@ namespace GeekDesk
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 右键任务栏图标退出
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ExitApp(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (appData.AppConfig.MouseMiddleShow)
|
||||||
|
{
|
||||||
|
MouseHookThread.Dispose();
|
||||||
|
}
|
||||||
|
Application.Current.Shutdown();
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 重启
|
/// 重启
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -491,7 +490,6 @@ namespace GeekDesk
|
|||||||
{
|
{
|
||||||
MouseHookThread.Dispose();
|
MouseHookThread.Dispose();
|
||||||
}
|
}
|
||||||
hide.TimerStop();
|
|
||||||
|
|
||||||
Process p = new Process();
|
Process p = new Process();
|
||||||
p.StartInfo.FileName = Constants.APP_DIR + "GeekDesk.exe";
|
p.StartInfo.FileName = Constants.APP_DIR + "GeekDesk.exe";
|
||||||
|
|||||||
@@ -26,27 +26,28 @@ namespace GeekDesk.Util
|
|||||||
|
|
||||||
public class MarginHide
|
public class MarginHide
|
||||||
{
|
{
|
||||||
readonly Window window;//定义使用该方法的窗体
|
private static Window window;//定义使用该方法的窗体
|
||||||
|
|
||||||
private readonly int hideTime = 200;
|
private static readonly int hideTime = 200;
|
||||||
|
private static readonly int fadeHideTime = 180;
|
||||||
|
private static readonly int fadeShowTime = 200;
|
||||||
|
private static readonly int taskTime = 250;
|
||||||
|
|
||||||
private readonly int fadeHideTime = 180;
|
private static double showMarginWidth = 1;
|
||||||
|
|
||||||
private readonly int fadeShowTime = 200;
|
public static bool IS_RUN = false;
|
||||||
|
public static bool IS_HIDE = false;
|
||||||
|
|
||||||
private readonly int taskTime = 250;
|
private static Timer timer = null;
|
||||||
|
|
||||||
private double showMarginWidth = 1;
|
public static void ReadyHide(Window window)
|
||||||
|
|
||||||
#pragma warning disable CS0414 // 字段“MarginHide.isHide”已被赋值,但从未使用过它的值
|
|
||||||
public static bool isHide = false;
|
|
||||||
#pragma warning restore CS0414 // 字段“MarginHide.isHide”已被赋值,但从未使用过它的值
|
|
||||||
|
|
||||||
public Timer timer;
|
|
||||||
//构造函数,传入将要匹配的窗体
|
|
||||||
public MarginHide(Window window)
|
|
||||||
{
|
{
|
||||||
this.window = window;
|
MarginHide.window = window;
|
||||||
|
if (timer != null) return;
|
||||||
|
timer = new Timer();//添加timer计时器,隐藏功能
|
||||||
|
timer.Interval = taskTime;
|
||||||
|
timer.Tick += HideWindow;
|
||||||
|
timer.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -54,7 +55,7 @@ namespace GeekDesk.Util
|
|||||||
/// 窗体是否贴边
|
/// 窗体是否贴边
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool IsMargin()
|
public static bool IsMargin()
|
||||||
{
|
{
|
||||||
double screenLeft = SystemParameters.VirtualScreenLeft;
|
double screenLeft = SystemParameters.VirtualScreenLeft;
|
||||||
double screenTop = SystemParameters.VirtualScreenTop;
|
double screenTop = SystemParameters.VirtualScreenTop;
|
||||||
@@ -74,9 +75,9 @@ namespace GeekDesk.Util
|
|||||||
|
|
||||||
|
|
||||||
#region 窗体贴边隐藏功能
|
#region 窗体贴边隐藏功能
|
||||||
private void TimerDealy(object o, EventArgs e)
|
private static void HideWindow(object o, EventArgs e)
|
||||||
{
|
{
|
||||||
if (window.Visibility != Visibility.Visible) return;
|
if (window.Visibility != Visibility.Visible || !IS_RUN) return;
|
||||||
|
|
||||||
double screenLeft = SystemParameters.VirtualScreenLeft;
|
double screenLeft = SystemParameters.VirtualScreenLeft;
|
||||||
double screenTop = SystemParameters.VirtualScreenTop;
|
double screenTop = SystemParameters.VirtualScreenTop;
|
||||||
@@ -95,12 +96,12 @@ namespace GeekDesk.Util
|
|||||||
|
|
||||||
//鼠标不在窗口上
|
//鼠标不在窗口上
|
||||||
if ((mouseX < windowLeft || mouseX > windowLeft + windowWidth
|
if ((mouseX < windowLeft || mouseX > windowLeft + windowWidth
|
||||||
|| mouseY < windowTop || mouseY > windowTop + windowHeight) && !isHide)
|
|| mouseY < windowTop || mouseY > windowTop + windowHeight) && !IS_HIDE)
|
||||||
{
|
{
|
||||||
//上方隐藏条件
|
//上方隐藏条件
|
||||||
if (windowTop <= screenTop)
|
if (windowTop <= screenTop)
|
||||||
{
|
{
|
||||||
isHide = true;
|
IS_HIDE = true;
|
||||||
FadeAnimation(1, 0);
|
FadeAnimation(1, 0);
|
||||||
HideAnimation(windowTop, screenTop - windowHeight + showMarginWidth, Window.TopProperty, HideType.TOP_HIDE);
|
HideAnimation(windowTop, screenTop - windowHeight + showMarginWidth, Window.TopProperty, HideType.TOP_HIDE);
|
||||||
return;
|
return;
|
||||||
@@ -108,7 +109,7 @@ namespace GeekDesk.Util
|
|||||||
//左侧隐藏条件
|
//左侧隐藏条件
|
||||||
if (windowLeft <= screenLeft)
|
if (windowLeft <= screenLeft)
|
||||||
{
|
{
|
||||||
isHide = true;
|
IS_HIDE = true;
|
||||||
FadeAnimation(1, 0);
|
FadeAnimation(1, 0);
|
||||||
HideAnimation(windowLeft, screenLeft - windowWidth + showMarginWidth, Window.LeftProperty, HideType.LEFT_HIDE);
|
HideAnimation(windowLeft, screenLeft - windowWidth + showMarginWidth, Window.LeftProperty, HideType.LEFT_HIDE);
|
||||||
return;
|
return;
|
||||||
@@ -116,18 +117,18 @@ namespace GeekDesk.Util
|
|||||||
//右侧隐藏条件
|
//右侧隐藏条件
|
||||||
if (windowLeft + windowWidth + Math.Abs(screenLeft) >= screenWidth)
|
if (windowLeft + windowWidth + Math.Abs(screenLeft) >= screenWidth)
|
||||||
{
|
{
|
||||||
isHide = true;
|
IS_HIDE = true;
|
||||||
FadeAnimation(1, 0);
|
FadeAnimation(1, 0);
|
||||||
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - showMarginWidth, Window.LeftProperty, HideType.RIGHT_HIDE);
|
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - showMarginWidth, Window.LeftProperty, HideType.RIGHT_HIDE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (mouseX >= windowLeft && mouseX <= windowLeft + windowWidth
|
} else if (mouseX >= windowLeft && mouseX <= windowLeft + windowWidth
|
||||||
&& mouseY >= windowTop && mouseY <= windowTop + windowHeight && isHide)
|
&& mouseY >= windowTop && mouseY <= windowTop + windowHeight && IS_HIDE)
|
||||||
{
|
{
|
||||||
//上方显示
|
//上方显示
|
||||||
if (windowTop <= screenTop - showMarginWidth)
|
if (windowTop <= screenTop - showMarginWidth)
|
||||||
{
|
{
|
||||||
isHide = false;
|
IS_HIDE = false;
|
||||||
HideAnimation(windowTop, screenTop, Window.TopProperty, HideType.TOP_SHOW);
|
HideAnimation(windowTop, screenTop, Window.TopProperty, HideType.TOP_SHOW);
|
||||||
FadeAnimation(0, 1);
|
FadeAnimation(0, 1);
|
||||||
return;
|
return;
|
||||||
@@ -135,7 +136,7 @@ namespace GeekDesk.Util
|
|||||||
//左侧显示
|
//左侧显示
|
||||||
if (windowLeft <= screenLeft - showMarginWidth)
|
if (windowLeft <= screenLeft - showMarginWidth)
|
||||||
{
|
{
|
||||||
isHide = false;
|
IS_HIDE = false;
|
||||||
HideAnimation(windowLeft, screenLeft, Window.LeftProperty, HideType.LEFT_SHOW);
|
HideAnimation(windowLeft, screenLeft, Window.LeftProperty, HideType.LEFT_SHOW);
|
||||||
FadeAnimation(0, 1);
|
FadeAnimation(0, 1);
|
||||||
return;
|
return;
|
||||||
@@ -143,7 +144,7 @@ namespace GeekDesk.Util
|
|||||||
//右侧显示
|
//右侧显示
|
||||||
if (windowLeft + Math.Abs(screenLeft) == screenWidth - showMarginWidth)
|
if (windowLeft + Math.Abs(screenLeft) == screenWidth - showMarginWidth)
|
||||||
{
|
{
|
||||||
isHide = false;
|
IS_HIDE = false;
|
||||||
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - windowWidth, Window.LeftProperty, HideType.RIGHT_SHOW);
|
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - windowWidth, Window.LeftProperty, HideType.RIGHT_SHOW);
|
||||||
FadeAnimation(0, 1);
|
FadeAnimation(0, 1);
|
||||||
return;
|
return;
|
||||||
@@ -154,64 +155,57 @@ namespace GeekDesk.Util
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public void TimerSet()
|
public static void StartHide()
|
||||||
{
|
{
|
||||||
if (timer != null) return;
|
IS_RUN = true;
|
||||||
timer = new Timer();//添加timer计时器,隐藏功能
|
|
||||||
#region 计时器设置,隐藏功能
|
|
||||||
timer.Interval = taskTime;
|
|
||||||
timer.Tick += TimerDealy;
|
|
||||||
timer.Start();
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TimerStop()
|
public static void StopHide()
|
||||||
{
|
{
|
||||||
if (timer == null) return;
|
IS_RUN = false;
|
||||||
timer.Stop();
|
|
||||||
timer.Dispose();
|
|
||||||
timer = null;
|
|
||||||
//功能关闭 如果界面是隐藏状态 那么要显示界面 ↓
|
//功能关闭 如果界面是隐藏状态 那么要显示界面 ↓
|
||||||
|
if (IS_HIDE)
|
||||||
double screenLeft = SystemParameters.VirtualScreenLeft;
|
|
||||||
double screenTop = SystemParameters.VirtualScreenTop;
|
|
||||||
double screenWidth = SystemParameters.VirtualScreenWidth;
|
|
||||||
|
|
||||||
double windowWidth = window.Width;
|
|
||||||
|
|
||||||
double windowTop = window.Top;
|
|
||||||
double windowLeft = window.Left;
|
|
||||||
|
|
||||||
//左侧显示
|
|
||||||
if (windowLeft <= screenLeft - showMarginWidth)
|
|
||||||
{
|
{
|
||||||
isHide = false;
|
double screenLeft = SystemParameters.VirtualScreenLeft;
|
||||||
FadeAnimation(0, 1);
|
double screenTop = SystemParameters.VirtualScreenTop;
|
||||||
HideAnimation(windowLeft, screenLeft, Window.LeftProperty, HideType.LEFT_SHOW);
|
double screenWidth = SystemParameters.VirtualScreenWidth;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//上方显示
|
double windowWidth = window.Width;
|
||||||
if (windowTop <= screenTop - showMarginWidth)
|
|
||||||
{
|
|
||||||
isHide = false;
|
|
||||||
FadeAnimation(0, 1);
|
|
||||||
HideAnimation(windowTop, screenTop, Window.TopProperty, HideType.TOP_SHOW);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//右侧显示
|
double windowTop = window.Top;
|
||||||
if (windowLeft + Math.Abs(screenLeft) == screenWidth - showMarginWidth)
|
double windowLeft = window.Left;
|
||||||
{
|
|
||||||
isHide = false;
|
//左侧显示
|
||||||
FadeAnimation(0, 1);
|
if (windowLeft <= screenLeft - showMarginWidth)
|
||||||
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - windowWidth, Window.LeftProperty, HideType.RIGHT_SHOW);
|
{
|
||||||
return;
|
IS_HIDE = false;
|
||||||
|
FadeAnimation(0, 1);
|
||||||
|
HideAnimation(windowLeft, screenLeft, Window.LeftProperty, HideType.LEFT_SHOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//上方显示
|
||||||
|
if (windowTop <= screenTop - showMarginWidth)
|
||||||
|
{
|
||||||
|
IS_HIDE = false;
|
||||||
|
FadeAnimation(0, 1);
|
||||||
|
HideAnimation(windowTop, screenTop, Window.TopProperty, HideType.TOP_SHOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//右侧显示
|
||||||
|
if (windowLeft + Math.Abs(screenLeft) == screenWidth - showMarginWidth)
|
||||||
|
{
|
||||||
|
IS_HIDE = false;
|
||||||
|
FadeAnimation(0, 1);
|
||||||
|
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - windowWidth, Window.LeftProperty, HideType.RIGHT_SHOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void HideAnimation(double from, double to, DependencyProperty property, HideType hideType)
|
private static void HideAnimation(double from, double to, DependencyProperty property, HideType hideType)
|
||||||
{
|
{
|
||||||
|
|
||||||
double toTemp = to;
|
double toTemp = to;
|
||||||
@@ -261,7 +255,7 @@ namespace GeekDesk.Util
|
|||||||
window.BeginAnimation(property, da);
|
window.BeginAnimation(property, da);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FadeAnimation(double from, double to)
|
private static void FadeAnimation(double from, double to)
|
||||||
{
|
{
|
||||||
double time;
|
double time;
|
||||||
if (to == 0D)
|
if (to == 0D)
|
||||||
|
|||||||
Reference in New Issue
Block a user