فهرست منبع

fixed the border issue for mplayer, ff is definately broken when using F11 (fullscreen mode)

Anselm R. Garbe 18 سال پیش
والد
کامیت
22399a3bc0
3فایلهای تغییر یافته به همراه12 افزوده شده و 6 حذف شده
  1. 10 4
      client.c
  2. 1 1
      dwm.h
  3. 1 1
      main.c

+ 10 - 4
client.c

@@ -185,9 +185,11 @@ manage(Window w, XWindowAttributes *wa) {
 	c->y = wa->y;
 	c->w = wa->width;
 	c->h = wa->height;
+	c->oldborder = wa->border_width;
 	if(c->w == sw && c->h == sh) {
 		c->x = sx;
 		c->y = sy;
+		c->border = wa->border_width;
 	}
 	else {
 		if(c->x + c->w + 2 * c->border > wax + waw)
@@ -198,15 +200,16 @@ manage(Window w, XWindowAttributes *wa) {
 			c->x = wax;
 		if(c->y < way)
 			c->y = way;
+		c->border = BORDERPX;
 	}
+	wc.border_width = c->border;
+	XConfigureWindow(dpy, w, CWBorderWidth, &wc);
+	XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
+	configure(c); /* propagates border_width, if size doesn't change */
 	updatesizehints(c);
 	XSelectInput(dpy, w,
 		StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
 	grabbuttons(c, False);
-	c->border = wc.border_width = (c->w == sw && c->h == sh) ? wa->border_width : BORDERPX;
-	XConfigureWindow(dpy, w, CWBorderWidth, &wc);
-	XSetWindowBorder(dpy, w, dc.norm[ColBorder]);
-	configure(c); /* propagates border_width, if size doesn't change */
 	updatetitle(c);
 	if((rettrans = XGetTransientForHint(dpy, w, &trans) == Success))
 		for(t = clients; t && t->win != trans; t = t->next);
@@ -378,10 +381,13 @@ updatetitle(Client *c) {
 void
 unmanage(Client *c) {
 	Client *nc;
+	XWindowChanges wc;
 
+	wc.border_width = c->oldborder;
 	/* The server grab construct avoids race conditions. */
 	XGrabServer(dpy);
 	XSetErrorHandler(xerrordummy);
+	XConfigureWindow(dpy, c->win, CWBorderWidth, &wc); /* restore border */
 	detach(c);
 	detachstack(c);
 	if(sel == c) {

+ 1 - 1
dwm.h

@@ -50,7 +50,7 @@ struct Client {
 	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 	int minax, maxax, minay, maxay;
 	long flags; 
-	unsigned int border;
+	unsigned int border, oldborder;
 	Bool isbanned, isfixed, ismax, isfloating;
 	Bool *tags;
 	Client *next;

+ 1 - 1
main.c

@@ -81,7 +81,7 @@ initfont(const char *fontstr) {
 	dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
 	if(missing) {
 		while(n--)
-			fprintf(stderr, "missing fontset: %s\n", missing[n]);
+			fprintf(stderr, "dwm: missing fontset: %s\n", missing[n]);
 		XFreeStringList(missing);
 	}
 	if(dc.font.set) {