浏览代码

:children_crossing: 增加面板锁定功能, 防止设置为失焦关闭面板时 无法拖动项目至面板问题

liufei 3 年之前
父节点
当前提交
5d51b0dbe9

+ 6 - 0
Constant/RunTimeStatus.cs

@@ -14,6 +14,12 @@
         public static bool MARGIN_HIDE_AND_OTHER_SHOW = false;
 
 
+        /// <summary>
+        /// 是否锁定主面板 锁定后 不执行隐藏动作
+        /// </summary>
+        public static bool LOCK_APP_PANEL = false;
+
+
 
 
     }

+ 3 - 1
Control/UserControls/PannelCard/RightCardControl.xaml

@@ -58,7 +58,8 @@
                  Drop="Wrap_Drop" 
                  BorderThickness="1" 
                  Effect="{DynamicResource EffectShadow2}" 
-                 Margin="5,0,5,5" Grid.ColumnSpan="2">
+                 Margin="5,0,5,5" Grid.ColumnSpan="2"
+                 PreviewMouseRightButtonDown="WrapCard_PreviewMouseRightButtonDown">
             <hc:Card.Background>
                 <SolidColorBrush Color="AliceBlue"  hc:GeometryEffect.GeometryEffect="20" Opacity="{Binding AppConfig.CardOpacity, Mode=TwoWay, Converter={StaticResource OpcityConvert}}"/>
             </hc:Card.Background>
@@ -69,6 +70,7 @@
                 <ContextMenu Width="200">
                     <MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
                     <MenuItem Header="添加系统项目" Click="AddSystemIcon"/>
+                    <MenuItem x:Name="CardLockCM" Header="锁定主面板" Click="LockAppPanel"/>
                 </ContextMenu>
             </hc:Card.ContextMenu>
             <Grid>

+ 24 - 3
Control/UserControls/PannelCard/RightCardControl.xaml.cs

@@ -198,7 +198,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
                                     //p.StartInfo.CreateNoWindow = false; //设置显示窗口
                                     p.StartInfo.UseShellExecute = true;//不使用操作系统外壳程序启动进程
                                     //p.StartInfo.ErrorDialog = false;
-                                    if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
+                                    if (appData.AppConfig.AppHideType == AppHideType.START_EXE && !RunTimeStatus.LOCK_APP_PANEL)
                                     {
                                         //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
                                         if (appData.AppConfig.MarginHide)
@@ -216,7 +216,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
                                     }
                                     break;// c#好像不能case穿透
                                 case IconStartType.DEFAULT_STARTUP:
-                                    if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
+                                    if (appData.AppConfig.AppHideType == AppHideType.START_EXE && !RunTimeStatus.LOCK_APP_PANEL)
                                     {
                                         //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
                                         if (appData.AppConfig.MarginHide)
@@ -240,7 +240,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
                         }
                         else
                         {
-                            if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
+                            if (appData.AppConfig.AppHideType == AppHideType.START_EXE && !RunTimeStatus.LOCK_APP_PANEL)
                             {
                                 //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
                                 if (appData.AppConfig.MarginHide)
@@ -695,5 +695,26 @@ namespace GeekDesk.Control.UserControls.PannelCard
         {
             this.Cursor = Cursors.Arrow;
         }
+
+        /// <summary>
+        /// 锁定/解锁主面板
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void LockAppPanel(object sender, RoutedEventArgs e)
+        {
+            RunTimeStatus.LOCK_APP_PANEL = !RunTimeStatus.LOCK_APP_PANEL;
+        }
+
+        private void WrapCard_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            if (RunTimeStatus.LOCK_APP_PANEL)
+            {
+                CardLockCM.Header = "解锁主面板";
+            } else
+            {
+                CardLockCM.Header = "锁定主面板";
+            }
+        }
     }
 }