Fl_Menu_::find_item() was trying to search through submenus created with FL_SUBMENU_POINTER (vs. Fl_SUBMENU and an array of submenu items), but not following the pointer, messing up the search string.

Two fixes were possible: correctly searching linked submenus, or disabeling submenu links alltogether. I decided for the later since the use of FL_SUBMENU_POINTER implies that the user knows the pointer and can search that submenu seperately, saving time when searching the main menu.

git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4384 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Matthias Melcher 2005-05-31 20:05:50 +00:00
parent 5b8d9e746a
commit 7c143c6bfb
3 changed files with 6 additions and 2 deletions

View File

@ -2,6 +2,8 @@ CHANGES IN FLTK 1.1.7
- Documentation fixes (STR #648, STR #692, STR #730, STR
#744, STR #745)
- Removed flwaed attempt to find items via
Fl_Menu_::find_item() in linked submenus
- Fluid interactive window resizing fixe (STR #873, 791)
- Fluid panel resize and alignment fixes (STR #891)
- Fl_Window::show(argc, argv) now sets the scheme before

View File

@ -235,7 +235,8 @@ global()</TT> setting (so don't destroy the widget!)</P>
<p>Returns a pointer to the menu item with the given (full)
pathname. If no matching menu item can be found, a NULL pointer
is returned.</p>
is returned. This function does not search submenus that are linked
via FL_SUBMENU_POINTER.</p>
<h4><a name=Fl_Menu_.item_pathname>int Fl_Menu_::item_pathname(char *name, int namelen ) const;</a><br>
int Fl_Menu_::item_pathname(char *name, int namelen,

View File

@ -88,8 +88,9 @@ Fl_Menu_::find_item(const char *name)
for ( int t=0; t < size(); t++ ) {
Fl_Menu_Item *m = menu_ + t;
if (m->submenu()) {
if (m->flags&FL_SUBMENU) {
// IT'S A SUBMENU
// we do not support searches through FL_SUBMENU_POINTER links
if (menupath[0]) strlcat(menupath, "/", sizeof(menupath));
strlcat(menupath, m->label(), sizeof(menupath));
if (!strcmp(menupath, name)) return m;