Prechádzať zdrojové kódy

Context menu improvements

Krzysztof Krysiński 1 rok pred
rodič
commit
d8f5becd50

+ 0 - 5
src/PixiEditor.AvaloniaUI.Desktop/Program.cs

@@ -18,10 +18,5 @@ public class Program
         => AppBuilder.Configure<App>()
             .UsePlatformDetect()
             .WithInterFont()
-            /*.With(new Win32PlatformOptions()
-            {
-                RenderingMode = new[] { Win32RenderingMode.Wgl },
-                OverlayPopups = true
-            })*/
             .LogToTrace();
 }

+ 23 - 0
src/PixiEditor.AvaloniaUI/Helpers/Converters/PaletteItemsHeightConverter.cs

@@ -0,0 +1,23 @@
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Globalization;
+using System.Linq;
+using Avalonia.Controls;
+using PixiEditor.DrawingApi.Core.ColorsImpl;
+using PixiEditor.Extensions.Palettes;
+
+namespace PixiEditor.AvaloniaUI.Helpers.Converters;
+
+internal class PaletteItemsHeightConverter : SingleInstanceConverter<PaletteItemsHeightConverter>
+{
+    public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+    {
+        if (value is ItemCollection items)
+        {
+            double itemSize = 21;
+            return items.Count * itemSize;
+        }
+
+        return value;
+    }
+}

+ 1 - 1
src/PixiEditor.AvaloniaUI/Helpers/Converters/PaletteItemsToWidthConverter.cs

@@ -12,7 +12,7 @@ internal class PaletteItemsToWidthConverter : SingleInstanceConverter<PaletteIte
     {
         if (value is IList<PaletteColor> { Count: > 0 })
         {
-            return 120;
+            return 60;
         }
 
         return 0;

+ 4 - 3
src/PixiEditor.AvaloniaUI/Views/Dock/DocumentTemplate.axaml

@@ -38,14 +38,14 @@
         <viewportControls:Viewport.ContextFlyout>
             <Flyout x:CompileBindings="True" x:DataType="subViewModels:ViewportWindowViewModel" ShowMode="Transient">
                 <Border CornerRadius="{DynamicResource ControlCornerRadius}">
-                    <Grid Height="235">
+                    <Grid>
                         <Grid.ColumnDefinitions>
                             <ColumnDefinition
                                 Width="{Binding Document.Palette, Converter={converters:PaletteItemsToWidthConverter}}" />
                             <ColumnDefinition />
                         </Grid.ColumnDefinitions>
                         <Border Grid.Column="1" BorderThickness="0 0 1 0">
-                            <ContextMenu BorderBrush="Transparent" BorderThickness="0" Margin="0" Padding="0">
+                            <ContextMenu Name="ContextMenu" BorderBrush="Transparent" BorderThickness="0" Margin="0" Padding="0">
                                 <MenuItem PointerReleased="MenuItem_OnClick"
                                     ui:Translator.Key="SELECT_ALL"
                                     xaml:Menu.Command="PixiEditor.Selection.SelectAll" />
@@ -82,7 +82,8 @@
                             </ContextMenu>
                         </Border>
                         <ScrollViewer Margin="5" Grid.Column="0" HorizontalScrollBarVisibility="Disabled"
-                                      VerticalScrollBarVisibility="Auto">
+                                      VerticalScrollBarVisibility="Auto" MaxHeight="{Binding #ContextMenu.Items,
+                                      Converter={converters:PaletteItemsHeightConverter}}">
                             <ItemsControl ItemsSource="{Binding Document.Palette}">
                                 <ItemsControl.ItemsPanel>
                                     <ItemsPanelTemplate>