mirror of
https://github.com/fltk/fltk.git
synced 2026-03-23 23:48:52 +08:00
Completed the implementation of Fl_Sys_Menu_Bar that now accepts all calls of its parent class Fl_Menu_.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10102 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
@@ -25,26 +25,28 @@
|
||||
#if defined(__APPLE__) || defined(FL_DOXYGEN)
|
||||
|
||||
/**
|
||||
\brief A class to create, modify and delete menus that appear on Mac OS X in the menu bar at the top of the screen.
|
||||
A class to create, modify and delete menus that appear on Mac OS X in the menu bar at the top of the screen.
|
||||
|
||||
On other than Mac OS X platforms, Fl_Sys_Menu_Bar is a synonym of class Fl_Menu_Bar,
|
||||
except for Fl_Sys_Menu_Bar::update() defined for Mac OS X only.
|
||||
\n Some FLTK features are not supported by the Mac System menu:
|
||||
On other than Mac OS X platforms, Fl_Sys_Menu_Bar is a synonym of class Fl_Menu_Bar.
|
||||
\n To use this class, just replace Fl_Menu_Bar by Fl_Sys_Menu_Bar, and, on the Mac platform,
|
||||
a system menu at the top of the screen will be available. This menu will match an array
|
||||
of Fl_Menu_Item's exactly as with standard FLTK menus.
|
||||
\n A few FLTK features are not supported by the Mac System menu:
|
||||
\li no symbolic labels
|
||||
\li no embossed labels
|
||||
\li no font sizes
|
||||
\li some calls of the parent class don't work
|
||||
|
||||
You can configure a callback for the 'About' menu item to invoke your own code with fl_mac_set_about().
|
||||
*
|
||||
*/
|
||||
class FL_EXPORT Fl_Sys_Menu_Bar : public Fl_Menu_Bar {
|
||||
protected:
|
||||
void update();
|
||||
void draw();
|
||||
public:
|
||||
Fl_Sys_Menu_Bar(int x,int y,int w,int h,const char *l=0);
|
||||
~Fl_Sys_Menu_Bar();
|
||||
/** Return the system menu's array of Fl_Menu_Item's */
|
||||
/** Return the system menu's array of Fl_Menu_Item's
|
||||
*/
|
||||
const Fl_Menu_Item *menu() const {return Fl_Menu_::menu();}
|
||||
void menu(const Fl_Menu_Item *m);
|
||||
int add(const char* label, int shortcut, Fl_Callback*, void *user_data=0, int flags=0);
|
||||
@@ -54,10 +56,16 @@ public:
|
||||
int add(const char* label, const char* shortcut, Fl_Callback* cb, void *user_data=0, int flags=0) {
|
||||
return add(label, fl_old_shortcut(shortcut), cb, user_data, flags);
|
||||
}
|
||||
int add(const char* str);
|
||||
int insert(int index, const char* label, int shortcut, Fl_Callback *cb, void *user_data=0, int flags=0);
|
||||
/** Insert a new menu item.
|
||||
\see Fl_Menu_::insert(int index, const char* label, const char* shortcut, Fl_Callback *cb, void *user_data=0, int flags=0)
|
||||
*/
|
||||
int insert(int index, const char* label, const char* shortcut, Fl_Callback *cb, void *user_data=0, int flags=0) {
|
||||
return insert(index, label, fl_old_shortcut(shortcut), cb, user_data, flags);
|
||||
}
|
||||
void remove(int n);
|
||||
void replace(int rank, const char *name);
|
||||
void update();
|
||||
/** Set the Fl_Menu_Item array pointer to null, indicating a zero-length menu.
|
||||
\see Fl_Menu_::clear()
|
||||
*/
|
||||
@@ -66,6 +74,21 @@ public:
|
||||
\see Fl_Menu_::clear_submenu(int index)
|
||||
*/
|
||||
int clear_submenu(int index);
|
||||
/** Make the shortcuts for this menu work no matter what window has the focus when you type it.
|
||||
*/
|
||||
void global() {};
|
||||
/** Sets the flags of item i
|
||||
\see Fl_Menu_::mode(int i, int fl) */
|
||||
void mode (int i, int fl) {
|
||||
Fl_Menu_::mode(i, fl);
|
||||
update();
|
||||
}
|
||||
/** Gets the flags of item i.
|
||||
*/
|
||||
int mode(int i) const { return Fl_Menu_::mode(i); }
|
||||
/** Changes the shortcut of item i to n.
|
||||
*/
|
||||
void shortcut (int i, int s) { Fl_Menu_::shortcut(i, s); update(); };
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
@@ -387,6 +387,19 @@ int Fl_Sys_Menu_Bar::add(const char* label, int shortcut, Fl_Callback *cb, void
|
||||
return rank;
|
||||
}
|
||||
|
||||
/**
|
||||
* Forms-compatible procedure to add items to the system menu bar
|
||||
*
|
||||
* @see Fl_Menu_::add(const char* str)
|
||||
*/
|
||||
int Fl_Sys_Menu_Bar::add(const char* str)
|
||||
{
|
||||
fl_open_display();
|
||||
int rank = Fl_Menu_::add(str);
|
||||
update();
|
||||
return rank;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief insert in the system menu bar a new menu item
|
||||
*
|
||||
@@ -440,8 +453,7 @@ void Fl_Sys_Menu_Bar::replace(int rank, const char *name)
|
||||
update();
|
||||
}
|
||||
|
||||
/** Updates the system menu.
|
||||
Useful after changes in the menu items, e.g., item activation/deactivation.
|
||||
/** Updates the system menu after any change to its items.
|
||||
*/
|
||||
void Fl_Sys_Menu_Bar::update()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user