mirror of https://github.com/fltk/fltk
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:
parent
5b8d9e746a
commit
7c143c6bfb
2
CHANGES
2
CHANGES
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue