Add upstream patch to allow keybindings ungrab
Needed for Sugar: http://dev.laptop.org/ticket/10693 OK'd for F16 inclusion by Colin Walters
This commit is contained in:
parent
333019edd2
commit
a8a42e3b16
80
allow-keybindings-ungrab.patch
Normal file
80
allow-keybindings-ungrab.patch
Normal file
@ -0,0 +1,80 @@
|
||||
From 429b200aa0e21b33a720790d18e059491eb60089 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Drake <dsd@laptop.org>
|
||||
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
|
@ -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 <dsd@laptop.org> - 2.34.0-2
|
||||
- Add upstream patch to allow keybindings ungrab, needed for Sugar
|
||||
|
||||
* Mon Apr 4 2011 Matthias Clasen <mclasen@redhat.com> - 2.34.0-1
|
||||
- Update to 2.34.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user