summaryrefslogtreecommitdiff
path: root/src/Fl_Sys_Menu_Bar.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2009-12-13 12:03:26 +0000
committerMatthias Melcher <fltk@matthiasm.com>2009-12-13 12:03:26 +0000
commitc8278a23449da36df4e7177c49dcc6fc74683306 (patch)
treeb5d787a107b3a37d7c8d1034928fb58c5557fa44 /src/Fl_Sys_Menu_Bar.cxx
parent64716f01e27a9c8ec28cfa9fd9e9822930a14ada (diff)
New patches appliet for Cocoa port. Fixed(?) STR 2232 workaround for X11 keyrepeat bbbbuuuuuuggggg.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6966 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Sys_Menu_Bar.cxx')
-rw-r--r--src/Fl_Sys_Menu_Bar.cxx52
1 files changed, 33 insertions, 19 deletions
diff --git a/src/Fl_Sys_Menu_Bar.cxx b/src/Fl_Sys_Menu_Bar.cxx
index 8893c0b26..e35cff790 100644
--- a/src/Fl_Sys_Menu_Bar.cxx
+++ b/src/Fl_Sys_Menu_Bar.cxx
@@ -65,7 +65,6 @@
#ifdef __APPLE_COCOA__
extern void *MACMenuOrItemOperation(const char *operation, ...);
-extern void *MACmainMenu(void);
#define MenuHandle void *
#endif
@@ -149,7 +148,7 @@ static void setMenuShortcut( MenuHandle mh, int miCnt, const Fl_Menu_Item *m )
#ifdef __APPLE_COCOA__
void *menuItem = MACMenuOrItemOperation("itemAtIndex", mh, miCnt);
- MACMenuOrItemOperation("setKeyEquivalent", menuItem, key );
+ MACMenuOrItemOperation("setKeyEquivalent", menuItem, m->shortcut_ & 0xff );
MACMenuOrItemOperation("setKeyEquivalentModifierMask", menuItem, m->shortcut_ );
#else
long macMod = kMenuNoCommandModifier;
@@ -223,20 +222,21 @@ static void createSubMenu( void * mh, pFl_Menu_Item &mm )
menuItem = MACMenuOrItemOperation("itemAtIndex", mh, cnt);
MACMenuOrItemOperation("setSubmenu", menuItem, submenu);
if ( mm->flags & FL_MENU_INACTIVE ) {
- MACMenuOrItemOperation("setEnabled", menuItem, 0);
+ MACMenuOrItemOperation("setEnabled", menuItem, 0);
}
mm++;
while ( mm->text )
{
- MACMenuOrItemOperation("addNewItem", submenu, mm, &miCnt);
+ int flRank = mm - fl_sys_menu_bar->Fl_Menu_::menu();
+ MACMenuOrItemOperation("addNewItem", submenu, flRank, &miCnt);
setMenuFlags( submenu, miCnt, mm );
setMenuShortcut( submenu, miCnt, mm );
- if ( mm->flags & FL_MENU_INACTIVE ) {
- void *item = MACMenuOrItemOperation("itemAtIndex", submenu, miCnt);
- MACMenuOrItemOperation("setEnabled", item, 0);
- }
- flags = mm->flags;
+ if ( mm->flags & FL_MENU_INACTIVE ) {
+ void *item = MACMenuOrItemOperation("itemAtIndex", submenu, miCnt);
+ MACMenuOrItemOperation("setEnabled", item, 0);
+ }
+ flags = mm->flags;
if ( mm->flags & FL_SUBMENU )
{
createSubMenu( submenu, mm );
@@ -247,8 +247,8 @@ static void createSubMenu( void * mh, pFl_Menu_Item &mm )
createSubMenu( submenu, smm );
}
if ( flags & FL_MENU_DIVIDER ) {
- MACMenuOrItemOperation("addSeparatorItem", submenu);
- }
+ MACMenuOrItemOperation("addSeparatorItem", submenu);
+ }
mm++;
}
}
@@ -259,9 +259,9 @@ static void convertToMenuBar(const Fl_Menu_Item *mm)
//ALL PREVIOUS SYSTEM MENUS, EXCEPT APPLICATION MENU, ARE REPLACED BY THE NEW DATA
{
int count;//first, delete all existing system menus
- MACMenuOrItemOperation("numberOfItems", MACmainMenu(), &count);
+ MACMenuOrItemOperation("numberOfItems", fl_system_menu, &count);
for(int i = count - 1; i > 0; i--) {
- MACMenuOrItemOperation("removeItem", MACmainMenu(), i);
+ MACMenuOrItemOperation("removeItem", fl_system_menu, i);
}
//now convert FLTK stuff into MacOS menus
for (;;)
@@ -269,13 +269,14 @@ static void convertToMenuBar(const Fl_Menu_Item *mm)
if ( !mm || !mm->text )
break;
char visible = mm->visible() ? 1 : 0;
- MACMenuOrItemOperation("addNewItem", MACmainMenu(), mm, NULL);
+ int flRank = mm - fl_sys_menu_bar->Fl_Menu_::menu();
+ MACMenuOrItemOperation("addNewItem", fl_system_menu, flRank, NULL);
if ( mm->flags & FL_SUBMENU )
- createSubMenu( MACmainMenu(), mm );
+ createSubMenu( fl_system_menu, mm );
else if ( mm->flags & FL_SUBMENU_POINTER ) {
const Fl_Menu_Item *smm = (Fl_Menu_Item*)mm->user_data_;
- createSubMenu( MACmainMenu(), smm );
+ createSubMenu( fl_system_menu, smm );
}
if ( visible ) {
// InsertMenu( mh, 0 );
@@ -315,14 +316,27 @@ int Fl_Sys_Menu_Bar::add(const char* label, int shortcut, Fl_Callback *cb, void
/**
* remove an item from the system menu bar
*
- * @param n the rank of the item to remove
+ * @param rank the rank of the item to remove
*/
-void Fl_Sys_Menu_Bar::remove(int n)
+void Fl_Sys_Menu_Bar::remove(int rank)
{
- Fl_Menu_::remove(n);
+ Fl_Menu_::remove(rank);
convertToMenuBar(Fl_Menu_::menu());
}
+
+/**
+ * rename an item from the system menu bar
+ *
+ * @param rank the rank of the item to rename
+ * @param name the new item name as a UTF8 string
+ */
+void Fl_Sys_Menu_Bar::replace(int rank, const char *name)
+{
+ MACMenuOrItemOperation("renameItem", rank, name);
+ fl_sys_menu_bar->Fl_Menu_::replace(rank, name);
+}
+
#else
static void catMenuFlags( const Fl_Menu_Item *m, char *dst )