File bug-475349-moveInputFocusToOtherWindow.diff of Package compiz
diff --git a/src/display.c b/src/display.c
index 72515b6..1e3593b 100644
--- a/src/display.c
+++ b/src/display.c
@@ -2634,7 +2634,7 @@ manageDisplay (CompDisplay *d)
/* move input focus to root window so that we get a FocusIn event when
moving it to the default window */
- XSetInputFocus (dpy, d->screens->root.id, RevertToPointerRoot,
+ XSetInputFocus (dpy, d->screens->root.id, RevertToNone,
CurrentTime);
if (focus == None || focus == PointerRoot)
diff --git a/src/event.c b/src/event.c
index f9edcfc..35ee54e 100644
--- a/src/event.c
+++ b/src/event.c
@@ -149,9 +149,8 @@ moveInputFocusToOtherWindow (CompWindow *w)
CompWindowTypeDockMask)))
{
moveInputFocusToWindow (ancestor);
+ return;
}
- else
- focusDefaultWindow (w->screen);
}
else if (w->type & (CompWindowTypeDialogMask |
CompWindowTypeModalDialogMask))
@@ -184,12 +183,16 @@ moveInputFocusToOtherWindow (CompWindow *w)
CompWindowTypeDockMask)))
{
moveInputFocusToWindow (focus);
+ return;
}
- else
- focusDefaultWindow (w->screen);
}
- else
+
+ if (!w->attrib.override_redirect)
+ {
+ w->attrib.override_redirect = TRUE;
focusDefaultWindow (w->screen);
+ w->attrib.override_redirect = FALSE;
+ }
}
}
@@ -2262,10 +2265,6 @@ handleEvent (CompDisplay *d,
if (w->parent == &w->screen->root)
d->activeWindow = w->id;
- w->activeNum = w->screen->activeNum++;
-
- addToCurrentActiveWindowHistory (w->screen, w->id);
-
XChangeProperty (d->display, w->screen->root.id,
d->winActiveAtom,
XA_WINDOW, 32, PropModeReplace,
diff --git a/src/screen.c b/src/screen.c
index 12ac091..1669059 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2670,7 +2670,7 @@ focusDefaultWindow (CompScreen *s)
}
else
{
- XSetInputFocus (d->display, s->root.id, RevertToPointerRoot,
+ XSetInputFocus (d->display, s->root.id, RevertToNone,
CurrentTime);
}
}
diff --git a/src/window.c b/src/window.c
index 4ef55d9..37d9cb5 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3215,7 +3215,7 @@ moveInputFocusToWindow (CompWindow *w)
if (w->state & CompWindowStateHiddenMask)
{
- XSetInputFocus (d->display, w->frame, RevertToPointerRoot,
+ XSetInputFocus (d->display, w->frame, RevertToNone,
CurrentTime);
XChangeProperty (d->display, w->parent->id, d->winActiveAtom,
XA_WINDOW, 32, PropModeReplace,
@@ -3227,7 +3227,7 @@ moveInputFocusToWindow (CompWindow *w)
if (w->inputHint)
{
- XSetInputFocus (d->display, w->id, RevertToPointerRoot,
+ XSetInputFocus (d->display, w->id, RevertToNone,
CurrentTime);
setFocus = TRUE;
}
@@ -3268,6 +3268,11 @@ moveInputFocusToWindow (CompWindow *w)
}
}
}
+ else
+ {
+ w->activeNum = w->screen->activeNum++;
+ addToCurrentActiveWindowHistory (w->screen, w->id);
+ }
}
}