diff options
Diffstat (limited to 'src/FbTk')
-rw-r--r-- | src/FbTk/Menu.cc | 4 | ||||
-rw-r--r-- | src/FbTk/MenuItem.cc | 5 | ||||
-rw-r--r-- | src/FbTk/MenuItem.hh | 2 | ||||
-rw-r--r-- | src/FbTk/MultiButtonMenuItem.cc | 2 | ||||
-rw-r--r-- | src/FbTk/MultiButtonMenuItem.hh | 2 |
5 files changed, 8 insertions, 7 deletions
diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc index 3be0d14..bb51d92 100644 --- a/src/FbTk/Menu.cc +++ b/src/FbTk/Menu.cc | |||
@@ -888,7 +888,7 @@ void Menu::buttonReleaseEvent(XButtonEvent &re) { | |||
888 | if (m_active_index == w && isItemEnabled(w) && | 888 | if (m_active_index == w && isItemEnabled(w) && |
889 | re.x > ix && re.x < (signed) (ix + menu.item_w) && | 889 | re.x > ix && re.x < (signed) (ix + menu.item_w) && |
890 | re.y > iy && re.y < (signed) (iy + theme().itemHeight())) { | 890 | re.y > iy && re.y < (signed) (iy + theme().itemHeight())) { |
891 | menuitems[w]->click(re.button, re.time); | 891 | menuitems[w]->click(re.button, re.time, re.state); |
892 | } else { | 892 | } else { |
893 | int old = m_active_index; | 893 | int old = m_active_index; |
894 | m_active_index = w; | 894 | m_active_index = w; |
@@ -1054,7 +1054,7 @@ void Menu::keyPressEvent(XKeyEvent &event) { | |||
1054 | else { | 1054 | else { |
1055 | // send fake button click | 1055 | // send fake button click |
1056 | int button = (event.state & ShiftMask) ? 3 : 1; | 1056 | int button = (event.state & ShiftMask) ? 3 : 1; |
1057 | find(m_active_index)->click(button, event.time); | 1057 | find(m_active_index)->click(button, event.time, event.state); |
1058 | m_need_update = true; | 1058 | m_need_update = true; |
1059 | updateMenu(); | 1059 | updateMenu(); |
1060 | } | 1060 | } |
diff --git a/src/FbTk/MenuItem.cc b/src/FbTk/MenuItem.cc index 7d309f4..1e708d3 100644 --- a/src/FbTk/MenuItem.cc +++ b/src/FbTk/MenuItem.cc | |||
@@ -30,12 +30,13 @@ | |||
30 | #include "App.hh" | 30 | #include "App.hh" |
31 | #include "StringUtil.hh" | 31 | #include "StringUtil.hh" |
32 | #include "Menu.hh" | 32 | #include "Menu.hh" |
33 | #include <X11/keysym.h> | ||
33 | 34 | ||
34 | namespace FbTk { | 35 | namespace FbTk { |
35 | 36 | ||
36 | void MenuItem::click(int button, int time) { | 37 | void MenuItem::click(int button, int time, unsigned int mods) { |
37 | if (m_command.get() != 0) { | 38 | if (m_command.get() != 0) { |
38 | if (m_menu && m_close_on_click) | 39 | if (m_menu && m_close_on_click && (mods & ControlMask) == 0) |
39 | m_menu->hide(); | 40 | m_menu->hide(); |
40 | // we need a local variable, since the command may destroy this object | 41 | // we need a local variable, since the command may destroy this object |
41 | RefCount<Command> tmp(m_command); | 42 | RefCount<Command> tmp(m_command); |
diff --git a/src/FbTk/MenuItem.hh b/src/FbTk/MenuItem.hh index 3b02f2e..b6777b7 100644 --- a/src/FbTk/MenuItem.hh +++ b/src/FbTk/MenuItem.hh | |||
@@ -138,7 +138,7 @@ public: | |||
138 | @param button the button number | 138 | @param button the button number |
139 | @param time the time stamp | 139 | @param time the time stamp |
140 | */ | 140 | */ |
141 | virtual void click(int button, int time); | 141 | virtual void click(int button, int time, unsigned int mods); |
142 | /// must use this to show submenu to ensure consistency for object like window menu in ClientMenu (see Workspace.cc) | 142 | /// must use this to show submenu to ensure consistency for object like window menu in ClientMenu (see Workspace.cc) |
143 | virtual void showSubmenu(); | 143 | virtual void showSubmenu(); |
144 | RefCount<Command> &command() { return m_command; } | 144 | RefCount<Command> &command() { return m_command; } |
diff --git a/src/FbTk/MultiButtonMenuItem.cc b/src/FbTk/MultiButtonMenuItem.cc index b3fa1aa..591c13d 100644 --- a/src/FbTk/MultiButtonMenuItem.cc +++ b/src/FbTk/MultiButtonMenuItem.cc | |||
@@ -52,7 +52,7 @@ void MultiButtonMenuItem::setCommand(int button, FbTk::RefCount<FbTk::Command> & | |||
52 | m_button_exe[button - 1] = cmd; | 52 | m_button_exe[button - 1] = cmd; |
53 | } | 53 | } |
54 | 54 | ||
55 | void MultiButtonMenuItem::click(int button, int time) { | 55 | void MultiButtonMenuItem::click(int button, int time, unsigned int mods) { |
56 | if (button <= 0 || button > static_cast<signed>(buttons()) || buttons() == 0) | 56 | if (button <= 0 || button > static_cast<signed>(buttons()) || buttons() == 0) |
57 | return; | 57 | return; |
58 | 58 | ||
diff --git a/src/FbTk/MultiButtonMenuItem.hh b/src/FbTk/MultiButtonMenuItem.hh index 3e82d67..4bc1276 100644 --- a/src/FbTk/MultiButtonMenuItem.hh +++ b/src/FbTk/MultiButtonMenuItem.hh | |||
@@ -38,7 +38,7 @@ public: | |||
38 | /// sets command to specified button | 38 | /// sets command to specified button |
39 | void setCommand(int button, FbTk::RefCount<FbTk::Command> &cmd); | 39 | void setCommand(int button, FbTk::RefCount<FbTk::Command> &cmd); |
40 | /// executes command for the button click | 40 | /// executes command for the button click |
41 | virtual void click(int button, int time); | 41 | virtual void click(int button, int time, unsigned int mods); |
42 | /// @return number of buttons this instance handles | 42 | /// @return number of buttons this instance handles |
43 | inline unsigned int buttons() const { return m_buttons; } | 43 | inline unsigned int buttons() const { return m_buttons; } |
44 | 44 | ||