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);
+	}
     }
 }
 
openSUSE Build Service is sponsored by