1
0
Эх сурвалжийг харах

Merge branch 'master' into refactor/remove-property-initialized

Dariusz Komosiński 5 жил өмнө
parent
commit
ae11a1154d

+ 6 - 1
native/Avalonia.Native/src/OSX/window.mm

@@ -805,7 +805,12 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
         [self removeTrackingArea:_area];
         _area = nullptr;
     }
-    
+
+    if (_parent == nullptr)
+    {
+        return;
+    }
+
     NSRect rect = NSZeroRect;
     rect.size = newSize;
     

+ 2 - 0
readme.md

@@ -16,6 +16,8 @@
 |---|---|---|
 | <a href='https://youtu.be/wHcB3sGLVYg'><img width='300' src='http://avaloniaui.net/images/screen.png'></a> | <a href='https://www.youtube.com/watch?t=28&v=c_AB_XSILp0' target='_blank'><img width='300' src='http://avaloniaui.net/images/avalonia-video.png'></a> | <a href='https://www.youtube.com/watch?v=NJ9-hnmUbBM' target='_blank'><img width='300' src='https://i.ytimg.com/vi/NJ9-hnmUbBM/hqdefault.jpg'></a> |
 
+[Awesome Avalonia](https://github.com/AvaloniaCommunity/awesome-avalonia) is curated list of awesome Avalonia UI tools, libraries, projects and resources.
+
 ## Getting Started
 
 Avalonia [Visual Studio Extension](https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaforVisualStudio) contains project and control templates that will help you get started. After installing it, open "New Project" dialog in Visual Studio, choose "Avalonia" in "Visual C#" section, select "Avalonia .NET Core Application" and press OK (<a href="http://avaloniaui.net/docs/quickstart/images/new-project-dialog.png">screenshot</a>). Now you can write code and markup that will work on multiple platforms!

+ 16 - 16
src/Avalonia.Controls.DataGrid/DataGrid.cs

@@ -2474,25 +2474,25 @@ namespace Avalonia.Controls
 
         internal bool ProcessDownKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessDownKeyInternal(shift, ctrl);
         }
 
         internal bool ProcessEndKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessEndKey(shift, ctrl);
         }
 
         internal bool ProcessEnterKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessEnterKey(shift, ctrl);
         }
 
         internal bool ProcessHomeKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessHomeKey(shift, ctrl);
         }
 
@@ -2532,25 +2532,25 @@ namespace Avalonia.Controls
 
         internal bool ProcessLeftKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessLeftKey(shift, ctrl);
         }
 
         internal bool ProcessNextKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessNextKey(shift, ctrl);
         }
 
         internal bool ProcessPriorKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessPriorKey(shift, ctrl);
         }
 
         internal bool ProcessRightKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessRightKey(shift, ctrl);
         }
 
@@ -2668,7 +2668,7 @@ namespace Avalonia.Controls
 
         internal bool ProcessUpKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessUpKey(shift, ctrl);
         }
 
@@ -2936,7 +2936,7 @@ namespace Avalonia.Controls
         //TODO: Ensure left button is checked for
         internal bool UpdateStateOnMouseLeftButtonDown(PointerPressedEventArgs pointerPressedEventArgs, int columnIndex, int slot, bool allowEdit)
         {
-            KeyboardHelper.GetMetaKeyState(pointerPressedEventArgs.InputModifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(pointerPressedEventArgs.KeyModifiers, out bool ctrl, out bool shift);
             return UpdateStateOnMouseLeftButtonDown(pointerPressedEventArgs, columnIndex, slot, allowEdit, shift, ctrl);
         }
 
@@ -4378,7 +4378,7 @@ namespace Avalonia.Controls
 
         private bool ProcessAKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift, out bool alt);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift, out bool alt);
 
             if (ctrl && !shift && !alt && SelectionMode == DataGridSelectionMode.Extended)
             {
@@ -4444,10 +4444,10 @@ namespace Avalonia.Controls
                     return ProcessAKey(e);
 
                 case Key.C:
-                    return ProcessCopyKey(e.Modifiers);
+                    return ProcessCopyKey(e.KeyModifiers);
 
                 case Key.Insert:
-                    return ProcessCopyKey(e.Modifiers);
+                    return ProcessCopyKey(e.KeyModifiers);
             }
             if (focusDataGrid)
             {
@@ -4646,7 +4646,7 @@ namespace Avalonia.Controls
 
         private bool ProcessF2Key(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
 
             if (!shift && !ctrl &&
                 _editingColumnIndex == -1 && CurrentColumnIndex != -1 && GetRowSelection(CurrentSlot) &&
@@ -5003,7 +5003,7 @@ namespace Avalonia.Controls
 
         private bool ProcessTabKey(KeyEventArgs e)
         {
-            KeyboardHelper.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            KeyboardHelper.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
             return ProcessTabKey(e, shift, ctrl);
         }
 
@@ -5789,7 +5789,7 @@ namespace Avalonia.Controls
         /// to the Clipboard as text.
         /// </summary>
         /// <returns>Whether or not the DataGrid handled the key press.</returns>
-        private bool ProcessCopyKey(InputModifiers modifiers)
+        private bool ProcessCopyKey(KeyModifiers modifiers)
         {
             KeyboardHelper.GetMetaKeyState(modifiers, out bool ctrl, out bool shift, out bool alt);
 

+ 8 - 8
src/Avalonia.Controls.DataGrid/DataGridColumnHeader.cs

@@ -190,28 +190,28 @@ namespace Avalonia.Controls
             }
         }
 
-        internal void OnMouseLeftButtonUp_Click(InputModifiers inputModifiers, ref bool handled)
+        internal void OnMouseLeftButtonUp_Click(KeyModifiers keyModifiers, ref bool handled)
         {
             // completed a click without dragging, so we're sorting
-            InvokeProcessSort(inputModifiers);
+            InvokeProcessSort(keyModifiers);
             handled = true;
         } 
 
-        internal void InvokeProcessSort(InputModifiers inputModifiers)
+        internal void InvokeProcessSort(KeyModifiers keyModifiers)
         {
             Debug.Assert(OwningGrid != null);
-            if (OwningGrid.WaitForLostFocus(() => InvokeProcessSort(inputModifiers)))
+            if (OwningGrid.WaitForLostFocus(() => InvokeProcessSort(keyModifiers)))
             {
                 return;
             }
             if (OwningGrid.CommitEdit(DataGridEditingUnit.Row, exitEditingMode: true))
             {
-                Avalonia.Threading.Dispatcher.UIThread.Post(() => ProcessSort(inputModifiers));
+                Avalonia.Threading.Dispatcher.UIThread.Post(() => ProcessSort(keyModifiers));
             }
         } 
 
         //TODO GroupSorting
-        internal void ProcessSort(InputModifiers inputModifiers)
+        internal void ProcessSort(KeyModifiers keyModifiers)
         {
             // if we can sort:
             //  - DataConnection.AllowSort is true, and
@@ -233,7 +233,7 @@ namespace Avalonia.Controls
 
                 DataGridSortDescription newSort;
 
-                KeyboardHelper.GetMetaKeyState(inputModifiers, out bool ctrl, out bool shift);
+                KeyboardHelper.GetMetaKeyState(keyModifiers, out bool ctrl, out bool shift);
 
                 DataGridSortDescription sort = OwningColumn.GetSortDescription();
                 IDataGridCollectionView collectionView = owningGrid.DataConnection.CollectionView;
@@ -371,7 +371,7 @@ namespace Avalonia.Controls
             {
                 if (_dragMode == DragMode.MouseDown)
                 {
-                   OnMouseLeftButtonUp_Click(args.InputModifiers, ref handled);
+                   OnMouseLeftButtonUp_Click(args.KeyModifiers, ref handled);
                 }
                 else if (_dragMode == DragMode.Reorder)
                 {

+ 8 - 7
src/Avalonia.Controls.DataGrid/Utils/KeyboardHelper.cs

@@ -9,16 +9,17 @@ namespace Avalonia.Controls.Utils
 {
     internal static class KeyboardHelper
     {
-        public static void GetMetaKeyState(InputModifiers modifiers, out bool ctrl, out bool shift)
+        public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrl, out bool shift)
         {
-            ctrl = (modifiers & InputModifiers.Control) == InputModifiers.Control;
-            shift = (modifiers & InputModifiers.Shift) == InputModifiers.Shift;
+            ctrl = (modifiers & KeyModifiers.Control) == KeyModifiers.Control;
+            shift = (modifiers & KeyModifiers.Shift) == KeyModifiers.Shift;
         }
-        public static void GetMetaKeyState(InputModifiers modifiers, out bool ctrl, out bool shift, out bool alt)
+
+        public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrl, out bool shift, out bool alt)
         {
-            ctrl = (modifiers & InputModifiers.Control) == InputModifiers.Control;
-            shift = (modifiers & InputModifiers.Shift) == InputModifiers.Shift;
-            alt = (modifiers & InputModifiers.Alt) == InputModifiers.Alt;
+            ctrl = (modifiers & KeyModifiers.Control) == KeyModifiers.Control;
+            shift = (modifiers & KeyModifiers.Shift) == KeyModifiers.Shift;
+            alt = (modifiers & KeyModifiers.Alt) == KeyModifiers.Alt;
         }
     }
 }

+ 2 - 2
src/Avalonia.Controls/Calendar/Calendar.cs

@@ -1575,7 +1575,7 @@ namespace Avalonia.Controls
             base.OnPointerWheelChanged(e);
             if (!e.Handled)
             {
-                CalendarExtensions.GetMetaKeyState(e.InputModifiers, out bool ctrl, out bool shift);
+                CalendarExtensions.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
 
                 if (!ctrl)
                 {
@@ -1631,7 +1631,7 @@ namespace Avalonia.Controls
             // Some keys (e.g. Left/Right) need to be translated in RightToLeft mode
             Key invariantKey = e.Key;  //InteractionHelper.GetLogicalKey(FlowDirection, e.Key);
 
-            CalendarExtensions.GetMetaKeyState(e.Modifiers, out bool ctrl, out bool shift);
+            CalendarExtensions.GetMetaKeyState(e.KeyModifiers, out bool ctrl, out bool shift);
 
             switch (invariantKey)
             {

+ 3 - 3
src/Avalonia.Controls/Calendar/CalendarExtensions.cs

@@ -9,10 +9,10 @@ namespace Avalonia.Controls.Primitives
 {
     internal static class CalendarExtensions
     {
-        public static void GetMetaKeyState(InputModifiers modifiers, out bool ctrl, out bool shift)
+        public static void GetMetaKeyState(KeyModifiers modifiers, out bool ctrl, out bool shift)
         {
-            ctrl = (modifiers & InputModifiers.Control) == InputModifiers.Control;
-            shift = (modifiers & InputModifiers.Shift) == InputModifiers.Shift;
+            ctrl = (modifiers & KeyModifiers.Control) == KeyModifiers.Control;
+            shift = (modifiers & KeyModifiers.Shift) == KeyModifiers.Shift;
         }
     }
 }

+ 1 - 1
src/Avalonia.Controls/Calendar/CalendarItem.cs

@@ -958,7 +958,7 @@ namespace Avalonia.Controls.Primitives
                 }
 
                 bool ctrl, shift;
-                CalendarExtensions.GetMetaKeyState(e.InputModifiers, out ctrl, out shift);
+                CalendarExtensions.GetMetaKeyState(e.KeyModifiers, out ctrl, out shift);
                 CalendarDayButton b = sender as CalendarDayButton;
 
                 if (b != null)

+ 1 - 1
src/Avalonia.Controls/Calendar/DatePicker.cs

@@ -1008,7 +1008,7 @@ namespace Avalonia.Controls
                     }
                 case Key.Down:
                     { 
-                        if ((e.Modifiers & InputModifiers.Control) == InputModifiers.Control)
+                        if ((e.KeyModifiers & KeyModifiers.Control) == KeyModifiers.Control)
                         {
                             HandlePopUp();
                             return true;

+ 1 - 1
src/Avalonia.Controls/ComboBox.cs

@@ -130,7 +130,7 @@ namespace Avalonia.Controls
                 return;
 
             if (e.Key == Key.F4 ||
-                ((e.Key == Key.Down || e.Key == Key.Up) && ((e.Modifiers & InputModifiers.Alt) != 0)))
+                ((e.Key == Key.Down || e.Key == Key.Up) && ((e.KeyModifiers & KeyModifiers.Alt) != 0)))
             {
                 IsDropDownOpen = !IsDropDownOpen;
                 e.Handled = true;

+ 1 - 1
src/Avalonia.Controls/Utils/SelectingItemsControlSelectionAdapter.cs

@@ -261,7 +261,7 @@ namespace Avalonia.Controls.Utils
                     break;
 
                 case Key.Down:
-                    if ((e.Modifiers & InputModifiers.Alt) == InputModifiers.None)
+                    if ((e.KeyModifiers & KeyModifiers.Alt) == KeyModifiers.None)
                     {
                         SelectedIndexIncrement();
                         e.Handled = true;

+ 1 - 1
src/Avalonia.Input/KeyboardNavigationHandler.cs

@@ -124,7 +124,7 @@ namespace Avalonia.Input
 
             if (current != null && e.Key == Key.Tab)
             {
-                var direction = (e.Modifiers & InputModifiers.Shift) == 0 ?
+                var direction = (e.KeyModifiers & KeyModifiers.Shift) == 0 ?
                     NavigationDirection.Next : NavigationDirection.Previous;
                 Move(current, direction, e.Modifiers);
                 e.Handled = true;

+ 3 - 0
src/Avalonia.Themes.Default/ComboBox.xaml

@@ -58,4 +58,7 @@
   <Style Selector="ComboBox:pointerover /template/ Border#border">
     <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderHighBrush}"/>
   </Style>
+    <Style Selector="ComboBox:disabled /template/ Border#border">
+        <Setter Property="Opacity" Value="{DynamicResource ThemeDisabledOpacity}" />
+    </Style>
 </Styles>

+ 8 - 3
src/Avalonia.Themes.Default/ListBox.xaml

@@ -1,4 +1,5 @@
-<Style xmlns="https://github.com/avaloniaui" Selector="ListBox">
+<Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+    <Style Selector="ListBox">
   <Setter Property="Background" Value="{DynamicResource ThemeBackgroundBrush}"/>
   <Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderMidBrush}"/>
   <Setter Property="BorderThickness" Value="{DynamicResource ThemeBorderThickness}"/>
@@ -7,7 +8,7 @@
   <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
   <Setter Property="Template">
     <ControlTemplate>
-      <Border BorderBrush="{TemplateBinding BorderBrush}"
+      <Border Name="border" BorderBrush="{TemplateBinding BorderBrush}"
               BorderThickness="{TemplateBinding BorderThickness}">
         <ScrollViewer Name="PART_ScrollViewer"
                       Background="{TemplateBinding Background}"
@@ -23,4 +24,8 @@
       </Border>
     </ControlTemplate>
   </Setter>
-</Style>
+    </Style>
+    <Style Selector="ListBox:disabled /template/ Border#border">
+        <Setter Property="Opacity" Value="{DynamicResource ThemeDisabledOpacity}" />
+    </Style>
+</Styles>

+ 6 - 3
src/Avalonia.Themes.Default/Slider.xaml

@@ -4,7 +4,7 @@
     <Setter Property="MinHeight" Value="20"/>
     <Setter Property="Template">
       <ControlTemplate>
-        <Grid>
+        <Grid Name="grid">
           <Grid.RowDefinitions>
             <RowDefinition Height="Auto"/>
             <RowDefinition Height="Auto" MinHeight="20"/>
@@ -20,7 +20,7 @@
                <RepeatButton Name="PART_IncreaseButton"
                              Classes="repeattrack" />
             </Track.IncreaseButton>
-            <Thumb MinWidth="20" MinHeight="20">
+            <Thumb Name="thumb" MinWidth="20" MinHeight="20">
               <Thumb.Template>
                 <ControlTemplate>
                   <Grid>
@@ -55,7 +55,7 @@
                <RepeatButton Name="PART_IncreaseButton"
                              Classes="repeattrack" />
             </Track.IncreaseButton>
-            <Thumb MinWidth="20" MinHeight="20">
+            <Thumb Name="thumb" MinWidth="20" MinHeight="20">
               <Thumb.Template>
                 <ControlTemplate>
                   <Grid>
@@ -87,4 +87,7 @@
         </ControlTemplate>
     </Setter>
   </Style>
+    <Style Selector="Slider:disabled /template/ Grid#grid">
+        <Setter Property="Opacity" Value="{DynamicResource ThemeDisabledOpacity}" />
+    </Style>
 </Styles>

+ 3 - 0
src/Avalonia.Themes.Default/TextBox.xaml

@@ -70,4 +70,7 @@
   <Style Selector="TextBox">
     <Setter Property="Cursor" Value="IBeam" />
   </Style>
+    <Style Selector="TextBox:disabled /template/ Border#border">
+        <Setter Property="Opacity" Value="{DynamicResource ThemeDisabledOpacity}" />
+    </Style>
 </Styles>