summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Menu.cxx15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx
index 4cae09f5d..7350f4af5 100644
--- a/src/Fl_Menu.cxx
+++ b/src/Fl_Menu.cxx
@@ -841,10 +841,19 @@ int menuwindow::handle_part1(int e) {
case ' ':
// if the current item is a submenu with no callback,
// simulate FL_Right to enter the submenu
- if (pp.current_item && (!pp.menubar || pp.menu_number > 0) &&
- pp.current_item->activevisible() && pp.current_item->submenu() && !pp.current_item->callback_)
+ if ( pp.current_item
+ && (!pp.menubar || pp.menu_number > 0)
+ && pp.current_item->activevisible()
+ && pp.current_item->submenu()
+ && !pp.current_item->callback_)
+ {
goto RIGHT;
- if (pp.current_item && pp.current_item->activevisible()) pp.state = DONE_STATE;
+ }
+ // Ignore keypresses over inactive items, mark KEYBOARD event as used.
+ if (pp.current_item && !pp.current_item->activevisible())
+ return 1;
+ // Mark the menu 'done' which will trigger the callback
+ pp.state = DONE_STATE;
return 1;
case FL_Escape:
setitem(0, -1, 0);