1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Fix node picker not opening at cursor

This commit is contained in:
Robert 2023-04-03 22:17:39 +02:00
parent 5a5a6819b1
commit 0116bac346
3 changed files with 34 additions and 6 deletions

View File

@ -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<NodeScriptViewModel>
if (ViewModel == null)
return;
NodeScriptZoomBorder?.ContextFlyout?.ShowAt(NodeScriptZoomBorder);
((PopupFlyoutBase?) NodeScriptZoomBorder?.ContextFlyout)?.ShowAt(NodeScriptZoomBorder, true);
ViewModel.NodePickerViewModel.Position = point;
}

View File

@ -0,0 +1,26 @@
using System.Globalization;
using Artemis.Core;
using Avalonia.Data.Converters;
using Newtonsoft.Json;
namespace Artemis.VisualScripting.Converters;
/// <summary>
/// Converts input into <see cref="Numeric" />.
/// </summary>
public class JsonConverter : IValueConverter
{
/// <inheritdoc />
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
return JsonConvert.SerializeObject(value, Formatting.Indented);
}
/// <inheritdoc />
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
if (value == null)
return null;
return JsonConvert.DeserializeObject(value.ToString(), targetType);
}
}

View File

@ -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">
<UserControl.Resources>
<converters1:SKColorToStringConverter x:Key="SKColorToStringConverter" />
<converters1:SKColorToColorConverter x:Key="SKColorToColorConverter" />
<converters:JsonConverter x:Key="JsonConverter" />
</UserControl.Resources>
<ContentControl Content="{CompiledBinding CurrentValue}" VerticalContentAlignment="Center">
<ContentControl.DataTemplates>
@ -44,11 +47,9 @@
<DataTemplate DataType="core:Numeric">
<TextBlock Text="{Binding}" FontFamily="Consolas"/>
</DataTemplate>
<DataTemplate DataType="collections:IList">
<TextBlock Text="{Binding Count, StringFormat='List - {0} item(s)'}" FontFamily="Consolas"/>
</DataTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontFamily="Consolas"/>
<DataTemplate DataType="system:Object">
<TextBlock Text="{Binding Converter={StaticResource JsonConverter}}" FontFamily="Consolas"/>
</DataTemplate>
</ContentControl.DataTemplates>
</ContentControl>