From af1499c37133d9fdd236f3edc9720a2cd733bd2a Mon Sep 17 00:00:00 2001 From: John Ralls Date: Mon, 20 May 2013 15:15:11 -0700 Subject: [PATCH] Bug 691921 - GTK+ built on Leopard references [NSMenu removellItems] Test it with respondsToSelector, and if it isn't available delete the items one at a time. --- gtk/gtkmodelmenu-quartz.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/gtk/gtkmodelmenu-quartz.c b/gtk/gtkmodelmenu-quartz.c index 2f05eac7d0..dae2376ee1 100644 --- a/gtk/gtkmodelmenu-quartz.c +++ b/gtk/gtkmodelmenu-quartz.c @@ -313,7 +313,19 @@ gtk_quartz_clear_main_menu (void) - (void)populate { - [self removeAllItems]; + /* removeAllItems is available only in 10.6 and later, but it's more + efficient than iterating over the array of + NSMenuItems. performSelector: suppresses a compiler warning when + building on earlier OSX versions. */ + if ([self respondsToSelector: @selector (removeAllItems)]) + [self performSelector: @selector (removeAllItems)]; + else + { + /* Iterate from the bottom up to save reindexing the NSArray. */ + int i; + for (i = [self numberOfItems]; i > 0; i--) + [self removeItemAtIndex: i]; + } [self appendFromModel:model withSeparators:with_separators]; }