From e5fed1d0facb20e72e91732a2cf9289cd1146f6f Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Mon, 4 Jan 2010 16:57:11 +0000 Subject: [PATCH] Another update by Manolo. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6989 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_cocoa.mm | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index 0e560e0b3..1e8068a95 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -2896,19 +2896,26 @@ static void createAppleMenu(void) fl_sys_menu_bar->picked(item); if ( item->flags & FL_MENU_TOGGLE ) {// update the menu toggle symbol [self setState:(item->value() ? NSOnState : NSOffState)]; - } + } else if ( item->flags & FL_MENU_RADIO ) {// update the menu radio symbols int from = flRank; - while(from > 0 && items[from - 1].flags & FL_MENU_RADIO) from--; + while( from > 0 && items[from - 1].label() && (items[from - 1].flags & FL_MENU_RADIO) && + !(items[from - 1].flags & FL_MENU_DIVIDER) ) { + from--; + } int to = flRank; - while(items[to + 1].flags & FL_MENU_RADIO) to++; + while( !(items[to].flags & FL_MENU_DIVIDER) && items[to + 1].label() && + (items[to + 1].flags & FL_MENU_RADIO) ) { + to++; + } NSMenu *nsmenu = [self menu]; int nsrank = (int)[nsmenu indexOfItem:self]; for(int i = from - flRank + nsrank ; i <= to - flRank + nsrank; i++) { - [[nsmenu itemAtIndex:i] setState:NSOffState]; - } - if(item->value()) [self setState:NSOnState]; + NSMenuItem *nsitem = [nsmenu itemAtIndex:i]; + if(nsitem != self) [nsitem setState:NSOffState]; + else [nsitem setState:(item->value() ? NSOnState : NSOffState) ]; } + } } } - (void) directCallback:(id)unused