浏览代码

Fixed eye-dbl-click bug

flabbet 4 年之前
父节点
当前提交
94ba332f87

+ 4 - 1
PixiEditor/ViewModels/SubViewModels/Main/LayersViewModel.cs

@@ -127,8 +127,11 @@ namespace PixiEditor.ViewModels.SubViewModels.Main
             if (doc != null)
             {
                 var lastGroups = doc.LayerStructure.CloneGroups();
-                doc.LayerStructure.AddNewGroup($"{doc.ActiveLayer.Name} Group", doc.ActiveLayer.LayerGuid);
+                GuidStructureItem group = doc.LayerStructure.AddNewGroup($"{doc.ActiveLayer.Name} Group", doc.ActiveLayer.LayerGuid);
+
+                Owner.BitmapManager.ActiveDocument.LayerStructure.ExpandParentGroups(group);
                 doc.AddLayerStructureToUndo(lastGroups);
+                doc.RaisePropertyChange(nameof(doc.LayerStructure));
             }
         }
 

+ 1 - 1
PixiEditor/Views/UserControls/LayersManager.xaml

@@ -62,7 +62,7 @@
         </DockPanel>
         <Separator Grid.Row="1" Margin="0,-12, 0, 0" BorderBrush="{StaticResource DarkerAccentColor}" BorderThickness="2" />
         <DockPanel LastChildFill="True" Grid.Row="2" Margin="0, -12, 0, 0">
-        <TreeView DockPanel.Dock="Top" TreeViewItem.PreviewMouseLeftButtonDown="TreeView_PreviewMouseLeftButtonDown" Name="treeView" ItemsSource="{Binding LayerTreeRoot, ElementName=layersManager}"  SelectedItemChanged="TreeView_SelectedItemChanged">
+        <TreeView DockPanel.Dock="Top" Name="treeView" ItemsSource="{Binding LayerTreeRoot, ElementName=layersManager}"  SelectedItemChanged="TreeView_SelectedItemChanged">
                 <TreeView.ItemsPanel>
                     <ItemsPanelTemplate>
                         <ui:ReversedOrderStackPanel/>

+ 29 - 34
PixiEditor/Views/UserControls/LayersManager.xaml.cs

@@ -167,35 +167,16 @@ namespace PixiEditor.Views.UserControls
 
                 Layer layer = null;
 
-                if(item is Layer lr)
+                if (item is Layer lr)
                 {
                     layer = lr;
                 }
-                else if(item is LayerStructureItemContainer container)
+                else if (item is LayerStructureItemContainer container)
                 {
                     layer = container.Layer;
                 }
 
-                float oldOpacity = layer.Opacity;
-
-                var doc = LayerCommandsViewModel.Owner.BitmapManager.ActiveDocument;
-
-                layer.OpacityUndoTriggerable = val;
-
-                doc.LayerStructure.ExpandParentGroups(layer.LayerGuid);
-
-                doc.RaisePropertyChange(nameof(doc.LayerStructure));
-
-                UndoManager undoManager = doc.UndoManager;
-
-
-                undoManager.AddUndoChange(
-                    new Change(
-                        UpdateNumberInputLayerOpacityProcess,
-                        new object[] { oldOpacity },
-                        UpdateNumberInputLayerOpacityProcess,
-                        new object[] { val }));
-                undoManager.SquashUndoChanges(2);
+                HandleLayerOpacityChange(val, layer);
             }
             else if (item is LayerGroup group)
             {
@@ -207,6 +188,32 @@ namespace PixiEditor.Views.UserControls
             }
         }
 
+        private void HandleLayerOpacityChange(float val, Layer layer)
+        {
+            float oldOpacity = layer.Opacity;
+
+            var doc = LayerCommandsViewModel.Owner.BitmapManager.ActiveDocument;
+
+            doc.RaisePropertyChange(nameof(doc.LayerStructure));
+
+            layer.OpacityUndoTriggerable = val;
+
+            doc.LayerStructure.ExpandParentGroups(layer.LayerGuid);
+
+            doc.RaisePropertyChange(nameof(doc.LayerStructure));
+
+            UndoManager undoManager = doc.UndoManager;
+
+
+            undoManager.AddUndoChange(
+                new Change(
+                    UpdateNumberInputLayerOpacityProcess,
+                    new object[] { oldOpacity },
+                    UpdateNumberInputLayerOpacityProcess,
+                    new object[] { val }));
+            undoManager.SquashUndoChanges(2);
+        }
+
         private void UpdateNumberInputLayerOpacityProcess(object[] args)
         {
             if (args.Length > 0 && args[0] is float opacity)
@@ -220,18 +227,6 @@ namespace PixiEditor.Views.UserControls
             SetInputOpacity(SelectedItem);
         }
 
-        private void TreeView_PreviewMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
-        {
-            if (e.ClickCount > 1)
-            {
-                if (sender is TreeView treeView && treeView.SelectedItem is LayerGroup group)
-                {
-                    group.StructureData.IsRenaming = true;
-                    e.Handled = true;
-                }
-            }
-        }
-
         private void Grid_Drop(object sender, DragEventArgs e)
         {
             dropBorder.BorderBrush = Brushes.Transparent;