Browse Source

SizePicker style fixed

MaxLength added to SizePicker to prevent crashing.
tomaszkot 3 years ago
parent
commit
e9d621617c

+ 3 - 1
PixiEditor/Views/UserControls/SizeInput.xaml

@@ -40,7 +40,9 @@
                      Margin="0,0,5,0" VerticalAlignment="Center"
                      x:Name="textBox"
                      Text="{Binding Size, ElementName=uc, Converter={converters:ToolSizeToIntConverter}}"
-                     d:Text="22">
+                     d:Text="22"
+                     MaxLength = "4"
+                     >
                 <i:Interaction.Behaviors>
                     <behaviors:GlobalShortcutFocusBehavior/>
                     <behaviors:TextBoxFocusBehavior SelectOnFocus="{Binding SelectOnFocus, ElementName=uc}" NextControl="{Binding NextControl, ElementName=uc}"/>

+ 8 - 6
PixiEditor/Views/UserControls/SizePicker.xaml

@@ -7,7 +7,7 @@
              xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters"
              xmlns:enums="clr-namespace:PixiEditor.Models.Enums"
              mc:Ignorable="d"
-             d:DesignHeight="220" d:DesignWidth="290" Name="uc">
+             d:DesignHeight="220" d:DesignWidth="300" Name="uc">
     <UserControl.Resources>
         <Style TargetType="local:SizeInput">
             <Setter Property="HorizontalAlignment" Value="Left"/>
@@ -15,20 +15,22 @@
             <Setter Property="SelectOnFocus" Value="False"/>
             <Setter Property="FontSize" Value="16"/>
             <Setter Property="Margin" Value="10,0,0,0"/>
-            <Setter Property="Width" Value="150"/>
+            <Setter Property="Width" Value="130"/>
             <Setter Property="Height" Value="30"/>
         </Style>
     </UserControl.Resources>
     <DockPanel Background="{StaticResource MainColor}">
-        <DockPanel DockPanel.Dock="Top" Margin="5,10,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Center" 
+        
+       <DockPanel DockPanel.Dock="Top" Margin="5,10,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Center" 
                    Visibility="{Binding SizeUnitSelectionVisibility, ElementName=uc}">
             <StackPanel x:Name="UnitSelectionPanel" Orientation="Vertical" >
-                <StackPanel Orientation="Horizontal" >
+                <StackPanel Orientation="Horizontal" x:Name="PercentagePanel">
                     <RadioButton  x:Name="PercentageRb" 
                                   Foreground="White" 
                                   FontSize="16"
                                   GroupName="Unit"
                                   Checked="PercentageRb_Checked"
+                                  VerticalContentAlignment="Center"
                                   IsChecked="{Binding Path=SelectedUnit,  
                                               ElementName=uc, 
                                               Converter={converters:EnumBooleanConverter}, 
@@ -37,8 +39,8 @@
                                   >Percentage:</RadioButton>
                     <local:SizeInput x:Name="PercentageSizePicker"
                                     Unit="Percentage"
-                                    Width ="135"
                                     Size="{Binding Path=ChosenPercentageSize, ElementName=uc, Mode=TwoWay}" 
+                                     
                                     />
                 </StackPanel>
                 <Separator Margin="10,20,10,10" Background="{StaticResource AccentColor}" Height="1" />
@@ -47,6 +49,7 @@
                               FontSize="16"
                               GroupName="Unit"
                               Checked="AbsoluteRb_Checked"
+                              VerticalContentAlignment="Center"
                               IsChecked="{Binding Path=SelectedUnit,  
                                               ElementName=uc, 
                                               Converter={converters:EnumBooleanConverter}, 
@@ -78,7 +81,6 @@
                              NextControl="{Binding NextControl, ElementName=uc}"
                              Size="{Binding ChosenHeight, ElementName=uc, Mode=TwoWay}"
                              Unit="Pixel"
-                             IsEnabled="{Binding IsChecked, ElementName=PercentageRb}"
                              />
         </DockPanel>
         <DockPanel DockPanel.Dock="Top">

+ 8 - 1
PixiEditor/Views/UserControls/SizePicker.xaml.cs

@@ -43,8 +43,15 @@ namespace PixiEditor.Views
 
         private static void InputSizeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
         {
+            var sizePicker = d as SizePicker;
+            
             var newValue = (int)e.NewValue;
-            var newSize = SizeCalculator.CalcAbsoluteFromPercentage(newValue, new System.Drawing.Size((int)d.GetValue(ChosenWidthProperty), (int)d.GetValue(ChosenHeightProperty)));
+            var newSize = SizeCalculator.CalcAbsoluteFromPercentage(newValue, new System.Drawing.Size(sizePicker.ChosenWidth, sizePicker.ChosenHeight));
+            if (newSize.Width > sizePicker.MaxWidth || newSize.Width > sizePicker.MaxHeight)
+            {
+                newSize = new System.Drawing.Size(newSize.Width, newSize.Height);
+            }
+            
             d.SetValue(ChosenWidthProperty, newSize.Width);
             d.SetValue(ChosenHeightProperty, newSize.Height);
         }