summaryrefslogtreecommitdiff
path: root/src/Fl_Menu.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Menu.cxx')
-rw-r--r--src/Fl_Menu.cxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx
index 8d7e7a4c5..41f36490e 100644
--- a/src/Fl_Menu.cxx
+++ b/src/Fl_Menu.cxx
@@ -699,13 +699,14 @@ static int forward(int menu) { // go to next item in menu menu if possible
menu = 0;
menuwindow &m = *(pp.p[menu]);
int item = (menu == pp.menu_number) ? pp.item_number : m.selected;
- while (m.numitems >= 2) {
+ do {
while (++item < m.numitems) {
const Fl_Menu_Item* m1 = m.menu->next(item);
if (m1->activevisible()) {setitem(m1, menu, item); return 1;}
}
item = -1;
}
+ while (pp.menubar && pp.menu_number <= 0 && (!m.menu || m.menu->submenu()));
return 0;
}
@@ -716,13 +717,14 @@ static int backward(int menu) { // previous item in menu menu if possible
menustate &pp = *p;
menuwindow &m = *(pp.p[menu]);
int item = (menu == pp.menu_number) ? pp.item_number : m.selected;
- while (m.numitems >= 2) {
+ do {
while (--item >= 0) {
const Fl_Menu_Item* m1 = m.menu->next(item);
if (m1->activevisible()) {setitem(m1, menu, item); return 1;}
}
item = m.numitems;
}
+ while (pp.menubar && (!m.menu || m.menu->submenu()));
return 0;
}