Browse Source

Fixed CalculateNewIndex

flabbet 4 years ago
parent
commit
00958eeb50
1 changed files with 7 additions and 1 deletions
  1. 7 1
      PixiEditor/Models/DataHolders/Document/Document.Layers.cs

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

@@ -635,7 +635,9 @@ namespace PixiEditor.Models.DataHolders
         {
         {
             int newIndex = layerIndex;
             int newIndex = layerIndex;
 
 
-            if ((oldIndex - layerIndex == -1 && !above) || (oldIndex - layerIndex == 1 && above))
+            int diff = newIndex - oldIndex;
+
+            if (TriesToMoveAboveBelow(above, diff) || TriesToMoveBelowAbove(above, diff) || (above && newIndex < oldIndex) || (!above && newIndex > oldIndex))
             {
             {
                 newIndex += above ? 1 : -1;
                 newIndex += above ? 1 : -1;
             }
             }
@@ -643,6 +645,10 @@ namespace PixiEditor.Models.DataHolders
             return Math.Clamp(newIndex, 0, Layers.Count - 1);
             return Math.Clamp(newIndex, 0, Layers.Count - 1);
         }
         }
 
 
+        private bool TriesToMoveAboveBelow(bool above, int diff) => above && diff == -1;
+
+        private bool TriesToMoveBelowAbove(bool above, int diff) => !above && diff == 1;
+
         private void MoveLayerInStructureProcess(object[] parameter)
         private void MoveLayerInStructureProcess(object[] parameter)
         {
         {
             Guid layer = (Guid)parameter[0];
             Guid layer = (Guid)parameter[0];