All pastes #939775 Raw Edit

Zeug

public text v1 · immutable
·published 2008-03-12 15:56 UTC
rendered paste body
diff --git a/plugins/scale.c b/plugins/scale.c
index 0d7eeb2..ab0f694 100644
--- a/plugins/scale.c
+++ b/plugins/scale.c
@@ -987,6 +987,65 @@ scaleCheckForWindowAt (CompScreen *s,
 }
 
 static void
+scaleSelectWindow (CompWindow *w)
+
+{
+    SCALE_DISPLAY (w->screen->display);
+
+    if (sd->selectedWindow != w->id)
+    {
+	CompWindow *old, *new;
+
+	old = findWindowAtScreen (w->screen, sd->selectedWindow);
+	new = findWindowAtScreen (w->screen, w->id);
+
+	sd->selectedWindow = w->id;
+
+	if (old)
+	    addWindowDamage (old);
+
+	if (new)
+	    addWindowDamage (new);
+    }
+}
+
+static Bool
+scaleSelectWindowAt (CompScreen *s,
+		     int	 x,
+		     int	 y,
+		     Bool	 moveInputFocus)
+
+{
+    CompWindow *w;
+
+    SCALE_DISPLAY (s->display);
+
+    w = scaleCheckForWindowAt (s, x, y);
+    if (w && isScaleWin (w))
+    {
+	SCALE_SCREEN (s);
+
+	(*ss->selectWindow) (w);
+
+	if (moveInputFocus)
+	{
+	    sd->lastActiveNum    = w->activeNum;
+	    sd->lastActiveWindow = w->id;
+
+	    moveInputFocusToWindow (w);
+	}
+
+	sd->hoveredWindow = w->id;
+
+	return TRUE;
+    }
+
+    sd->hoveredWindow = None;
+
+    return FALSE;
+}
+
+static void
 sendViewportMoveRequest (CompScreen *s,
 			 int	    x,
 			 int	    y)
@@ -1075,17 +1134,6 @@ scaleTerminate (CompDisplay     *d,
 	    {
 		CompWindow *w;
 
-		for (w = s->windows; w; w = w->next)
-		{
-		    SCALE_WINDOW (w);
-
-		    if (sw->slot)
-		    {
-			sw->slot = 0;
-			sw->adjust = TRUE;
-		    }
-		}
-
 		if (state & CompActionStateCancel)
 		{
 		    if (d->activeWindow != sd->previousActiveWindow)
@@ -1097,6 +1145,9 @@ scaleTerminate (CompDisplay     *d,
 		}
 		else if (ss->state != SCALE_STATE_IN)
 		{
+		    if (state & CompActionStateTermButton)
+			scaleSelectWindowAt (s, pointerX, pointerY, TRUE);
+
 		    w = findWindowAtScreen (s, sd->lastActiveWindow);
 		    if (w)
 		    {
@@ -1113,6 +1164,17 @@ scaleTerminate (CompDisplay     *d,
 		    }
 		}
 
+		for (w = s->windows; w; w = w->next)
+		{
+		    SCALE_WINDOW (w);
+
+		    if (sw->slot)
+		    {
+			sw->slot = 0;
+			sw->adjust = TRUE;
+		    }
+		}
+
 		ss->state = SCALE_STATE_IN;
 
 		damageScreen (s);
@@ -1372,65 +1434,6 @@ scaleInitiateOutput (CompDisplay     *d,
 }
 
 static void
-scaleSelectWindow (CompWindow *w)
-
-{
-    SCALE_DISPLAY (w->screen->display);
-
-    if (sd->selectedWindow != w->id)
-    {
-	CompWindow *old, *new;
-
-	old = findWindowAtScreen (w->screen, sd->selectedWindow);
-	new = findWindowAtScreen (w->screen, w->id);
-
-	sd->selectedWindow = w->id;
-
-	if (old)
-	    addWindowDamage (old);
-
-	if (new)
-	    addWindowDamage (new);
-    }
-}
-
-static Bool
-scaleSelectWindowAt (CompScreen *s,
-		     int	 x,
-		     int	 y,
-		     Bool	 moveInputFocus)
-
-{
-    CompWindow *w;
-
-    SCALE_DISPLAY (s->display);
-
-    w = scaleCheckForWindowAt (s, x, y);
-    if (w && isScaleWin (w))
-    {
-	SCALE_SCREEN (s);
-
-	(*ss->selectWindow) (w);
-
-	if (moveInputFocus)
-	{
-	    sd->lastActiveNum    = w->activeNum;
-	    sd->lastActiveWindow = w->id;
-
-	    moveInputFocusToWindow (w);
-	}
-
-	sd->hoveredWindow = w->id;
-
-	return TRUE;
-    }
-
-    sd->hoveredWindow = None;
-
-    return FALSE;
-}
-
-static void
 scaleMoveFocusWindow (CompScreen *s,
 		      int	 dx,
 		      int	 dy)