From eabab73b0dca6cd7aff67427b4443fd08f3b9bcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=ADn?= Date: Sat, 18 Mar 2023 01:47:32 +0100 Subject: [PATCH] Fix toolbar item validation in the NS port * src/nsmenu.m ([EmacsToolbar validateVisibleItems]): Remove this override, which is not really needed. Also, it doesn't do the right thing, because Apple's documentation states that this method, if overriden, must call super. * src/nsterm.m ([EmacsView validateToolbarItem:]): Implement this NSToolbarItemValidation method instead, which is called by AppKit when it needs to validate an image item. --- src/nsmenu.m | 8 -------- src/nsterm.m | 5 +++++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/nsmenu.m b/src/nsmenu.m index 2c1f575bdf2..f7a401dc407 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -1346,14 +1346,6 @@ - (void) addDisplayItemWithImage: (EmacsImage *)img enablement = (enablement << 1) | (enabled == YES); } -/* This overrides super's implementation, which automatically sets - all items to enabled state (for some reason). */ -- (void)validateVisibleItems -{ - NSTRACE ("[EmacsToolbar validateVisibleItems]"); -} - - /* delegate methods */ - (NSToolbarItem *)toolbar: (NSToolbar *)toolbar diff --git a/src/nsterm.m b/src/nsterm.m index 0e75cbf3f0f..8bb22c0f756 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -8573,6 +8573,11 @@ - (instancetype)toolbarClicked: (id)item return self; } +-(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem +{ + return [toolbarItem isEnabled]; +} + - (instancetype)toggleToolbar: (id)sender { -- 2.34.1