Browse Source

Moving folders work

flabbet 4 years ago
parent
commit
6af4168707

+ 1 - 1
PixiEditor/Models/DataHolders/Document/Document.Layers.cs

@@ -468,7 +468,7 @@ namespace PixiEditor.Models.DataHolders
 
             int newIndex = CalculateNewIndex(layerIndex, above, relativeIndex);
 
-            if (newIndex == relativeIndex) //FIX bad new index, it moves to wrong indexes
+            if (newIndex == relativeIndex)
             {
                 return;
             }

+ 8 - 6
PixiEditor/Models/Layers/LayerStructure.cs

@@ -46,23 +46,25 @@ namespace PixiEditor.Models.Layers
         public void MoveFolder(Guid folderGuid, GuidStructureItem? parentFolder, int newIndex)
         {
             var folder = GetFolderByGuid(folderGuid);
-            int oldIndex = folder.ActualIndex;
+            int oldFolderActualIndex = folder.ActualIndex;
+            int oldFolderDisplayIndex = folder.FolderDisplayIndex;
             bool reverseOrder = true;
 
-            int indexToApply = folder.ActualIndex;
+            int indexToApply;
+            int difference;
 
-            if (newIndex > oldIndex)
+            if (newIndex > oldFolderActualIndex)
             {
                 indexToApply = newIndex;
+                difference = indexToApply - oldFolderActualIndex;
             }
             else
             {
-                indexToApply = newIndex + folder.ActualIndex - 1;
                 reverseOrder = false;
+                difference = newIndex - oldFolderDisplayIndex;
+                indexToApply = oldFolderActualIndex + difference;
             }
 
-            int difference = indexToApply - oldIndex;
-
             MoveLayersInFolder(folder, difference, reverseOrder);
 
             folder.ActualIndex = indexToApply;