diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | src/FbTk/Menu.cc | 2 | ||||
-rw-r--r-- | src/MenuCreator.cc | 14 |
3 files changed, 6 insertions, 12 deletions
@@ -1,6 +1,8 @@ | |||
1 | (Format: Year/Month/Day) | 1 | (Format: Year/Month/Day) |
2 | Changes for 1.0.1: | 2 | Changes for 1.0.1: |
3 | *07/12/13: | 3 | *07/12/13: |
4 | * Close menus only when they lose focus (Mark) | ||
5 | MenuCreator.cc FbTk/Menu.cc | ||
4 | * Moved command parsing code all over the place -- expect any patches that | 6 | * Moved command parsing code all over the place -- expect any patches that |
5 | add new commands to be broken (Mark, Simon) | 7 | add new commands to be broken (Mark, Simon) |
6 | Added FbTk/CommandRegistry.cc/hh | 8 | Added FbTk/CommandRegistry.cc/hh |
diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc index 4c41161..88240f1 100644 --- a/src/FbTk/Menu.cc +++ b/src/FbTk/Menu.cc | |||
@@ -815,6 +815,8 @@ void Menu::handleEvent(XEvent &event) { | |||
815 | if (event.type == FocusOut) { | 815 | if (event.type == FocusOut) { |
816 | if (s_focused == this) | 816 | if (s_focused == this) |
817 | s_focused = 0; | 817 | s_focused = 0; |
818 | if (shown == this && !m_torn) | ||
819 | hide(); | ||
818 | // I don't know why, but I get a FocusIn event when closing the menu with | 820 | // I don't know why, but I get a FocusIn event when closing the menu with |
819 | // the mouse over it -- probably an xorg bug, but it's easy to address here | 821 | // the mouse over it -- probably an xorg bug, but it's easy to address here |
820 | } else if (event.type == FocusIn && m_visible) { | 822 | } else if (event.type == FocusIn && m_visible) { |
diff --git a/src/MenuCreator.cc b/src/MenuCreator.cc index b98287b..0597d6c 100644 --- a/src/MenuCreator.cc +++ b/src/MenuCreator.cc | |||
@@ -256,21 +256,11 @@ static void translateMenuItem(Parser &parse, ParseItem &pitem, FbTk::StringConve | |||
256 | // execute and hide menu | 256 | // execute and hide menu |
257 | using namespace FbTk; | 257 | using namespace FbTk; |
258 | RefCount<Command> exec_cmd(FbTk::CommandRegistry::instance().parseLine("exec " + str_cmd)); | 258 | RefCount<Command> exec_cmd(FbTk::CommandRegistry::instance().parseLine("exec " + str_cmd)); |
259 | RefCount<Command> hide_menu(FbTk::CommandRegistry::instance().parseLine("hidemenus")); | 259 | menu.insert(str_label, exec_cmd); |
260 | MacroCommand *exec_and_hide = new FbTk::MacroCommand(); | ||
261 | exec_and_hide->add(hide_menu); | ||
262 | exec_and_hide->add(exec_cmd); | ||
263 | RefCount<Command> exec_and_hide_cmd(exec_and_hide); | ||
264 | menu.insert(str_label, exec_and_hide_cmd); | ||
265 | } else if (str_key == "macrocmd") { | 260 | } else if (str_key == "macrocmd") { |
266 | using namespace FbTk; | 261 | using namespace FbTk; |
267 | RefCount<Command> macro_cmd(FbTk::CommandRegistry::instance().parseLine("macrocmd " + str_cmd)); | 262 | RefCount<Command> macro_cmd(FbTk::CommandRegistry::instance().parseLine("macrocmd " + str_cmd)); |
268 | RefCount<Command> hide_menu(FbTk::CommandRegistry::instance().parseLine("hidemenus")); | 263 | menu.insert(str_label, macro_cmd); |
269 | MacroCommand *exec_and_hide = new FbTk::MacroCommand(); | ||
270 | exec_and_hide->add(hide_menu); | ||
271 | exec_and_hide->add(macro_cmd); | ||
272 | RefCount<Command> exec_and_hide_cmd(exec_and_hide); | ||
273 | menu.insert(str_label, exec_and_hide_cmd); | ||
274 | } else if (str_key == "style") { // style | 264 | } else if (str_key == "style") { // style |
275 | menu.insert(new StyleMenuItem(str_label, str_cmd)); | 265 | menu.insert(new StyleMenuItem(str_label, str_cmd)); |
276 | } else if (str_key == "config") { | 266 | } else if (str_key == "config") { |