[Xfce4-commits] [xfce/xfwm4] 01/01: device: Move error trap/push closer to X11 grabs
noreply at xfce.org
noreply at xfce.org
Mon Apr 13 14:33:16 CEST 2020
This is an automated email from the git hooks/post-receive script.
o l i v i e r p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository xfce/xfwm4.
commit a1c712fe162890f30a04459468e80d206bfc9179
Author: Olivier Fourdan <fourdan at xfce.org>
Date: Mon Apr 13 14:24:27 2020 +0200
device: Move error trap/push closer to X11 grabs
As we already do an error trap/push with X11 core devices, do the same
with Xi2 grabs and remove the check from the callers as it is not needed
anymore.
Signed-off-by: Olivier Fourdan <fourdan at xfce.org>
---
src/client.c | 2 --
src/device.c | 29 +++++++++++++++++++++++++----
src/focus.c | 4 ----
3 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/src/client.c b/src/client.c
index 4286d77..0808e5a 100644
--- a/src/client.c
+++ b/src/client.c
@@ -341,10 +341,8 @@ clientUngrabButtons (Client *c)
{
g_return_if_fail (c != NULL);
TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
- myDisplayErrorTrapPush (c->screen_info->display_info);
xfwm_device_ungrab_button (c->screen_info->display_info->devices, clientGetXDisplay (c),
AnyButton, AnyModifier, c->window);
- myDisplayErrorTrapPopIgnored (c->screen_info->display_info);
}
static gboolean
diff --git a/src/device.c b/src/device.c
index dc89b3f..d912d72 100644
--- a/src/device.c
+++ b/src/device.c
@@ -429,26 +429,35 @@ xfwm_device_grab_button (XfwmDevices *devices, Display *display,
xi2_modifiers.status = 0;
xfwm_device_fill_xi2_event_mask (&xievent_mask, event_mask);
+ myDisplayErrorTrapPush (display_info);
status = XIGrabButton (display, devices->pointer.xi2_device, button, grab_window,
cursor, grab_mode, paired_device_mode, owner_events,
&xievent_mask, 1, &xi2_modifiers);
g_free (xievent_mask.mask);
- result = (status == XIGrabSuccess);
+ if (myDisplayErrorTrapPop (display_info) || status != XIGrabSuccess)
+ {
+ return FALSE;
+ }
}
#endif
- return result;
+ return TRUE;
}
void
xfwm_device_ungrab_button (XfwmDevices *devices, Display *display,
guint button, guint modifiers, Window grab_window)
{
+ DisplayInfo *display_info;
#ifdef HAVE_XI2
XIGrabModifiers xi2_modifiers;
#endif
+ display_info = myDisplayGetDefault ();
+ myDisplayErrorTrapPush (display_info);
+
XUngrabButton (display, button, modifiers, grab_window);
+
#ifdef HAVE_XI2
if (devices->xi2_available)
{
@@ -459,6 +468,8 @@ xfwm_device_ungrab_button (XfwmDevices *devices, Display *display,
grab_window, 1, &xi2_modifiers);
}
#endif
+
+ myDisplayErrorTrapPopIgnored (display_info);
}
gboolean
@@ -491,25 +502,33 @@ xfwm_device_grab_keycode (XfwmDevices *devices, Display *display,
xi2_modifiers.status = 0;
xfwm_device_fill_xi2_event_mask (&xievent_mask, event_mask);
+ myDisplayErrorTrapPush (display_info);
status = XIGrabKeycode (display, devices->keyboard.xi2_device, keycode, grab_window,
grab_mode, paired_device_mode, owner_events,
&xievent_mask, 1, &xi2_modifiers);
g_free (xievent_mask.mask);
- result = (status == XIGrabSuccess);
+ if (myDisplayErrorTrapPop (display_info) || status != XIGrabSuccess)
+ {
+ return FALSE;
+ }
}
#endif
- return result;
+ return TRUE;
}
void
xfwm_device_ungrab_keycode (XfwmDevices *devices, Display *display,
gint keycode, guint modifiers, Window grab_window)
{
+ DisplayInfo *display_info;
#ifdef HAVE_XI2
XIGrabModifiers xi2_modifiers;
#endif
+ display_info = myDisplayGetDefault ();
+ myDisplayErrorTrapPush (display_info);
+
XUngrabKey (display, keycode, modifiers, grab_window);
#ifdef HAVE_XI2
@@ -522,6 +541,8 @@ xfwm_device_ungrab_keycode (XfwmDevices *devices, Display *display,
grab_window, 1, &xi2_modifiers);
}
#endif
+
+ myDisplayErrorTrapPopIgnored (display_info);
}
#ifdef HAVE_XI2
diff --git a/src/focus.c b/src/focus.c
index af05023..eb5b1b9 100644
--- a/src/focus.c
+++ b/src/focus.c
@@ -716,7 +716,6 @@ clientGrabMouseButton (Client * c)
TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
screen_info = c->screen_info;
- myDisplayErrorTrapPush (screen_info->display_info);
if (screen_info->params->raise_with_any_button)
{
grabButton (screen_info->display_info->devices, clientGetXDisplay (c),
@@ -727,7 +726,6 @@ clientGrabMouseButton (Client * c)
grabButton (screen_info->display_info->devices, clientGetXDisplay (c),
Button1, AnyModifier, c->window);
}
- myDisplayErrorTrapPopIgnored (screen_info->display_info);
}
void
@@ -736,12 +734,10 @@ clientUngrabMouseButton (Client * c)
g_return_if_fail (c != NULL);
TRACE ("client \"%s\" (0x%lx)", c->name, c->window);
- myDisplayErrorTrapPush (c->screen_info->display_info);
ungrabButton (c->screen_info->display_info->devices, clientGetXDisplay (c),
AnyButton, AnyModifier, c->window);
/* We've ungrabbed way too much, so regrab the regular buttons/modifiers */
clientGrabButtons (c);
- myDisplayErrorTrapPopIgnored (c->screen_info->display_info);
}
void
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list