diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml
index 3858eaa6ff..275b25e01e 100644
--- a/api/Avalonia.nupkg.xml
+++ b/api/Avalonia.nupkg.xml
@@ -31,6 +31,12 @@
baseline/Avalonia/lib/net10.0/Avalonia.Base.dll
current/Avalonia/lib/net10.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Controls.NativeMenuItemToggleType
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
CP0001
T:Avalonia.Controls.Primitives.IScrollable
@@ -73,6 +79,12 @@
baseline/Avalonia/lib/net8.0/Avalonia.Base.dll
current/Avalonia/lib/net8.0/Avalonia.Base.dll
+
+ CP0001
+ T:Avalonia.Controls.NativeMenuItemToggleType
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
CP0001
T:Avalonia.Controls.Primitives.IScrollable
@@ -283,6 +295,18 @@
baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+ CP0002
+ F:Avalonia.Controls.NativeMenuBar.EnableMenuItemClickForwardingProperty
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0002
+ F:Avalonia.Controls.NativeMenuItem.ToggleTypeProperty
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
CP0002
F:Avalonia.Controls.TextBlock.LetterSpacingProperty
@@ -367,6 +391,18 @@
baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+ CP0002
+ M:Avalonia.Controls.NativeMenuBar.SetEnableMenuItemClickForwarding(Avalonia.Controls.MenuItem,System.Boolean)
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
+
+ CP0002
+ M:Avalonia.Controls.NativeMenuItem.get_ToggleType
+ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net10.0/Avalonia.Controls.dll
+
CP0002
M:Avalonia.Controls.Primitives.TextSearch.GetText(Avalonia.Controls.Control)
@@ -649,6 +685,18 @@
baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+ CP0002
+ F:Avalonia.Controls.NativeMenuBar.EnableMenuItemClickForwardingProperty
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0002
+ F:Avalonia.Controls.NativeMenuItem.ToggleTypeProperty
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
CP0002
F:Avalonia.Controls.TextBlock.LetterSpacingProperty
@@ -733,6 +781,18 @@
baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+ CP0002
+ M:Avalonia.Controls.NativeMenuBar.SetEnableMenuItemClickForwarding(Avalonia.Controls.MenuItem,System.Boolean)
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
+
+ CP0002
+ M:Avalonia.Controls.NativeMenuItem.get_ToggleType
+ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll
+ current/Avalonia/lib/net8.0/Avalonia.Controls.dll
+
CP0002
M:Avalonia.Controls.Primitives.TextSearch.GetText(Avalonia.Controls.Control)
diff --git a/samples/IntegrationTestApp/MainWindow.axaml.cs b/samples/IntegrationTestApp/MainWindow.axaml.cs
index be552201c0..894c052d6c 100644
--- a/samples/IntegrationTestApp/MainWindow.axaml.cs
+++ b/samples/IntegrationTestApp/MainWindow.axaml.cs
@@ -37,7 +37,7 @@ namespace IntegrationTestApp
{
Header = (string?)page.Name,
ToolTip = $"Tip:{(string?)page.Name}",
- ToggleType = NativeMenuItemToggleType.Radio,
+ ToggleType = MenuItemToggleType.Radio
};
menuItem.Click += (_, _) =>
diff --git a/src/Avalonia.Controls/NativeMenuBar.cs b/src/Avalonia.Controls/NativeMenuBar.cs
index 118c2291cc..2f271ef34c 100644
--- a/src/Avalonia.Controls/NativeMenuBar.cs
+++ b/src/Avalonia.Controls/NativeMenuBar.cs
@@ -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 EnableMenuItemClickForwardingProperty =
- AvaloniaProperty.RegisterAttached(
- "EnableMenuItemClickForwarding");
-
private MenuBase? _menu;
private IDisposable? _subscriptions;
static NativeMenuBar()
{
- EnableMenuItemClickForwardingProperty.Changed.Subscribe(args =>
- {
- var item = (MenuItem)args.Sender;
- if (args.NewValue.GetValueOrDefault())
- 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(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();
diff --git a/src/Avalonia.Controls/NativeMenuBarPresenter.cs b/src/Avalonia.Controls/NativeMenuBarPresenter.cs
index 286f80d699..c0e790c466 100644
--- a/src/Avalonia.Controls/NativeMenuBarPresenter.cs
+++ b/src/Avalonia.Controls/NativeMenuBarPresenter.cs
@@ -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(),
};
diff --git a/src/Avalonia.Controls/NativeMenuItem.cs b/src/Avalonia.Controls/NativeMenuItem.cs
index 6c093ff1f6..b0b6bb611f 100644
--- a/src/Avalonia.Controls/NativeMenuItem.cs
+++ b/src/Avalonia.Controls/NativeMenuItem.cs
@@ -119,11 +119,11 @@ namespace Avalonia.Controls
}
///
- public static readonly StyledProperty ToggleTypeProperty =
- AvaloniaProperty.Register(nameof(ToggleType));
+ public static readonly StyledProperty ToggleTypeProperty =
+ AvaloniaProperty.Register(nameof(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
- }
}
diff --git a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs
index b020aaec34..78595d7bb0 100644
--- a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs
+++ b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs
@@ -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")
diff --git a/src/Avalonia.Native/IAvnMenuItem.cs b/src/Avalonia.Native/IAvnMenuItem.cs
index fd851122f2..f9b3e2d2d6 100644
--- a/src/Avalonia.Native/IAvnMenuItem.cs
+++ b/src/Avalonia.Native/IAvnMenuItem.cs
@@ -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);
}