diff options
Diffstat (limited to 'src/Fl_Sys_Menu_Bar.cxx')
-rw-r--r-- | src/Fl_Sys_Menu_Bar.cxx | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/Fl_Sys_Menu_Bar.cxx b/src/Fl_Sys_Menu_Bar.cxx index bc60458..d630fb3 100644 --- a/src/Fl_Sys_Menu_Bar.cxx +++ b/src/Fl_Sys_Menu_Bar.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Sys_Menu_Bar.cxx 4651 2005-11-25 14:50:22Z mike $" +// "$Id: Fl_Sys_Menu_Bar.cxx 5617 2007-01-18 19:20:13Z matt $" // // MacOS system menu bar widget for the Fast Light Tool Kit (FLTK). // @@ -178,8 +178,6 @@ static void catMenuFlags( const Fl_Menu_Item *m, char *dst ) { if ( !m->flags ) return; - while ( *dst ) - dst++; if ( m->flags & FL_MENU_INACTIVE ) strcat( dst, "(" ); } @@ -245,27 +243,32 @@ void Fl_Sys_Menu_Bar::menu(const Fl_Menu_Item *m) fl_sys_menu_bar = this; char buf[255]; - int cnt = 1; // first menu is no 2. no 1 is the Apple Menu + int cnt = 1; // first menu is no 2. no 1 is the Apple Menu const Fl_Menu_Item *mm = m; for (;;) { - if ( !mm->text ) + if ( !mm || !mm->text ) break; + char visible = mm->visible() ? 1 : 0; buf[1] = 0; catMenuText( mm->text, buf+1 ); buf[0] = strlen( buf+1 ); MenuHandle mh = NewMenu( ++cnt, (unsigned char*)buf ); + if ( mm->flags & FL_MENU_INACTIVE ) { + ChangeMenuAttributes(mh, kMenuAttrAutoDisable, 0); + DisableAllMenuItems(mh); + DisableMenuItem(mh, 0); + } if ( mm->flags & FL_SUBMENU ) createSubMenu( mh, cnt, ++mm ); - else if ( mm->flags & FL_SUBMENU_POINTER ) - { + else if ( mm->flags & FL_SUBMENU_POINTER ) { const Fl_Menu_Item *smm = (Fl_Menu_Item*)mm->user_data_; createSubMenu( mh, cnt, smm ); } - - InsertMenu( mh, 0 ); - if ( mm->flags & FL_MENU_INACTIVE ) DisableMenuItem( mh, 0 ); + if ( visible ) { + InsertMenu( mh, 0 ); + } mm++; } DrawMenuBar(); @@ -325,5 +328,5 @@ int Fl_Menu_Bar::handle(int event) { #endif /* __APPLE__ */ // -// End of "$Id: Fl_Sys_Menu_Bar.cxx 4651 2005-11-25 14:50:22Z mike $". +// End of "$Id: Fl_Sys_Menu_Bar.cxx 5617 2007-01-18 19:20:13Z matt $". // |