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>
|
||||
<Right>current/Avalonia/lib/net10.0/Avalonia.Base.dll</Right>
|
||||
</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>
|
||||
<DiagnosticId>CP0001</DiagnosticId>
|
||||
<Target>T:Avalonia.Controls.Primitives.IScrollable</Target>
|
||||
@@ -73,6 +79,12 @@
|
||||
<Left>baseline/Avalonia/lib/net8.0/Avalonia.Base.dll</Left>
|
||||
<Right>current/Avalonia/lib/net8.0/Avalonia.Base.dll</Right>
|
||||
</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>
|
||||
<DiagnosticId>CP0001</DiagnosticId>
|
||||
<Target>T:Avalonia.Controls.Primitives.IScrollable</Target>
|
||||
@@ -283,6 +295,18 @@
|
||||
<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.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>
|
||||
<DiagnosticId>CP0002</DiagnosticId>
|
||||
<Target>F:Avalonia.Controls.TextBlock.LetterSpacingProperty</Target>
|
||||
@@ -367,6 +391,18 @@
|
||||
<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.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>
|
||||
<DiagnosticId>CP0002</DiagnosticId>
|
||||
<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>
|
||||
<Right>current/Avalonia/lib/net8.0/Avalonia.Controls.dll</Right>
|
||||
</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>
|
||||
<DiagnosticId>CP0002</DiagnosticId>
|
||||
<Target>F:Avalonia.Controls.TextBlock.LetterSpacingProperty</Target>
|
||||
@@ -733,6 +781,18 @@
|
||||
<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.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>
|
||||
<DiagnosticId>CP0002</DiagnosticId>
|
||||
<Target>M:Avalonia.Controls.Primitives.TextSearch.GetText(Avalonia.Controls.Control)</Target>
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace IntegrationTestApp
|
||||
{
|
||||
Header = (string?)page.Name,
|
||||
ToolTip = $"Tip:{(string?)page.Name}",
|
||||
ToggleType = NativeMenuItemToggleType.Radio,
|
||||
ToggleType = MenuItemToggleType.Radio
|
||||
};
|
||||
|
||||
menuItem.Click += (_, _) =>
|
||||
|
||||
@@ -3,8 +3,6 @@ using Avalonia.Controls.Metadata;
|
||||
using Avalonia.Controls.Primitives;
|
||||
using Avalonia.Controls.Templates;
|
||||
using Avalonia.Data;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Metadata;
|
||||
using Avalonia.Reactive;
|
||||
using Avalonia.VisualTree;
|
||||
|
||||
@@ -13,25 +11,11 @@ namespace Avalonia.Controls
|
||||
[TemplatePart("PART_NativeMenuPresenter", typeof(MenuBase))]
|
||||
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 IDisposable? _subscriptions;
|
||||
|
||||
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.
|
||||
// Changing default template while keeping old StyleKeyOverride => Menu isn't a breaking change.
|
||||
TemplateProperty.OverrideDefaultValue<NativeMenuBar>(new FuncControlTemplate((_, ns) => new NativeMenuBarPresenter
|
||||
@@ -77,17 +61,6 @@ namespace Avalonia.Controls
|
||||
_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)
|
||||
{
|
||||
_subscriptions?.Dispose();
|
||||
|
||||
@@ -32,9 +32,7 @@ internal class NativeMenuBarPresenter : Menu
|
||||
[!MenuItem.CommandParameterProperty] =
|
||||
nativeItem.GetObservable(NativeMenuItem.CommandParameterProperty).ToBinding(),
|
||||
[!MenuItem.InputGestureProperty] = nativeItem.GetObservable(NativeMenuItem.GestureProperty).ToBinding(),
|
||||
[!MenuItem.ToggleTypeProperty] = nativeItem.GetObservable(NativeMenuItem.ToggleTypeProperty)
|
||||
// TODO12 remove NativeMenuItemToggleType
|
||||
.Select(v => (MenuItemToggleType)v).ToBinding(),
|
||||
[!MenuItem.ToggleTypeProperty] = nativeItem.GetObservable(NativeMenuItem.ToggleTypeProperty).ToBinding(),
|
||||
[!ToolTip.TipProperty] =
|
||||
nativeItem.GetObservable(NativeMenuItem.ToolTipProperty).ToBinding(),
|
||||
};
|
||||
|
||||
@@ -119,11 +119,11 @@ namespace Avalonia.Controls
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="MenuItem.ToggleTypeProperty"/>
|
||||
public static readonly StyledProperty<NativeMenuItemToggleType> ToggleTypeProperty =
|
||||
AvaloniaProperty.Register<NativeMenuItem, NativeMenuItemToggleType>(nameof(ToggleType));
|
||||
public static readonly StyledProperty<MenuItemToggleType> ToggleTypeProperty =
|
||||
AvaloniaProperty.Register<NativeMenuItem, MenuItemToggleType>(nameof(ToggleType));
|
||||
|
||||
/// <inheritdoc cref="MenuItem.ToggleType"/>
|
||||
public NativeMenuItemToggleType ToggleType
|
||||
public MenuItemToggleType ToggleType
|
||||
{
|
||||
get => GetValue(ToggleTypeProperty);
|
||||
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 (item.ToggleType == NativeMenuItemToggleType.CheckBox)
|
||||
if (item.ToggleType == MenuItemToggleType.CheckBox)
|
||||
return VariantValue.String("checkmark");
|
||||
if (item.ToggleType == NativeMenuItemToggleType.Radio)
|
||||
if (item.ToggleType == MenuItemToggleType.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);
|
||||
|
||||
if (name == "icon-data")
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Avalonia.Native.Interop.Impl
|
||||
private void UpdateIsVisible(bool isVisible) => SetIsVisible(isVisible.AsComBool());
|
||||
private void UpdateIsChecked(bool isChecked) => SetIsChecked(isChecked.AsComBool());
|
||||
|
||||
private void UpdateToggleType(NativeMenuItemToggleType toggleType)
|
||||
private void UpdateToggleType(MenuItemToggleType toggleType)
|
||||
{
|
||||
SetToggleType((AvnMenuItemToggleType)toggleType);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user