Remove NativeMenuItemToggleType and NativeMenuBar.EnableMenuItemClickForwarding (#20577)
* Remove NativeMenuItemToggleType * Remove NativeMenuBar.EnableMenuItemClickForwarding * Update API suppressions
This commit is contained in:
committed by
GitHub
parent
4c3c9aa99f
commit
806193a43d
@@ -31,6 +31,12 @@
|
|||||||
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Base.dll</Left>
|
||||||
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
|
||||||
</Suppression>
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0001</DiagnosticId>
|
||||||
|
<Target>T:Avalonia.Controls.NativeMenuItemToggleType</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
<Suppression>
|
<Suppression>
|
||||||
<DiagnosticId>CP0001</DiagnosticId>
|
<DiagnosticId>CP0001</DiagnosticId>
|
||||||
<Target>T:Avalonia.Controls.Primitives.IScrollable</Target>
|
<Target>T:Avalonia.Controls.Primitives.IScrollable</Target>
|
||||||
@@ -73,6 +79,12 @@
|
|||||||
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
|
||||||
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
|
||||||
</Suppression>
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0001</DiagnosticId>
|
||||||
|
<Target>T:Avalonia.Controls.NativeMenuItemToggleType</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
<Suppression>
|
<Suppression>
|
||||||
<DiagnosticId>CP0001</DiagnosticId>
|
<DiagnosticId>CP0001</DiagnosticId>
|
||||||
<Target>T:Avalonia.Controls.Primitives.IScrollable</Target>
|
<Target>T:Avalonia.Controls.Primitives.IScrollable</Target>
|
||||||
@@ -283,6 +295,18 @@
|
|||||||
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
||||||
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
||||||
</Suppression>
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>F:Avalonia.Controls.NativeMenuBar.EnableMenuItemClickForwardingProperty</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>F:Avalonia.Controls.NativeMenuItem.ToggleTypeProperty</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
<Suppression>
|
<Suppression>
|
||||||
<DiagnosticId>CP0002</DiagnosticId>
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
<Target>F:Avalonia.Controls.TextBlock.LetterSpacingProperty</Target>
|
<Target>F:Avalonia.Controls.TextBlock.LetterSpacingProperty</Target>
|
||||||
@@ -367,6 +391,18 @@
|
|||||||
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
||||||
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
||||||
</Suppression>
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>M:Avalonia.Controls.NativeMenuBar.SetEnableMenuItemClickForwarding(Avalonia.Controls.MenuItem,System.Boolean)</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>M:Avalonia.Controls.NativeMenuItem.get_ToggleType</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net10.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
<Suppression>
|
<Suppression>
|
||||||
<DiagnosticId>CP0002</DiagnosticId>
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
<Target>M:Avalonia.Controls.Primitives.TextSearch.GetText(Avalonia.Controls.Control)</Target>
|
<Target>M:Avalonia.Controls.Primitives.TextSearch.GetText(Avalonia.Controls.Control)</Target>
|
||||||
@@ -649,6 +685,18 @@
|
|||||||
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
||||||
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||||
</Suppression>
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>F:Avalonia.Controls.NativeMenuBar.EnableMenuItemClickForwardingProperty</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>F:Avalonia.Controls.NativeMenuItem.ToggleTypeProperty</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
<Suppression>
|
<Suppression>
|
||||||
<DiagnosticId>CP0002</DiagnosticId>
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
<Target>F:Avalonia.Controls.TextBlock.LetterSpacingProperty</Target>
|
<Target>F:Avalonia.Controls.TextBlock.LetterSpacingProperty</Target>
|
||||||
@@ -733,6 +781,18 @@
|
|||||||
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
||||||
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||||
</Suppression>
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>M:Avalonia.Controls.NativeMenuBar.SetEnableMenuItemClickForwarding(Avalonia.Controls.MenuItem,System.Boolean)</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
|
<Suppression>
|
||||||
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
|
<Target>M:Avalonia.Controls.NativeMenuItem.get_ToggleType</Target>
|
||||||
|
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll</Left>
|
||||||
|
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||||
|
</Suppression>
|
||||||
<Suppression>
|
<Suppression>
|
||||||
<DiagnosticId>CP0002</DiagnosticId>
|
<DiagnosticId>CP0002</DiagnosticId>
|
||||||
<Target>M:Avalonia.Controls.Primitives.TextSearch.GetText(Avalonia.Controls.Control)</Target>
|
<Target>M:Avalonia.Controls.Primitives.TextSearch.GetText(Avalonia.Controls.Control)</Target>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace IntegrationTestApp
|
|||||||
{
|
{
|
||||||
Header = (string?)page.Name,
|
Header = (string?)page.Name,
|
||||||
ToolTip = $"Tip:{(string?)page.Name}",
|
ToolTip = $"Tip:{(string?)page.Name}",
|
||||||
ToggleType = NativeMenuItemToggleType.Radio,
|
ToggleType = MenuItemToggleType.Radio
|
||||||
};
|
};
|
||||||
|
|
||||||
menuItem.Click += (_, _) =>
|
menuItem.Click += (_, _) =>
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ using Avalonia.Controls.Metadata;
|
|||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Controls.Templates;
|
using Avalonia.Controls.Templates;
|
||||||
using Avalonia.Data;
|
using Avalonia.Data;
|
||||||
using Avalonia.Interactivity;
|
|
||||||
using Avalonia.Metadata;
|
|
||||||
using Avalonia.Reactive;
|
using Avalonia.Reactive;
|
||||||
using Avalonia.VisualTree;
|
using Avalonia.VisualTree;
|
||||||
|
|
||||||
@@ -13,25 +11,11 @@ namespace Avalonia.Controls
|
|||||||
[TemplatePart("PART_NativeMenuPresenter", typeof(MenuBase))]
|
[TemplatePart("PART_NativeMenuPresenter", typeof(MenuBase))]
|
||||||
public class NativeMenuBar : TemplatedControl
|
public class NativeMenuBar : TemplatedControl
|
||||||
{
|
{
|
||||||
[Unstable("To be removed in 12.0, NativeMenuBar now has a default template")] // TODO12
|
|
||||||
public static readonly AttachedProperty<bool> EnableMenuItemClickForwardingProperty =
|
|
||||||
AvaloniaProperty.RegisterAttached<NativeMenuBar, MenuItem, bool>(
|
|
||||||
"EnableMenuItemClickForwarding");
|
|
||||||
|
|
||||||
private MenuBase? _menu;
|
private MenuBase? _menu;
|
||||||
private IDisposable? _subscriptions;
|
private IDisposable? _subscriptions;
|
||||||
|
|
||||||
static NativeMenuBar()
|
static NativeMenuBar()
|
||||||
{
|
{
|
||||||
EnableMenuItemClickForwardingProperty.Changed.Subscribe(args =>
|
|
||||||
{
|
|
||||||
var item = (MenuItem)args.Sender;
|
|
||||||
if (args.NewValue.GetValueOrDefault<bool>())
|
|
||||||
item.Click += OnMenuItemClick;
|
|
||||||
else
|
|
||||||
item.Click -= OnMenuItemClick;
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO12 Ideally we should make NativeMenuBar inherit MenuBase directly, but it would be a breaking change for 11.x.
|
// TODO12 Ideally we should make NativeMenuBar inherit MenuBase directly, but it would be a breaking change for 11.x.
|
||||||
// Changing default template while keeping old StyleKeyOverride => Menu isn't a breaking change.
|
// Changing default template while keeping old StyleKeyOverride => Menu isn't a breaking change.
|
||||||
TemplateProperty.OverrideDefaultValue<NativeMenuBar>(new FuncControlTemplate((_, ns) => new NativeMenuBarPresenter
|
TemplateProperty.OverrideDefaultValue<NativeMenuBar>(new FuncControlTemplate((_, ns) => new NativeMenuBarPresenter
|
||||||
@@ -77,17 +61,6 @@ namespace Avalonia.Controls
|
|||||||
_subscriptions = null;
|
_subscriptions = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Unstable("To be removed in 12.0, NativeMenuBar now has a default template.")] // TODO12
|
|
||||||
public static void SetEnableMenuItemClickForwarding(MenuItem menuItem, bool enable)
|
|
||||||
{
|
|
||||||
menuItem.SetValue(EnableMenuItemClickForwardingProperty, enable);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void OnMenuItemClick(object? sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
(((MenuItem)sender!).DataContext as INativeMenuItemExporterEventsImplBridge)?.RaiseClicked();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SubscribeToToplevel(TopLevel topLevel, MenuBase menu)
|
private void SubscribeToToplevel(TopLevel topLevel, MenuBase menu)
|
||||||
{
|
{
|
||||||
_subscriptions?.Dispose();
|
_subscriptions?.Dispose();
|
||||||
|
|||||||
@@ -32,9 +32,7 @@ internal class NativeMenuBarPresenter : Menu
|
|||||||
[!MenuItem.CommandParameterProperty] =
|
[!MenuItem.CommandParameterProperty] =
|
||||||
nativeItem.GetObservable(NativeMenuItem.CommandParameterProperty).ToBinding(),
|
nativeItem.GetObservable(NativeMenuItem.CommandParameterProperty).ToBinding(),
|
||||||
[!MenuItem.InputGestureProperty] = nativeItem.GetObservable(NativeMenuItem.GestureProperty).ToBinding(),
|
[!MenuItem.InputGestureProperty] = nativeItem.GetObservable(NativeMenuItem.GestureProperty).ToBinding(),
|
||||||
[!MenuItem.ToggleTypeProperty] = nativeItem.GetObservable(NativeMenuItem.ToggleTypeProperty)
|
[!MenuItem.ToggleTypeProperty] = nativeItem.GetObservable(NativeMenuItem.ToggleTypeProperty).ToBinding(),
|
||||||
// TODO12 remove NativeMenuItemToggleType
|
|
||||||
.Select(v => (MenuItemToggleType)v).ToBinding(),
|
|
||||||
[!ToolTip.TipProperty] =
|
[!ToolTip.TipProperty] =
|
||||||
nativeItem.GetObservable(NativeMenuItem.ToolTipProperty).ToBinding(),
|
nativeItem.GetObservable(NativeMenuItem.ToolTipProperty).ToBinding(),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -119,11 +119,11 @@ namespace Avalonia.Controls
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc cref="MenuItem.ToggleTypeProperty"/>
|
/// <inheritdoc cref="MenuItem.ToggleTypeProperty"/>
|
||||||
public static readonly StyledProperty<NativeMenuItemToggleType> ToggleTypeProperty =
|
public static readonly StyledProperty<MenuItemToggleType> ToggleTypeProperty =
|
||||||
AvaloniaProperty.Register<NativeMenuItem, NativeMenuItemToggleType>(nameof(ToggleType));
|
AvaloniaProperty.Register<NativeMenuItem, MenuItemToggleType>(nameof(ToggleType));
|
||||||
|
|
||||||
/// <inheritdoc cref="MenuItem.ToggleType"/>
|
/// <inheritdoc cref="MenuItem.ToggleType"/>
|
||||||
public NativeMenuItemToggleType ToggleType
|
public MenuItemToggleType ToggleType
|
||||||
{
|
{
|
||||||
get => GetValue(ToggleTypeProperty);
|
get => GetValue(ToggleTypeProperty);
|
||||||
set => SetValue(ToggleTypeProperty, value);
|
set => SetValue(ToggleTypeProperty, value);
|
||||||
@@ -232,12 +232,4 @@ namespace Avalonia.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO12: remove this enum and use MenuItemToggleType only
|
|
||||||
public enum NativeMenuItemToggleType
|
|
||||||
{
|
|
||||||
None = MenuItemToggleType.None,
|
|
||||||
CheckBox = MenuItemToggleType.CheckBox,
|
|
||||||
Radio = MenuItemToggleType.Radio
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -260,13 +260,13 @@ namespace Avalonia.FreeDesktop
|
|||||||
|
|
||||||
if (name == "toggle-type")
|
if (name == "toggle-type")
|
||||||
{
|
{
|
||||||
if (item.ToggleType == NativeMenuItemToggleType.CheckBox)
|
if (item.ToggleType == MenuItemToggleType.CheckBox)
|
||||||
return VariantValue.String("checkmark");
|
return VariantValue.String("checkmark");
|
||||||
if (item.ToggleType == NativeMenuItemToggleType.Radio)
|
if (item.ToggleType == MenuItemToggleType.Radio)
|
||||||
return VariantValue.String("radio");
|
return VariantValue.String("radio");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name == "toggle-state" && item.ToggleType != NativeMenuItemToggleType.None)
|
if (name == "toggle-state" && item.ToggleType != MenuItemToggleType.None)
|
||||||
return VariantValue.Int32(item.IsChecked ? 1 : 0);
|
return VariantValue.Int32(item.IsChecked ? 1 : 0);
|
||||||
|
|
||||||
if (name == "icon-data")
|
if (name == "icon-data")
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace Avalonia.Native.Interop.Impl
|
|||||||
private void UpdateIsVisible(bool isVisible) => SetIsVisible(isVisible.AsComBool());
|
private void UpdateIsVisible(bool isVisible) => SetIsVisible(isVisible.AsComBool());
|
||||||
private void UpdateIsChecked(bool isChecked) => SetIsChecked(isChecked.AsComBool());
|
private void UpdateIsChecked(bool isChecked) => SetIsChecked(isChecked.AsComBool());
|
||||||
|
|
||||||
private void UpdateToggleType(NativeMenuItemToggleType toggleType)
|
private void UpdateToggleType(MenuItemToggleType toggleType)
|
||||||
{
|
{
|
||||||
SetToggleType((AvnMenuItemToggleType)toggleType);
|
SetToggleType((AvnMenuItemToggleType)toggleType);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user