Explorar o código

Mod1-Button2 on a floating but not-fixed client will make it tiled again

Anselm R. Garbe %!s(int64=18) %!d(string=hai) anos
pai
achega
b2f276b0f9
Modificáronse 2 ficheiros con 7 adicións e 3 borrados
  1. 1 1
      dwm.1
  2. 6 2
      dwm.c

+ 1 - 1
dwm.1

@@ -120,7 +120,7 @@ Quit dwm.
 Move current window while dragging. Tiled windows will be toggled to the floating state.
 Move current window while dragging. Tiled windows will be toggled to the floating state.
 .TP
 .TP
 .B Mod1\-Button2
 .B Mod1\-Button2
-Zooms/cycles current window to/from master area (tiled layout only).
+Zooms/cycles current window to/from master area. If it is floating (but not fixed) it will be toggled to the tiled state instead.
 .TP
 .TP
 .B Mod1\-Button3
 .B Mod1\-Button3
 Resize current window while dragging. Tiled windows will be toggled to the floating state.
 Resize current window while dragging. Tiled windows will be toggled to the floating state.

+ 6 - 2
dwm.c

@@ -342,8 +342,12 @@ buttonpress(XEvent *e) {
 				restack();
 				restack();
 			movemouse(c);
 			movemouse(c);
 		}
 		}
-		else if(ev->button == Button2)
-			zoom(NULL);
+		else if(ev->button == Button2) {
+			if(isarrange(tile) && !c->isfixed && c->isfloating)
+				togglefloating(NULL);
+			else
+				zoom(NULL);
+		}
 		else if(ev->button == Button3 && !c->isfixed) {
 		else if(ev->button == Button3 && !c->isfixed) {
 			if(!isarrange(floating) && !c->isfloating)
 			if(!isarrange(floating) && !c->isfloating)
 				togglefloating(NULL);
 				togglefloating(NULL);