summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--src/Fl_Menu.cxx19
2 files changed, 18 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index 23cd49ac2..39ac34020 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
CHANGES IN FLTK 1.1.8
+ - Fixed dismissing buttons in menu bars (STR #1494)
- Making a child group visible in a Fl_Tabs or Fl_Wizard
group now shows that tab or pane.
- Added fl_open_uri() function as proposed on
diff --git a/src/Fl_Menu.cxx b/src/Fl_Menu.cxx
index 2f06f4850..f0739e9a0 100644
--- a/src/Fl_Menu.cxx
+++ b/src/Fl_Menu.cxx
@@ -689,8 +689,23 @@ int menuwindow::early_hide_handle(int e) {
}
for (mymenu = pp.nummenus-1; ; mymenu--) {
item = pp.p[mymenu]->find_selected(mx, my);
- if (item >= 0) break;
- if (mymenu <= 0) return 0;
+ if (item >= 0)
+ break;
+ if (mymenu <= 0) {
+ // buttons in menubars must be deselected if we move outside of them!
+ if (pp.menu_number==-1 && e==FL_PUSH) {
+ pp.state = DONE_STATE;
+ return 1;
+ }
+ if (pp.current_item && pp.menu_number==0 && !pp.current_item->submenu()) {
+ if (e==FL_PUSH)
+ pp.state = DONE_STATE;
+ setitem(0, -1, 0);
+ return 1;
+ }
+ // all others can stay selected
+ return 0;
+ }
}
if (my == 0 && item > 0) setitem(mymenu, item - 1);
else setitem(mymenu, item);