From 3564d78d30031fa774dda1a4373bae0ea0745abb Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 24 Sep 2009 22:53:16 -0400 Subject: [PATCH] Use shellwm.takeover_keybinding for Alt-F1 and Alt-F2 This fixes a regression where we weren't using the correct event timestamps, because for both of these we were sending an XClientMessage to ourself. https://bugzilla.gnome.org/show_bug.cgi?id=596262 --- js/ui/main.js | 9 ++++++++ src/gnome-shell-plugin.c | 45 ---------------------------------------- 2 files changed, 9 insertions(+), 45 deletions(-) diff --git a/js/ui/main.js b/js/ui/main.js index c6b09d9c6..f48d38b44 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -79,6 +79,15 @@ function start() { // Make sure not more than one run dialog is shown. getRunDialog().open(); }); + let shellwm = global.window_manager; + shellwm.takeover_keybinding("panel_main_menu"); + shellwm.connect("keybinding::panel_main_menu", function () { + overview.toggle(); + }); + shellwm.takeover_keybinding("panel_run_dialog"); + shellwm.connect("keybinding::panel_run_dialog", function () { + getRunDialog().open(); + }); overview = new Overview.Overview(); chrome = new Chrome.Chrome(); diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c index f816dadd7..0485480f7 100644 --- a/src/gnome-shell-plugin.c +++ b/src/gnome-shell-plugin.c @@ -192,13 +192,6 @@ gnome_shell_plugin_constructed (GObject *object) shell_plugin->gjs_context = gjs_context_new_with_search_path(search_path); g_strfreev(search_path); - shell_plugin->panel_action = XInternAtom (meta_display_get_xdisplay (display), - "_GNOME_PANEL_ACTION", FALSE); - shell_plugin->panel_action_run_dialog = XInternAtom (meta_display_get_xdisplay (display), - "_GNOME_PANEL_ACTION_RUN_DIALOG", FALSE); - shell_plugin->panel_action_main_menu = XInternAtom (meta_display_get_xdisplay (display), - "_GNOME_PANEL_ACTION_MAIN_MENU", FALSE); - if (!gjs_context_eval (shell_plugin->gjs_context, "const Main = imports.ui.main; Main.start();", -1, @@ -318,48 +311,10 @@ gnome_shell_plugin_kill_effect (MutterPlugin *plugin, actor, events); } -static gboolean -handle_panel_event (GnomeShellPlugin *shell_plugin, - XEvent *xev) -{ - MutterPlugin *plugin = MUTTER_PLUGIN (shell_plugin); - MetaScreen *screen; - MetaDisplay *display; - XClientMessageEvent *xev_client; - Window root; - - screen = mutter_plugin_get_screen (plugin); - display = meta_screen_get_display (screen); - - if (xev->type != ClientMessage) - return FALSE; - - root = meta_screen_get_xroot (screen); - - xev_client = (XClientMessageEvent*) xev; - if (!(xev_client->window == root && - xev_client->message_type == shell_plugin->panel_action && - xev_client->format == 32)) - return FALSE; - - if (xev_client->data.l[0] == shell_plugin->panel_action_run_dialog) - g_signal_emit_by_name (shell_global_get (), "panel-run-dialog", - (guint32) xev_client->data.l[1]); - else if (xev_client->data.l[0] == shell_plugin->panel_action_main_menu) - g_signal_emit_by_name (shell_global_get (), "panel-main-menu", - (guint32) xev_client->data.l[1]); - - return TRUE; -} - static gboolean gnome_shell_plugin_xevent_filter (MutterPlugin *plugin, XEvent *xev) { - GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin); - - if (handle_panel_event (shell_plugin, xev)) - return TRUE; return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE; }