Browse Source

Fixed DragDropEvents handler

Krzysztof Krysiński 1 year ago
parent
commit
4e4e4a486e

+ 35 - 3
src/PixiEditor.AvaloniaUI/Helpers/ColorHelper.cs

@@ -1,5 +1,6 @@
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
 using System.Diagnostics.CodeAnalysis;
+using System.Linq;
 using System.Text.RegularExpressions;
 using System.Text.RegularExpressions;
 using Avalonia.Input;
 using Avalonia.Input;
 
 
@@ -7,11 +8,42 @@ namespace PixiEditor.AvaloniaUI.Helpers;
 
 
 public class ColorHelper
 public class ColorHelper
 {
 {
+    public const string PaletteColorDaoFormat = "PixiEditor.PaletteColor";
+
     public static bool ParseAnyFormat(IDataObject data, [NotNullWhen(true)] out DrawingApi.Core.ColorsImpl.Color? result) => 
     public static bool ParseAnyFormat(IDataObject data, [NotNullWhen(true)] out DrawingApi.Core.ColorsImpl.Color? result) => 
-        ParseAnyFormat(((DataObject)data).GetText().Trim(), out result);
+        ParseAnyFormat(GetTextFromData(data), out result);
     
     
-    public static bool ParseAnyFormatList(IDataObject data, [NotNullWhen(true)] out List<DrawingApi.Core.ColorsImpl.Color> result) => 
-        ParseAnyFormatList(((DataObject)data).GetText().Trim(), out result);
+    public static bool ParseAnyFormatList(IDataObject data, [NotNullWhen(true)] out List<DrawingApi.Core.ColorsImpl.Color> result)
+    {
+        var text = GetTextFromData(data);
+
+        if (string.IsNullOrEmpty(text))
+        {
+            result = new List<DrawingApi.Core.ColorsImpl.Color>();
+            return false;
+        }
+
+        return ParseAnyFormatList(text, out result);
+    }
+
+    private static string GetTextFromData(IDataObject data)
+    {
+        string text = "";
+        if (data.Contains(DataFormats.Text))
+        {
+            text = ((DataObject)data).GetText().Trim();
+        }
+        else
+        {
+            var formats = data.GetDataFormats().ToList();
+            if(formats.Count > 0)
+            {
+                text = ((DataObject)data).Get(formats[0]).ToString().Trim();
+            }
+        }
+
+        return text;
+    }
 
 
     public static bool ParseAnyFormat(string value, [NotNullWhen(true)] out DrawingApi.Core.ColorsImpl.Color? result)
     public static bool ParseAnyFormat(string value, [NotNullWhen(true)] out DrawingApi.Core.ColorsImpl.Color? result)
     {
     {

+ 1 - 1
src/PixiEditor.AvaloniaUI/Helpers/UI/DragDropEvents.cs

@@ -140,7 +140,7 @@ public static class DragDropEvents
     {
     {
         return (sender, args) =>
         return (sender, args) =>
         {
         {
-            if (args.Source != null && args.Source.Equals(source))
+            if (source == sender)
             {
             {
                 handler(sender, args);
                 handler(sender, args);
             }
             }

+ 1 - 1
src/PixiEditor.AvaloniaUI/ViewModels/Dock/DockFactory.cs

@@ -108,7 +108,7 @@ internal class DockFactory : Factory
         colorPickerDock = BuildColorPickerDock();
         colorPickerDock = BuildColorPickerDock();
         return new ProportionalDock()
         return new ProportionalDock()
         {
         {
-            Proportion = 0.15,
+            Proportion = 0.20,
             Orientation = Orientation.Vertical,
             Orientation = Orientation.Vertical,
             VisibleDockables = new List<IDockable>()
             VisibleDockables = new List<IDockable>()
             {
             {

+ 1 - 1
src/PixiEditor.AvaloniaUI/Views/Palettes/PaletteColorControl.axaml.cs

@@ -57,7 +57,7 @@ internal partial class PaletteColorControl : UserControl
             if (length > 10)
             if (length > 10)
             {
             {
                 DataObject data = new DataObject();
                 DataObject data = new DataObject();
-                data.Set(PaletteColorControl.PaletteColorDaoFormat, colorControl.Color.ToString());
+                data.Set(PaletteColorDaoFormat, colorControl.Color.ToString());
                 DragDrop.DoDragDrop(e, data, DragDropEffects.Move);
                 DragDrop.DoDragDrop(e, data, DragDropEffects.Move);
                 e.Handled = true;
                 e.Handled = true;
             }
             }