Author: manolo
Date: 2012-01-12 04:59:29 -0800 (Thu, 12 Jan 2012)
New Revision: 9221
Log:
Some code simplifications.
Modified:
branches/branch-3.0/src/fltk3/cocoa.mm
Modified: branches/branch-3.0/src/fltk3/cocoa.mm
===================================================================
--- branches/branch-3.0/src/fltk3/cocoa.mm 2012-01-12 12:49:58 UTC (rev
9220)
+++ branches/branch-3.0/src/fltk3/cocoa.mm 2012-01-12 12:59:29 UTC (rev
9221)
@@ -2944,9 +2944,9 @@
}
@interface FLMenuItem : NSMenuItem
+- (const fltk3::MenuItem*) getFlItem;
- (void) doCallback:(id)unused;
- (void) directCallback:(id)unused;
-- (const fltk3::MenuItem*) getFlItem;
@end
@implementation FLMenuItem
- (const fltk3::MenuItem*) getFlItem
@@ -2957,38 +2957,32 @@
{
fl_lock_function();
const fltk3::MenuItem *item = [self getFlItem];
- NSMenu* menu = [self menu];
- NSInteger flRank = [menu indexOfItem:self];
- NSInteger last = [menu numberOfItems];
- if (item) {
- fltk3::sys_menu_bar->picked(item);
- if ( item->flags & fltk3::MENU_TOGGLE ) { // update the menu toggle symbol
- [self setState:(item->value() ? NSOnState : NSOffState)];
+ fltk3::sys_menu_bar->picked(item);
+ if ( item->flags & fltk3::MENU_TOGGLE ) { // update the menu toggle symbol
+ [self setState:(item->value() ? NSOnState : NSOffState)];
+ }
+ else if ( item->flags & fltk3::MENU_RADIO ) { // update the menu
radio symbols
+ NSMenu* menu = [self menu];
+ NSInteger flRank = [menu indexOfItem:self];
+ NSInteger last = [menu numberOfItems] - 1;
+ int from = flRank;
+ while (from > 0) {
+ if ([[menu itemAtIndex:from-1] isSeparatorItem]) break;
+ item = [(FLMenuItem*)[menu itemAtIndex:from-1] getFlItem];
+ if ( !(item->flags & fltk3::MENU_RADIO) ) break;
+ from--;
}
- else if ( item->flags & fltk3::MENU_RADIO ) { // update the menu
radio symbols
- const fltk3::MenuItem *item2;
- int from = flRank;
- while(from > 0) {
- if ([[menu itemAtIndex:from-1] isSeparatorItem]) break;
- item2 = [(FLMenuItem*)[menu itemAtIndex:from-1] getFlItem];
- if ( !(item2->flags & fltk3::MENU_RADIO) ) break;
- from--;
- }
- int to = flRank;
- while (to+1 < last) {
- if ([[menu itemAtIndex:to+1] isSeparatorItem]) break;
- item2 = [(FLMenuItem*)[menu itemAtIndex:to+1] getFlItem];
- if (!(item2->flags & fltk3::MENU_RADIO)) break;
- to++;
- }
- NSMenu *nsmenu = [self menu];
- int nsrank = (int)[nsmenu indexOfItem:self];
- for(int i = from - flRank + nsrank ; i <= to - flRank + nsrank; i++) {
- NSMenuItem *nsitem = [nsmenu itemAtIndex:i];
- if (nsitem != self) [nsitem setState:NSOffState];
- else [nsitem setState:(item->value() ? NSOnState : NSOffState) ];
- }
+ int to = flRank;
+ while (to < last) {
+ if ([[menu itemAtIndex:to+1] isSeparatorItem]) break;
+ item = [(FLMenuItem*)[menu itemAtIndex:to+1] getFlItem];
+ if (!(item->flags & fltk3::MENU_RADIO)) break;
+ to++;
}
+ for (int i = from; i <= to; i++) {
+ NSMenuItem *nsitem = [menu itemAtIndex:i];
+ [nsitem setState:(nsitem != self ? NSOffState : NSOnState)];
+ }
}
fl_unlock_function();
}
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit