[marco] 01/02: debian/patches: Add 0001_fix_synthetic_keybindings.patch.
Martin Wimpress
flexiondotorg-guest at moszumanska.debian.org
Mon Aug 14 10:40:18 UTC 2017
This is an automated email from the git hooks/post-receive script.
flexiondotorg-guest pushed a commit to branch master
in repository marco.
commit 15565adf838677a38a34a18f7b53c2187309c64a
Author: Martin Wimpress <martin.wimpress at ubuntu.com>
Date: Mon Aug 14 11:38:39 2017 +0100
debian/patches: Add 0001_fix_synthetic_keybindings.patch.
---
.../patches/0001_fix_synthetic_keybindings.patch | 47 ++++++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 48 insertions(+)
diff --git a/debian/patches/0001_fix_synthetic_keybindings.patch b/debian/patches/0001_fix_synthetic_keybindings.patch
new file mode 100644
index 0000000..973bae6
--- /dev/null
+++ b/debian/patches/0001_fix_synthetic_keybindings.patch
@@ -0,0 +1,47 @@
+Author: Victor Kareh <vkareh at vkareh.net>
+Description: When a client is passively grabbing keys or mouse clicks that it does not need, it sends them up for other clients to process (this sets the send_event flag inside XEvent).
+
+diff --git a/src/core/display.c b/src/core/display.c
+index 7b3ec50..e247ed3 100644
+--- a/src/core/display.c
++++ b/src/core/display.c
+@@ -1779,6 +1779,20 @@ static gboolean event_callback(XEvent* event, gpointer data)
+ meta_display_process_key_event (display, window, event);
+ break;
+ case ButtonPress:
++ /* Use window under pointer when processing synthetic events from another client */
++ if (window == NULL && event->xbutton.send_event)
++ {
++ int x, y, root_x, root_y;
++ Window root, child;
++ guint mask;
++ XQueryPointer (display->xdisplay,
++ event->xany.window,
++ &root, &child,
++ &root_x, &root_y,
++ &x, &y,
++ &mask);
++ window = meta_display_lookup_x_window (display, child);
++ }
+ if ((window &&
+ grab_op_is_mouse (display->grab_op) &&
+ display->grab_button != (int) event->xbutton.button &&
+diff --git a/src/core/keybindings.c b/src/core/keybindings.c
+index fe5f0f0..f4eb01b 100644
+--- a/src/core/keybindings.c
++++ b/src/core/keybindings.c
+@@ -1310,6 +1310,14 @@ meta_display_process_key_event (MetaDisplay *display,
+ meta_ui_window_is_widget (screen->ui, event->xany.window))
+ return;
+
++ /* Use focused window when processing synthetic events from another client */
++ if (window == NULL && event->xkey.send_event) {
++ Window focus = None;
++ int ret_to = RevertToPointerRoot;
++ XGetInputFocus (display->xdisplay, &focus, &ret_to);
++ window = meta_display_lookup_x_window (display, focus);
++ }
++
+ /* window may be NULL */
+
+ #ifdef HAVE_XKB
diff --git a/debian/patches/series b/debian/patches/series
index 260c82a..c93024f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
0000_no_scale.patch
+0001_fix_synthetic_keybindings.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mate/marco.git
More information about the pkg-mate-commits
mailing list