apply anysize patch - success
This commit is contained in:
		
							parent
							
								
									27e8772cc2
								
							
						
					
					
						commit
						97d335e757
					
				| 
						 | 
				
			
			@ -0,0 +1,152 @@
 | 
			
		|||
diff --git a/x.c b/x.c
 | 
			
		||||
index 00cb6b1..8f87c0f 100644
 | 
			
		||||
--- a/x.c
 | 
			
		||||
+++ b/x.c
 | 
			
		||||
@@ -78,6 +78,7 @@ typedef XftGlyphFontSpec GlyphFontSpec;
 | 
			
		||||
 typedef struct {
 | 
			
		||||
 	int tw, th; /* tty width and height */
 | 
			
		||||
 	int w, h; /* window width and height */
 | 
			
		||||
+	int hborderpx, vborderpx;
 | 
			
		||||
 	int ch; /* char height */
 | 
			
		||||
 	int cw; /* char width  */
 | 
			
		||||
 	int mode; /* window state/mode flags */
 | 
			
		||||
@@ -311,7 +312,7 @@ zoomreset(const Arg *arg)
 | 
			
		||||
 int
 | 
			
		||||
 evcol(XEvent *e)
 | 
			
		||||
 {
 | 
			
		||||
-	int x = e->xbutton.x - borderpx;
 | 
			
		||||
+	int x = e->xbutton.x - win.hborderpx;
 | 
			
		||||
 	LIMIT(x, 0, win.tw - 1);
 | 
			
		||||
 	return x / win.cw;
 | 
			
		||||
 }
 | 
			
		||||
@@ -319,7 +320,7 @@ evcol(XEvent *e)
 | 
			
		||||
 int
 | 
			
		||||
 evrow(XEvent *e)
 | 
			
		||||
 {
 | 
			
		||||
-	int y = e->xbutton.y - borderpx;
 | 
			
		||||
+	int y = e->xbutton.y - win.vborderpx;
 | 
			
		||||
 	LIMIT(y, 0, win.th - 1);
 | 
			
		||||
 	return y / win.ch;
 | 
			
		||||
 }
 | 
			
		||||
@@ -675,6 +676,9 @@ cresize(int width, int height)
 | 
			
		||||
 	col = MAX(1, col);
 | 
			
		||||
 	row = MAX(1, row);
 | 
			
		||||
 
 | 
			
		||||
+	win.hborderpx = (win.w - col * win.cw) / 2;
 | 
			
		||||
+	win.vborderpx = (win.h - row * win.ch) / 2;
 | 
			
		||||
+
 | 
			
		||||
 	tresize(col, row);
 | 
			
		||||
 	xresize(col, row);
 | 
			
		||||
 	ttyresize(win.tw, win.th);
 | 
			
		||||
@@ -793,8 +797,8 @@ xhints(void)
 | 
			
		||||
 	sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize;
 | 
			
		||||
 	sizeh->height = win.h;
 | 
			
		||||
 	sizeh->width = win.w;
 | 
			
		||||
-	sizeh->height_inc = win.ch;
 | 
			
		||||
-	sizeh->width_inc = win.cw;
 | 
			
		||||
+	sizeh->height_inc = 1;
 | 
			
		||||
+	sizeh->width_inc = 1;
 | 
			
		||||
 	sizeh->base_height = 2 * borderpx;
 | 
			
		||||
 	sizeh->base_width = 2 * borderpx;
 | 
			
		||||
 	sizeh->min_height = win.ch + 2 * borderpx;
 | 
			
		||||
@@ -1022,8 +1026,8 @@ xinit(int cols, int rows)
 | 
			
		||||
 	xloadcols();
 | 
			
		||||
 
 | 
			
		||||
 	/* adjust fixed window geometry */
 | 
			
		||||
-	win.w = 2 * borderpx + cols * win.cw;
 | 
			
		||||
-	win.h = 2 * borderpx + rows * win.ch;
 | 
			
		||||
+	win.w = 2 * win.hborderpx + cols * win.cw;
 | 
			
		||||
+	win.h = 2 * win.vborderpx + rows * win.ch;
 | 
			
		||||
 	if (xw.gm & XNegative)
 | 
			
		||||
 		xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
 | 
			
		||||
 	if (xw.gm & YNegative)
 | 
			
		||||
@@ -1123,7 +1127,7 @@ xinit(int cols, int rows)
 | 
			
		||||
 int
 | 
			
		||||
 xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y)
 | 
			
		||||
 {
 | 
			
		||||
-	float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, yp;
 | 
			
		||||
+	float winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, xp, yp;
 | 
			
		||||
 	ushort mode, prevmode = USHRT_MAX;
 | 
			
		||||
 	Font *font = &dc.font;
 | 
			
		||||
 	int frcflags = FRC_NORMAL;
 | 
			
		||||
@@ -1259,7 +1263,7 @@ void
 | 
			
		||||
 xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y)
 | 
			
		||||
 {
 | 
			
		||||
 	int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1);
 | 
			
		||||
-	int winx = borderpx + x * win.cw, winy = borderpx + y * win.ch,
 | 
			
		||||
+	int winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch,
 | 
			
		||||
 	    width = charlen * win.cw;
 | 
			
		||||
 	Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
 | 
			
		||||
 	XRenderColor colfg, colbg;
 | 
			
		||||
@@ -1349,17 +1353,17 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
 | 
			
		||||
 
 | 
			
		||||
 	/* Intelligent cleaning up of the borders. */
 | 
			
		||||
 	if (x == 0) {
 | 
			
		||||
-		xclear(0, (y == 0)? 0 : winy, borderpx,
 | 
			
		||||
+		xclear(0, (y == 0)? 0 : winy, win.vborderpx,
 | 
			
		||||
 			winy + win.ch +
 | 
			
		||||
-			((winy + win.ch >= borderpx + win.th)? win.h : 0));
 | 
			
		||||
+			((winy + win.ch >= win.vborderpx + win.th)? win.h : 0));
 | 
			
		||||
 	}
 | 
			
		||||
-	if (winx + width >= borderpx + win.tw) {
 | 
			
		||||
+	if (winx + width >= win.hborderpx + win.tw) {
 | 
			
		||||
 		xclear(winx + width, (y == 0)? 0 : winy, win.w,
 | 
			
		||||
-			((winy + win.ch >= borderpx + win.th)? win.h : (winy + win.ch)));
 | 
			
		||||
+			((winy + win.ch >= win.vborderpx + win.th)? win.h : (winy + win.ch)));
 | 
			
		||||
 	}
 | 
			
		||||
 	if (y == 0)
 | 
			
		||||
-		xclear(winx, 0, winx + width, borderpx);
 | 
			
		||||
-	if (winy + win.ch >= borderpx + win.th)
 | 
			
		||||
+		xclear(winx, 0, winx + width, win.hborderpx);
 | 
			
		||||
+	if (winy + win.ch >= win.vborderpx + win.th)
 | 
			
		||||
 		xclear(winx, winy + win.ch, winx + width, win.h);
 | 
			
		||||
 
 | 
			
		||||
 	/* Clean up the region we want to draw to. */
 | 
			
		||||
@@ -1452,35 +1456,35 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
 | 
			
		||||
 		case 3: /* Blinking Underline */
 | 
			
		||||
 		case 4: /* Steady Underline */
 | 
			
		||||
 			XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
-					borderpx + cx * win.cw,
 | 
			
		||||
-					borderpx + (cy + 1) * win.ch - \
 | 
			
		||||
+					win.hborderpx + cx * win.cw,
 | 
			
		||||
+					win.vborderpx + (cy + 1) * win.ch - \
 | 
			
		||||
 						cursorthickness,
 | 
			
		||||
 					win.cw, cursorthickness);
 | 
			
		||||
 			break;
 | 
			
		||||
 		case 5: /* Blinking bar */
 | 
			
		||||
 		case 6: /* Steady bar */
 | 
			
		||||
 			XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
-					borderpx + cx * win.cw,
 | 
			
		||||
-					borderpx + cy * win.ch,
 | 
			
		||||
+					win.hborderpx + cx * win.cw,
 | 
			
		||||
+					win.vborderpx + cy * win.ch,
 | 
			
		||||
 					cursorthickness, win.ch);
 | 
			
		||||
 			break;
 | 
			
		||||
 		}
 | 
			
		||||
 	} else {
 | 
			
		||||
 		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
-				borderpx + cx * win.cw,
 | 
			
		||||
-				borderpx + cy * win.ch,
 | 
			
		||||
+				win.hborderpx + cx * win.cw,
 | 
			
		||||
+				win.vborderpx + cy * win.ch,
 | 
			
		||||
 				win.cw - 1, 1);
 | 
			
		||||
 		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
-				borderpx + cx * win.cw,
 | 
			
		||||
-				borderpx + cy * win.ch,
 | 
			
		||||
+				win.hborderpx + cx * win.cw,
 | 
			
		||||
+				win.vborderpx + cy * win.ch,
 | 
			
		||||
 				1, win.ch - 1);
 | 
			
		||||
 		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
-				borderpx + (cx + 1) * win.cw - 1,
 | 
			
		||||
-				borderpx + cy * win.ch,
 | 
			
		||||
+				win.hborderpx + (cx + 1) * win.cw - 1,
 | 
			
		||||
+				win.vborderpx + cy * win.ch,
 | 
			
		||||
 				1, win.ch - 1);
 | 
			
		||||
 		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
-				borderpx + cx * win.cw,
 | 
			
		||||
-				borderpx + (cy + 1) * win.ch - 1,
 | 
			
		||||
+				win.hborderpx + cx * win.cw,
 | 
			
		||||
+				win.vborderpx + (cy + 1) * win.ch - 1,
 | 
			
		||||
 				win.cw, 1);
 | 
			
		||||
 	}
 | 
			
		||||
 }
 | 
			
		||||
							
								
								
									
										56
									
								
								x.c
								
								
								
								
							
							
						
						
									
										56
									
								
								x.c
								
								
								
								
							| 
						 | 
				
			
			@ -81,6 +81,7 @@ typedef XftGlyphFontSpec GlyphFontSpec;
 | 
			
		|||
typedef struct {
 | 
			
		||||
	int tw, th; /* tty width and height */
 | 
			
		||||
	int w, h; /* window width and height */
 | 
			
		||||
	int hborderpx, vborderpx;
 | 
			
		||||
	int ch; /* char height */
 | 
			
		||||
	int cw; /* char width  */
 | 
			
		||||
	int mode; /* window state/mode flags */
 | 
			
		||||
| 
						 | 
				
			
			@ -330,7 +331,7 @@ ttysend(const Arg *arg)
 | 
			
		|||
int
 | 
			
		||||
evcol(XEvent *e)
 | 
			
		||||
{
 | 
			
		||||
	int x = e->xbutton.x - borderpx;
 | 
			
		||||
	int x = e->xbutton.x - win.hborderpx;
 | 
			
		||||
	LIMIT(x, 0, win.tw - 1);
 | 
			
		||||
	return x / win.cw;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -338,7 +339,7 @@ evcol(XEvent *e)
 | 
			
		|||
int
 | 
			
		||||
evrow(XEvent *e)
 | 
			
		||||
{
 | 
			
		||||
	int y = e->xbutton.y - borderpx;
 | 
			
		||||
	int y = e->xbutton.y - win.vborderpx;
 | 
			
		||||
	LIMIT(y, 0, win.th - 1);
 | 
			
		||||
	return y / win.ch;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -706,6 +707,9 @@ cresize(int width, int height)
 | 
			
		|||
	col = MAX(1, col);
 | 
			
		||||
	row = MAX(1, row);
 | 
			
		||||
 | 
			
		||||
	win.hborderpx = (win.w - col * win.cw) / 2;
 | 
			
		||||
	win.vborderpx = (win.h - row * win.ch) / 2;
 | 
			
		||||
 | 
			
		||||
	tresize(col, row);
 | 
			
		||||
	xresize(col, row);
 | 
			
		||||
	ttyresize(win.tw, win.th);
 | 
			
		||||
| 
						 | 
				
			
			@ -823,8 +827,8 @@ xhints(void)
 | 
			
		|||
	sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize;
 | 
			
		||||
	sizeh->height = win.h;
 | 
			
		||||
	sizeh->width = win.w;
 | 
			
		||||
	sizeh->height_inc = win.ch;
 | 
			
		||||
	sizeh->width_inc = win.cw;
 | 
			
		||||
	sizeh->height_inc = 1;
 | 
			
		||||
	sizeh->width_inc = 1;
 | 
			
		||||
	sizeh->base_height = 2 * borderpx;
 | 
			
		||||
	sizeh->base_width = 2 * borderpx;
 | 
			
		||||
	sizeh->min_height = win.ch + 2 * borderpx;
 | 
			
		||||
| 
						 | 
				
			
			@ -1106,8 +1110,8 @@ xinit(int cols, int rows)
 | 
			
		|||
	xloadcols();
 | 
			
		||||
 | 
			
		||||
	/* adjust fixed window geometry */
 | 
			
		||||
	win.w = 2 * borderpx + cols * win.cw;
 | 
			
		||||
	win.h = 2 * borderpx + rows * win.ch;
 | 
			
		||||
	win.w = 2 * win.hborderpx + cols * win.cw;
 | 
			
		||||
	win.h = 2 * win.vborderpx + rows * win.ch;
 | 
			
		||||
	if (xw.gm & XNegative)
 | 
			
		||||
		xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
 | 
			
		||||
	if (xw.gm & YNegative)
 | 
			
		||||
| 
						 | 
				
			
			@ -1195,7 +1199,7 @@ xinit(int cols, int rows)
 | 
			
		|||
int
 | 
			
		||||
xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y)
 | 
			
		||||
{
 | 
			
		||||
	float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, yp;
 | 
			
		||||
	float winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, xp, yp;
 | 
			
		||||
	ushort mode, prevmode = USHRT_MAX;
 | 
			
		||||
	Font *font = &dc.font;
 | 
			
		||||
	int frcflags = FRC_NORMAL;
 | 
			
		||||
| 
						 | 
				
			
			@ -1328,7 +1332,7 @@ void
 | 
			
		|||
xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y)
 | 
			
		||||
{
 | 
			
		||||
	int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1);
 | 
			
		||||
	int winx = borderpx + x * win.cw, winy = borderpx + y * win.ch,
 | 
			
		||||
	int winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch,
 | 
			
		||||
	    width = charlen * win.cw;
 | 
			
		||||
	Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
 | 
			
		||||
	XRenderColor colfg, colbg;
 | 
			
		||||
| 
						 | 
				
			
			@ -1418,17 +1422,17 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
 | 
			
		|||
 | 
			
		||||
	/* Intelligent cleaning up of the borders. */
 | 
			
		||||
	if (x == 0) {
 | 
			
		||||
		xclear(0, (y == 0)? 0 : winy, borderpx,
 | 
			
		||||
		xclear(0, (y == 0)? 0 : winy, win.vborderpx,
 | 
			
		||||
			winy + win.ch +
 | 
			
		||||
			((winy + win.ch >= borderpx + win.th)? win.h : 0));
 | 
			
		||||
			((winy + win.ch >= win.vborderpx + win.th)? win.h : 0));
 | 
			
		||||
	}
 | 
			
		||||
	if (winx + width >= borderpx + win.tw) {
 | 
			
		||||
	if (winx + width >= win.hborderpx + win.tw) {
 | 
			
		||||
		xclear(winx + width, (y == 0)? 0 : winy, win.w,
 | 
			
		||||
			((winy + win.ch >= borderpx + win.th)? win.h : (winy + win.ch)));
 | 
			
		||||
			((winy + win.ch >= win.vborderpx + win.th)? win.h : (winy + win.ch)));
 | 
			
		||||
	}
 | 
			
		||||
	if (y == 0)
 | 
			
		||||
		xclear(winx, 0, winx + width, borderpx);
 | 
			
		||||
	if (winy + win.ch >= borderpx + win.th)
 | 
			
		||||
		xclear(winx, 0, winx + width, win.hborderpx);
 | 
			
		||||
	if (winy + win.ch >= win.vborderpx + win.th)
 | 
			
		||||
		xclear(winx, winy + win.ch, winx + width, win.h);
 | 
			
		||||
 | 
			
		||||
	/* Clean up the region we want to draw to. */
 | 
			
		||||
| 
						 | 
				
			
			@ -1521,35 +1525,35 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
 | 
			
		|||
		case 3: /* Blinking Underline */
 | 
			
		||||
		case 4: /* Steady Underline */
 | 
			
		||||
			XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
					borderpx + cx * win.cw,
 | 
			
		||||
					borderpx + (cy + 1) * win.ch - \
 | 
			
		||||
					win.hborderpx + cx * win.cw,
 | 
			
		||||
					win.vborderpx + (cy + 1) * win.ch - \
 | 
			
		||||
						cursorthickness,
 | 
			
		||||
					win.cw, cursorthickness);
 | 
			
		||||
			break;
 | 
			
		||||
		case 5: /* Blinking bar */
 | 
			
		||||
		case 6: /* Steady bar */
 | 
			
		||||
			XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
					borderpx + cx * win.cw,
 | 
			
		||||
					borderpx + cy * win.ch,
 | 
			
		||||
					win.hborderpx + cx * win.cw,
 | 
			
		||||
					win.vborderpx + cy * win.ch,
 | 
			
		||||
					cursorthickness, win.ch);
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
				borderpx + cx * win.cw,
 | 
			
		||||
				borderpx + cy * win.ch,
 | 
			
		||||
				win.hborderpx + cx * win.cw,
 | 
			
		||||
				win.vborderpx + cy * win.ch,
 | 
			
		||||
				win.cw - 1, 1);
 | 
			
		||||
		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
				borderpx + cx * win.cw,
 | 
			
		||||
				borderpx + cy * win.ch,
 | 
			
		||||
				win.hborderpx + cx * win.cw,
 | 
			
		||||
				win.vborderpx + cy * win.ch,
 | 
			
		||||
				1, win.ch - 1);
 | 
			
		||||
		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
				borderpx + (cx + 1) * win.cw - 1,
 | 
			
		||||
				borderpx + cy * win.ch,
 | 
			
		||||
				win.hborderpx + (cx + 1) * win.cw - 1,
 | 
			
		||||
				win.vborderpx + cy * win.ch,
 | 
			
		||||
				1, win.ch - 1);
 | 
			
		||||
		XftDrawRect(xw.draw, &drawcol,
 | 
			
		||||
				borderpx + cx * win.cw,
 | 
			
		||||
				borderpx + (cy + 1) * win.ch - 1,
 | 
			
		||||
				win.hborderpx + cx * win.cw,
 | 
			
		||||
				win.vborderpx + (cy + 1) * win.ch - 1,
 | 
			
		||||
				win.cw, 1);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue