浏览代码

Merge pull request #91 from Hsxxxxxx/master

修复直接拖动新图标到菜单导致的异常
Booker 2 年之前
父节点
当前提交
f4a060eb00
共有 1 个文件被更改,包括 31 次插入2 次删除
  1. 31 2
      Control/UserControls/PannelCard/LeftCardControl.xaml.cs

+ 31 - 2
Control/UserControls/PannelCard/LeftCardControl.xaml.cs

@@ -487,15 +487,44 @@ namespace GeekDesk.Control.UserControls.PannelCard
             MyPoptip.IsOpen = false;
         }
 
+        /// <summary>
+        /// 拖动移动图标到指定菜单
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
         private void Menu_Drop(object sender, DragEventArgs e)
         {
             MyPoptip.IsOpen = false;
 
             MenuInfo mi = (sender as ListBoxItem).DataContext as MenuInfo;
             IconInfo iconInfo = (IconInfo)e.Data.GetData(typeof(IconInfo));
+            if (iconInfo != null)
+            {
+                // 将已有图标移动到该菜单
+                appData.MenuList[MenuListBox.SelectedIndex].IconList.Remove(iconInfo);
+                appData.MenuList[MenuListBox.Items.IndexOf(mi)].IconList.Add(iconInfo);
+
+            }
+            else
+            {
+                // 直接将新图标移动到该菜单
+                Array dropObject = (System.Array)e.Data.GetData(DataFormats.FileDrop);
+                if (dropObject == null) return;
+                foreach (object obj in dropObject)
+                {
+                    string path = (string)obj;
+                    iconInfo = CommonCode.GetIconInfoByPath(path);
+                    if (iconInfo == null)
+                    {
+                        LogUtil.WriteErrorLog("添加项目失败,未能获取到项目图标:" + path);
+                        break;
 
-            appData.MenuList[MenuListBox.SelectedIndex].IconList.Remove(iconInfo);
-            appData.MenuList[MenuListBox.Items.IndexOf(mi)].IconList.Add(iconInfo);
+                    }
+                    appData.MenuList[MenuListBox.Items.IndexOf(mi)].IconList.Add(iconInfo);
+                }
+                CommonCode.SortIconList();
+                CommonCode.SaveAppData(MainWindow.appData, Constants.DATA_FILE_PATH);
+            }
         }
 
         private void EncryptMenu(object sender, RoutedEventArgs e)