From 1ffd89672fa62cdf2c9e707fdf53e6d8a0080b6f Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Wed, 16 Aug 2006 17:38:41 +0000 Subject: [PATCH] don't allow inventive users to open the menu while in an interactive grab (ie changing focus or desktop) --- openbox/keyboard.c | 5 +++++ openbox/keyboard.h | 1 + openbox/menu.c | 4 +++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/openbox/keyboard.c b/openbox/keyboard.c index 7f930f8f..09b99bcc 100644 --- a/openbox/keyboard.c +++ b/openbox/keyboard.c @@ -288,6 +288,11 @@ void keyboard_event(ObClient *client, const XEvent *e) } } +gboolean keyboard_interactively_grabbed() +{ + return !!interactive_states; +} + void keyboard_startup(gboolean reconfig) { grab_keys(TRUE); diff --git a/openbox/keyboard.h b/openbox/keyboard.h index 8a9eb47f..6e539cff 100644 --- a/openbox/keyboard.h +++ b/openbox/keyboard.h @@ -43,6 +43,7 @@ gboolean keyboard_interactive_grab(guint state, struct _ObClient *client, struct _ObAction *action); gboolean keyboard_process_interactive_grab(const XEvent *e, struct _ObClient **client); +gboolean keyboard_interactively_grabbed(); void keyboard_grab_for_client(struct _ObClient *c, gboolean grab); diff --git a/openbox/menu.c b/openbox/menu.c index 50387665..c1d1138b 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -24,6 +24,7 @@ #include "config.h" #include "screen.h" #include "menuframe.h" +#include "keyboard.h" #include "geom.h" #include "misc.h" #include "client_menu.h" @@ -286,7 +287,8 @@ void menu_show(gchar *name, gint x, gint y, ObClient *client) ObMenuFrame *frame; guint i; - if (!(self = menu_from_name(name))) return; + if (!(self = menu_from_name(name)) + || keyboard_interactively_grabbed()) return; /* if the requested menu is already the top visible menu, then don't bother */ -- 2.39.2