From 0116bac346ef923f13830bb0869d7c8c41f51b5d Mon Sep 17 00:00:00 2001 From: Robert Date: Mon, 3 Apr 2023 22:17:39 +0200 Subject: [PATCH] Fix node picker not opening at cursor --- .../VisualScripting/NodeScriptView.axaml.cs | 3 ++- .../Converters/JsonConverter.cs | 26 +++++++++++++++++++ .../Screens/DisplayValueNodeCustomView.axaml | 11 ++++---- 3 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 src/Artemis.VisualScripting/Converters/JsonConverter.cs diff --git a/src/Artemis.UI/Screens/VisualScripting/NodeScriptView.axaml.cs b/src/Artemis.UI/Screens/VisualScripting/NodeScriptView.axaml.cs index 1225ea76f..eed8b7c31 100644 --- a/src/Artemis.UI/Screens/VisualScripting/NodeScriptView.axaml.cs +++ b/src/Artemis.UI/Screens/VisualScripting/NodeScriptView.axaml.cs @@ -6,6 +6,7 @@ using Artemis.UI.Shared.Events; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.PanAndZoom; +using Avalonia.Controls.Primitives; using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; @@ -69,7 +70,7 @@ public partial class NodeScriptView : ReactiveUserControl if (ViewModel == null) return; - NodeScriptZoomBorder?.ContextFlyout?.ShowAt(NodeScriptZoomBorder); + ((PopupFlyoutBase?) NodeScriptZoomBorder?.ContextFlyout)?.ShowAt(NodeScriptZoomBorder, true); ViewModel.NodePickerViewModel.Position = point; } diff --git a/src/Artemis.VisualScripting/Converters/JsonConverter.cs b/src/Artemis.VisualScripting/Converters/JsonConverter.cs new file mode 100644 index 000000000..f0b9b7820 --- /dev/null +++ b/src/Artemis.VisualScripting/Converters/JsonConverter.cs @@ -0,0 +1,26 @@ +using System.Globalization; +using Artemis.Core; +using Avalonia.Data.Converters; +using Newtonsoft.Json; + +namespace Artemis.VisualScripting.Converters; + +/// +/// Converts input into . +/// +public class JsonConverter : IValueConverter +{ + /// + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + return JsonConvert.SerializeObject(value, Formatting.Indented); + } + + /// + public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value == null) + return null; + return JsonConvert.DeserializeObject(value.ToString(), targetType); + } +} \ No newline at end of file diff --git a/src/Artemis.VisualScripting/Nodes/Static/Screens/DisplayValueNodeCustomView.axaml b/src/Artemis.VisualScripting/Nodes/Static/Screens/DisplayValueNodeCustomView.axaml index 100dd461b..ba18c0cf0 100644 --- a/src/Artemis.VisualScripting/Nodes/Static/Screens/DisplayValueNodeCustomView.axaml +++ b/src/Artemis.VisualScripting/Nodes/Static/Screens/DisplayValueNodeCustomView.axaml @@ -7,12 +7,15 @@ xmlns:core="clr-namespace:Artemis.Core;assembly=Artemis.Core" xmlns:converters1="clr-namespace:Artemis.UI.Shared.Converters;assembly=Artemis.UI.Shared" xmlns:collections="clr-namespace:System.Collections;assembly=System.Runtime" + xmlns:system="clr-namespace:System;assembly=System.Runtime" + xmlns:converters="clr-namespace:Artemis.VisualScripting.Converters" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="Artemis.VisualScripting.Nodes.Static.Screens.DisplayValueNodeCustomView" x:DataType="screens:DisplayValueNodeCustomViewModel"> + @@ -44,11 +47,9 @@ - - - - - + + +