aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk/Menu.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FbTk/Menu.cc')
-rw-r--r--src/FbTk/Menu.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc
index 8f795ac..0559f0d 100644
--- a/src/FbTk/Menu.cc
+++ b/src/FbTk/Menu.cc
@@ -596,7 +596,7 @@ void Menu::internal_hide(bool first) {
596 shown = (Menu *) 0; 596 shown = (Menu *) 0;
597 } 597 }
598 598
599 m_torn = m_visible = false; 599 m_torn = m_visible = m_closing = false;
600 m_which_sub = -1; 600 m_which_sub = -1;
601 601
602 if (first && m_parent && m_parent->isVisible() && 602 if (first && m_parent && m_parent->isVisible() &&
@@ -831,12 +831,16 @@ void Menu::handleEvent(XEvent &event) {
831 if (validIndex(m_which_sub) && 831 if (validIndex(m_which_sub) &&
832 menuitems[m_which_sub]->submenu()->isVisible()) 832 menuitems[m_which_sub]->submenu()->isVisible())
833 menuitems[m_which_sub]->submenu()->grabInputFocus(); 833 menuitems[m_which_sub]->submenu()->grabInputFocus();
834 } 834 } else if (event.type == LeaveNotify)
835 m_closing = false;
835} 836}
836 837
837void Menu::buttonPressEvent(XButtonEvent &be) { 838void Menu::buttonPressEvent(XButtonEvent &be) {
838 if (be.window == menu.title) 839 if (be.window == menu.title) {
839 grabInputFocus(); 840 grabInputFocus();
841 m_closing = (be.button == 3);
842 } else
843 m_closing = false;
840 844
841 if (be.window == menu.frame && menu.item_w != 0) { 845 if (be.window == menu.frame && menu.item_w != 0) {
842 846
@@ -875,7 +879,7 @@ void Menu::buttonReleaseEvent(XButtonEvent &re) {
875 } 879 }
876 } 880 }
877 881
878 if (re.button == 3) 882 if (re.button == 3 && m_closing)
879 internal_hide(); 883 internal_hide();
880 884
881 } else if (re.window == menu.frame) { 885 } else if (re.window == menu.frame) {