Author: olivier
Date: 2007-09-07 22:18:04 +0000 (Fri, 07 Sep 2007)
New Revision: 26054
Modified:
xfwm4/trunk/src/client.c
xfwm4/trunk/src/focus.c
xfwm4/trunk/src/keyboard.c
Log:
Fix wrong focus fallback if pending focus window disappears. Allow move/resize
using the mouse even if the keyboard grab fails (bug #3535).
Modified: xfwm4/trunk/src/client.c
===================================================================
--- xfwm4/trunk/src/client.c 2007-09-07 18:37:47 UTC (rev 26053)
+++ xfwm4/trunk/src/client.c 2007-09-07 22:18:04 UTC (rev 26054)
@@ -4295,12 +4295,21 @@
g2 = myScreenGrabPointer (screen_info, ButtonMotionMask |
ButtonReleaseMask,
myDisplayGetCursorMove (display_info),
myDisplayGetCurrentTime (display_info));
- if (!g1 || !g2)
+ if (passdata.use_keys && !g1)
{
- TRACE ("grab failed in clientMove");
+ TRACE ("keyboard grab failed in clientMove");
gdk_beep ();
myScreenUngrabKeyboard (screen_info);
+
+ return;
+ }
+
+ if (!g2)
+ {
+ TRACE ("button grab failed in clientMove");
+
+ gdk_beep ();
myScreenUngrabPointer (screen_info);
return;
@@ -4363,7 +4372,10 @@
}
clientConfigure (c, &wc, changes, NO_CFG_FLAG);
- myScreenUngrabKeyboard (screen_info);
+ if (g1)
+ {
+ myScreenUngrabKeyboard (screen_info);
+ }
if (!passdata.released)
{
/* If this is a drag-move, wait for the button to be released.
@@ -4840,12 +4852,21 @@
myDisplayGetCursorResize(display_info,
passdata.corner),
myDisplayGetCurrentTime (display_info));
- if (!g1 || !g2)
+ if (passdata.use_keys && !g1)
{
- TRACE ("grab failed in clientResize");
+ TRACE ("keyboard grab failed in clientResize");
gdk_beep ();
myScreenUngrabKeyboard (screen_info);
+
+ return;
+ }
+
+ if (!g2)
+ {
+ TRACE ("button grab failed in clientResize");
+
+ gdk_beep ();
myScreenUngrabPointer (screen_info);
return;
@@ -4910,7 +4931,10 @@
c->xsync_waiting = FALSE;
#endif /* HAVE_XSYNC */
- myScreenUngrabKeyboard (screen_info);
+ if (g1)
+ {
+ myScreenUngrabKeyboard (screen_info);
+ }
if (!passdata.released)
{
/* If this is a drag-resize, wait for the button to be released.
Modified: xfwm4/trunk/src/focus.c
===================================================================
--- xfwm4/trunk/src/focus.c 2007-09-07 18:37:47 UTC (rev 26053)
+++ xfwm4/trunk/src/focus.c 2007-09-07 22:18:04 UTC (rev 26054)
@@ -305,12 +305,12 @@
new_focus = NULL;
current_focus = client_focus;
c2 = NULL;
-
+#if 0
if (pending_focus)
{
current_focus = pending_focus;
}
-
+#endif
if ((c || current_focus) && (c != current_focus))
{
return;
Modified: xfwm4/trunk/src/keyboard.c
===================================================================
--- xfwm4/trunk/src/keyboard.c 2007-09-07 18:37:47 UTC (rev 26053)
+++ xfwm4/trunk/src/keyboard.c 2007-09-07 22:18:04 UTC (rev 26054)
@@ -160,50 +160,50 @@
TRACE ("entering grabKey");
- status=GrabSuccess;
+ status = GrabSuccess;
if (key->keycode)
{
if (key->modifier == 0)
{
status |=
- XGrabKey (dpy, key->keycode, AnyModifier, w, FALSE,
- GrabModeAsync, GrabModeSync);
+ XGrabKey (dpy, key->keycode, AnyModifier, w,
+ TRUE, GrabModeAsync, GrabModeSync);
}
else
{
/* Here we grab all combinations of well known modifiers */
status |=
XGrabKey (dpy, key->keycode,
- key->modifier, w, FALSE,
- GrabModeAsync, GrabModeSync);
+ key->modifier, w,
+ TRUE, GrabModeAsync, GrabModeSync);
status |=
XGrabKey (dpy, key->keycode,
key->modifier | ScrollLockMask, w,
- FALSE, GrabModeAsync, GrabModeSync);
+ TRUE, GrabModeAsync, GrabModeSync);
status |=
XGrabKey (dpy, key->keycode,
key->modifier | NumLockMask, w,
- FALSE, GrabModeAsync, GrabModeSync);
+ TRUE, GrabModeAsync, GrabModeSync);
status |=
XGrabKey (dpy, key->keycode,
key->modifier | LockMask, w,
- FALSE, GrabModeAsync, GrabModeSync);
+ TRUE, GrabModeAsync, GrabModeSync);
status |=
XGrabKey (dpy, key->keycode,
- key->modifier | ScrollLockMask |
NumLockMask, w, FALSE,
- GrabModeAsync, GrabModeSync);
+ key->modifier | ScrollLockMask |
NumLockMask, w,
+ TRUE, GrabModeAsync, GrabModeSync);
status |=
XGrabKey (dpy, key->keycode,
- key->modifier | ScrollLockMask |
LockMask, w, FALSE,
- GrabModeAsync, GrabModeSync);
+ key->modifier | ScrollLockMask |
LockMask, w,
+ TRUE, GrabModeAsync, GrabModeSync);
status |=
XGrabKey (dpy, key->keycode,
- key->modifier | LockMask |
NumLockMask, w, FALSE,
- GrabModeAsync, GrabModeSync);
+ key->modifier | LockMask |
NumLockMask, w,
+ TRUE, GrabModeAsync, GrabModeSync);
status |=
XGrabKey (dpy, key->keycode,
- key->modifier | ScrollLockMask |
LockMask | NumLockMask,
- w, FALSE, GrabModeAsync, GrabModeSync);
+ key->modifier | ScrollLockMask |
LockMask | NumLockMask, w,
+ TRUE, GrabModeAsync, GrabModeSync);
}
}
@@ -225,7 +225,7 @@
TRACE ("entering grabButton");
- status=GrabSuccess;
+ status = GrabSuccess;
if (modifier == AnyModifier)
{
status |=
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits