|
|
@ -2899,15 +2899,22 @@ static void createAppleMenu(void) |
|
|
|
} |
|
|
|
} |
|
|
|
else if ( item->flags & FL_MENU_RADIO ) {// update the menu radio symbols |
|
|
|
else if ( item->flags & FL_MENU_RADIO ) {// update the menu radio symbols |
|
|
|
int from = flRank; |
|
|
|
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; |
|
|
|
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]; |
|
|
|
NSMenu *nsmenu = [self menu]; |
|
|
|
int nsrank = (int)[nsmenu indexOfItem:self]; |
|
|
|
int nsrank = (int)[nsmenu indexOfItem:self]; |
|
|
|
for(int i = from - flRank + nsrank ; i <= to - flRank + nsrank; i++) { |
|
|
|
for(int i = from - flRank + nsrank ; i <= to - flRank + nsrank; i++) { |
|
|
|
[[nsmenu itemAtIndex:i] setState:NSOffState]; |
|
|
|
NSMenuItem *nsitem = [nsmenu itemAtIndex:i]; |
|
|
|
|
|
|
|
if(nsitem != self) [nsitem setState:NSOffState]; |
|
|
|
|
|
|
|
else [nsitem setState:(item->value() ? NSOnState : NSOffState) ]; |
|
|
|
} |
|
|
|
} |
|
|
|
if(item->value()) [self setState:NSOnState]; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|