summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--src/FbTk/Menu.cc2
-rw-r--r--src/MenuCreator.cc14
3 files changed, 6 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index c942584..1ac500c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
1 (Format: Year/Month/Day) 1 (Format: Year/Month/Day)
2Changes for 1.0.1: 2Changes 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") {