From a8a42e3b169e772493c41cb2cd9b83919c6c212f Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Sun, 22 May 2011 11:53:43 +0100 Subject: Add upstream patch to allow keybindings ungrab Needed for Sugar: http://dev.laptop.org/ticket/10693 OK'd for F16 inclusion by Colin Walters --- allow-keybindings-ungrab.patch | 80 ++++++++++++++++++++++++++++++++++++++++++ metacity.spec | 13 ++++++- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 allow-keybindings-ungrab.patch diff --git a/allow-keybindings-ungrab.patch b/allow-keybindings-ungrab.patch new file mode 100644 index 0000000..25d82aa --- /dev/null +++ b/allow-keybindings-ungrab.patch @@ -0,0 +1,80 @@ +From 429b200aa0e21b33a720790d18e059491eb60089 Mon Sep 17 00:00:00 2001 +From: Daniel Drake +Date: Wed, 02 Mar 2011 15:52:53 +0000 +Subject: Disable keybindings message should ungrab keys + +The disable-keybindings action is currently only 'soft' in that it +just causes Metacity to ignore keypresses; the keys themselves are left +bound. + +Sugar would like to use this message to actually disable the bindings +*and* release the grabs so that it can implement its own Alt-Tab handler. + +This patch implements this. Based on earlier work by Bernie Innocenti. +--- +diff --git a/src/core/display.c b/src/core/display.c +index 518b4f3..3143e0c 100644 +--- a/src/core/display.c ++++ b/src/core/display.c +@@ -2268,7 +2268,7 @@ event_callback (XEvent *event, + { + meta_verbose ("Received set keybindings request = %d\n", + (int) event->xclient.data.l[0]); +- meta_set_keybindings_disabled (!event->xclient.data.l[0]); ++ meta_set_keybindings_disabled (display, !event->xclient.data.l[0]); + } + else if (event->xclient.message_type == + display->atom__METACITY_TOGGLE_VERBOSE) +diff --git a/src/core/keybindings.c b/src/core/keybindings.c +index 8ea6b41..da274e0 100644 +--- a/src/core/keybindings.c ++++ b/src/core/keybindings.c +@@ -817,6 +817,9 @@ meta_screen_grab_keys (MetaScreen *screen) + if (screen->keys_grabbed) + return; + ++ if (all_bindings_disabled) ++ return; ++ + grab_keys (screen->display->key_bindings, + screen->display->n_key_bindings, + screen->display, screen->xroot, +@@ -841,6 +844,9 @@ meta_window_grab_keys (MetaWindow *window) + if (window->all_keys_grabbed) + return; + ++ if (all_bindings_disabled) ++ return; ++ + if (window->type == META_WINDOW_DOCK) + { + if (window->keys_grabbed) +@@ -3356,9 +3362,11 @@ handle_set_spew_mark (MetaDisplay *display, + } + + void +-meta_set_keybindings_disabled (gboolean setting) ++meta_set_keybindings_disabled (MetaDisplay *display, ++ gboolean setting) + { + all_bindings_disabled = setting; ++ regrab_key_bindings (display); + meta_topic (META_DEBUG_KEYBINDINGS, + "Keybindings %s\n", all_bindings_disabled ? "disabled" : "enabled"); + } +diff --git a/src/core/keybindings.h b/src/core/keybindings.h +index 618520b..f845b48 100644 +--- a/src/core/keybindings.h ++++ b/src/core/keybindings.h +@@ -49,7 +49,8 @@ void meta_window_ungrab_all_keys (MetaWindow *window, + void meta_display_process_key_event (MetaDisplay *display, + MetaWindow *window, + XEvent *event); +-void meta_set_keybindings_disabled (gboolean setting); ++void meta_set_keybindings_disabled (MetaDisplay *display, ++ gboolean setting); + void meta_display_process_mapping_event (MetaDisplay *display, + XEvent *event); + +-- +cgit v0.9 diff --git a/metacity.spec b/metacity.spec index d2e1152..ce86dcb 100644 --- a/metacity.spec +++ b/metacity.spec @@ -3,7 +3,7 @@ Summary: Unobtrusive window manager Name: metacity Version: 2.34.0 -Release: 1%{?dist} +Release: 2%{?dist} URL: http://download.gnome.org/sources/metacity/ Source0: http://download.gnome.org/sources/metacity/2.34/metacity-%{version}.tar.bz2 # http://bugzilla.gnome.org/show_bug.cgi?id=558723 @@ -38,6 +38,11 @@ Patch29: Allow-breaking-out-from-maximization-during-mouse.patch # default window icon: https://bugzilla.gnome.org/show_bug.cgi?id=616246 Patch30: default-window-icon.patch + +# allow keybindings ungrab: https://bugzilla.gnome.org/show_bug.cgi?id=643682 +# already upstream +Patch31: allow-keybindings-ungrab.patch + Source1: window.png Source2: mini-window.png @@ -115,6 +120,9 @@ API. This package exists purely for technical reasons. %patch29 -p1 -b .mouse-unmaximize %patch30 -p1 -b .window-icon + +%patch31 -p1 -b .keybindings-ungrab + cp -p %{SOURCE1} %{SOURCE2} src/ # force regeneration @@ -197,6 +205,9 @@ find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' %{_mandir}/man1/metacity-window-demo.1.gz %changelog +* Sun May 22 2011 Daniel Drake - 2.34.0-2 +- Add upstream patch to allow keybindings ungrab, needed for Sugar + * Mon Apr 4 2011 Matthias Clasen - 2.34.0-1 - Update to 2.34.0 -- cgit