summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2010-01-04 16:57:11 +0000
committerMatthias Melcher <fltk@matthiasm.com>2010-01-04 16:57:11 +0000
commite5fed1d0facb20e72e91732a2cf9289cd1146f6f (patch)
tree1563127e84e40e30893a713fe4d7a1ed7895c41d /src
parent339c8e972e5343b1f97b07ab04943ae42d20eb1a (diff)
Another update by Manolo.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6989 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/Fl_cocoa.mm19
1 files 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