summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@fedoraproject.org>2009-11-25 02:54:28 +0000
committerMatthias Clasen <mclasen@fedoraproject.org>2009-11-25 02:54:28 +0000
commitff33ff68439894a5935dac622499179f171563a9 (patch)
tree114be39629efe4609286b4b889bb51024125836f
parentdc8d2a069372dc9c64c0bc7ff461c5417febb7cc (diff)
downloadmetacity-ff33ff68439894a5935dac622499179f171563a9.tar.gz
metacity-ff33ff68439894a5935dac622499179f171563a9.tar.xz
metacity-ff33ff68439894a5935dac622499179f171563a9.zip
Avoid key repeat for the screenshot key binding
-rw-r--r--metacity.spec40
-rw-r--r--screenshot-forkbomb.patch84
2 files changed, 123 insertions, 1 deletions
diff --git a/metacity.spec b/metacity.spec
index 0999ec7..a9a1169 100644
--- a/metacity.spec
+++ b/metacity.spec
@@ -1,7 +1,9 @@
+%define _default_patch_fuzz 999
+
Summary: Unobtrusive window manager
Name: metacity
Version: 2.28.0
-Release: 1%{?dist}
+Release: 10%{?dist}
URL: http://download.gnome.org/sources/metacity/
Source0: http://download.gnome.org/sources/metacity/2.28/metacity-%{version}.tar.bz2
# http://bugzilla.gnome.org/show_bug.cgi?id=558723
@@ -16,6 +18,16 @@ Patch7: 0001-bell-increase-bell-rate-limit-from-1-s-to-1-100ms.patch
Patch8: 0001-sound-ask-libcanberra-to-cache-alert-desktop-switch-.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=593358
Patch9: 0001-tooltip-set-window-type-hint-for-self-drawn-tooltips.patch
+# http://bugzilla.gnome.org/show_bug.cgi?id=336750
+Patch10: screenshot-forkbomb.patch
+
+# fedora specific patches
+Patch11: workspaces.patch
+Patch12: fresh-tooltips.patch
+
+# https://bugzilla.gnome.org/show_bug.cgi?id=600864
+# https://bugzilla.redhat.com/show_bug.cgi?id=533239
+Patch13: metacity-dont-do-bad-stuff-on-sigterm.patch
License: GPLv2+
Group: User Interface/Desktops
@@ -81,6 +93,10 @@ API. This package exists purely for technical reasons.
%patch7 -p1 -b .bell
%patch8 -p1 -b .sound-cache
%patch9 -p1 -b .tooltip
+%patch10 -p1 -b .screenshot-forkbomb
+%patch11 -p1 -b .workspaces
+%patch12 -p1 -b .fresh-tooltips
+%patch13 -p1 -b .sigterm
# force regeneration
rm src/metacity.schemas
@@ -188,6 +204,28 @@ fi
%{_mandir}/man1/metacity-window-demo.1.gz
%changelog
+* Tue Nov 24 2009 Matthias Clasen <mclasen@redhat.com> - 2.28.0-10
+- Disable key repeat for screenshot keybinding (#506369)
+
+* Thu Nov 05 2009 Ray Strode <rstrode@redhat.com> 2.28.0-9
+- One stab at the metacity patch
+
+* Thu Nov 05 2009 Ray Strode <rstrode@redhat.com> 2.28.0-8
+- Minor clean ups to last patch based on feedback from
+ Owen
+
+* Thu Nov 05 2009 Ray Strode <rstrode@redhat.com> 2.28.0-7
+- Don't do bad things on sigterm
+
+* Wed Oct 28 2009 Matthias Clasen <mclasen@redhat.cm> - 2.28.0-6
+- Make tooltips look sharper
+
+* Wed Oct 21 2009 Matthias Clasen <mclasen@redhat.cm> - 2.28.0-4
+- Make tooltips look match GTK+
+
+* Thu Oct 15 2009 Matthias Clasen <mclasen@redhat.cm> - 2.28.0-3
+- Tweak the default number of workspaces
+
* Tue Sep 22 2009 Matthias Clasen <mclasen@redhat.cm> - 2.28.0-1
- Update to 2.28.0
diff --git a/screenshot-forkbomb.patch b/screenshot-forkbomb.patch
new file mode 100644
index 0000000..3df4b5b
--- /dev/null
+++ b/screenshot-forkbomb.patch
@@ -0,0 +1,84 @@
+--- metacity-2.28.0/src/include/all-keybindings.h 2009-09-08 16:55:35.000000000 -0400
++++ hacked/src/include/all-keybindings.h 2009-11-24 21:32:04.351687546 -0500
+@@ -76,6 +76,7 @@
+ #define BINDING_PER_WINDOW 0x01
+ #define BINDING_REVERSES 0x02
+ #define BINDING_IS_REVERSED 0x04
++#define BINDING_NO_REPEAT 0x08
+
+ #endif /* _BINDINGS_DEFINED_CONSTANTS */
+
+@@ -234,9 +235,9 @@
+ keybind (run_command_31, handle_run_command, 30, 0, NULL, NULL)
+ keybind (run_command_32, handle_run_command, 31, 0, NULL, NULL)
+
+-keybind (run_command_screenshot, handle_run_command, 32, 0, "Print",
++keybind (run_command_screenshot, handle_run_command, 32, BINDING_NO_REPEAT, "Print",
+ _("Take a screenshot"))
+-keybind (run_command_window_screenshot, handle_run_command, 33, 0,"<Alt>Print",
++keybind (run_command_window_screenshot, handle_run_command, 33, BINDING_NO_REPEAT, "<Alt>Print",
+ _("Take a screenshot of a window"))
+
+ keybind (run_command_terminal, handle_run_terminal, 0, 0, NULL, _("Run a terminal"))
+--- metacity-2.28.0/src/core/keybindings.c 2009-09-08 16:55:35.000000000 -0400
++++ hacked/src/core/keybindings.c 2009-11-24 21:37:02.614687728 -0500
+@@ -122,6 +122,7 @@
+ unsigned int mask;
+ MetaVirtualModifier modifiers;
+ const MetaKeyHandler *handler;
++ gboolean repeating;
+ };
+
+ #define keybind(name, handler, param, flags, stroke, description) \
+@@ -1172,10 +1173,6 @@
+ {
+ int i;
+
+- /* we used to have release-based bindings but no longer. */
+- if (event->type == KeyRelease)
+- return FALSE;
+-
+ /*
+ * TODO: This would be better done with a hash table;
+ * it doesn't suit to use O(n) for such a common operation.
+@@ -1185,12 +1182,12 @@
+ const MetaKeyHandler *handler = bindings[i].handler;
+
+ if ((!on_window && handler->flags & BINDING_PER_WINDOW) ||
+- event->type != KeyPress ||
++ (event->type == KeyRelease && !(handler->flags & BINDING_NO_REPEAT)) ||
+ bindings[i].keycode != event->xkey.keycode ||
+ ((event->xkey.state & 0xff & ~(display->ignored_modifier_mask)) !=
+ bindings[i].mask))
+ continue;
+-
++
+ /*
+ * window must be non-NULL for on_window to be true,
+ * and so also window must be non-NULL if we get here and
+@@ -2370,6 +2367,25 @@
+ const char *command;
+ GError *err;
+
++ if (event->type == KeyRelease)
++ {
++ meta_topic (META_DEBUG_KEYBINDINGS,
++ "Key release, binding %s\n",
++ binding->name);
++ binding->repeating = FALSE;
++ return;
++ }
++
++ if (binding->repeating)
++ {
++ meta_topic (META_DEBUG_KEYBINDINGS,
++ "Key repeat ignored, binding %s\n",
++ binding->name);
++ return;
++ }
++
++ binding->repeating = TRUE;
++
+ command = meta_prefs_get_command (which);
+
+ if (command == NULL)