tmade fullscreen apps working fine in floating mode (there is no sane way to ma… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 95e8d12b7189d4cd01b8ae8ecebfa5835a1809e6 | |
parent a55f0e12fe5c1205f4d3e40c164fd087224fad7a | |
Author: [email protected] <unknown> | |
Date: Wed, 2 Aug 2006 16:32:05 +0200 | |
made fullscreen apps working fine in floating mode (there is no sane way to mak… | |
Diffstat: | |
M client.c | 32 ++++++++++-------------------… | |
M config.arg.h | 18 +++++++++--------- | |
M config.h | 18 +++++++++--------- | |
M draw.c | 1 - | |
M dwm.h | 4 ++-- | |
M event.c | 65 ++++++++++++++++++++++-------… | |
M main.c | 15 ++++++++------- | |
M tag.c | 17 ++++++++--------- | |
M util.c | 1 - | |
9 files changed, 92 insertions(+), 79 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -3,7 +3,6 @@ | |
* See LICENSE file for license details. | |
*/ | |
#include "dwm.h" | |
- | |
#include <stdlib.h> | |
#include <string.h> | |
#include <X11/Xatom.h> | |
t@@ -219,7 +218,7 @@ manage(Window w, XWindowAttributes *wa) | |
c->h = wa->height; | |
c->th = bh; | |
- c->border = 1; | |
+ c->border = 0; | |
setsize(c); | |
if(c->h != sh && c->y < bh) | |
t@@ -254,8 +253,7 @@ manage(Window w, XWindowAttributes *wa) | |
if(!c->isfloat) | |
c->isfloat = trans | |
|| (c->maxw && c->minw && | |
- c->maxw == c->minw && c->maxh == c->minh) | |
- || (c->w == sw && c->h == sh); | |
+ c->maxw == c->minw && c->maxh == c->minh); | |
settitle(c); | |
arrange(NULL); | |
t@@ -271,7 +269,7 @@ resize(Client *c, Bool sizehints, Corner sticky) | |
{ | |
int bottom = c->y + c->h; | |
int right = c->x + c->w; | |
- XConfigureEvent e; | |
+ /*XConfigureEvent e;*/ | |
XWindowChanges wc; | |
if(sizehints) { | |
t@@ -302,21 +300,11 @@ resize(Client *c, Bool sizehints, Corner sticky) | |
wc.y = c->y; | |
wc.width = c->w; | |
wc.height = c->h; | |
- wc.border_width = 1; | |
- XConfigureWindow(dpy, c->win, | |
- CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); | |
- | |
- e.type = ConfigureNotify; | |
- e.event = c->win; | |
- e.window = c->win; | |
- e.x = c->x; | |
- e.y = c->y; | |
- e.width = c->w; | |
- e.height = c->h; | |
- e.border_width = c->border; | |
- e.above = None; | |
- e.override_redirect = False; | |
- XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); | |
+ if(c->w == sw && c->h == sh) | |
+ wc.border_width = 0; | |
+ else | |
+ wc.border_width = 1; | |
+ XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, … | |
XSync(dpy, False); | |
} | |
t@@ -403,8 +391,8 @@ togglemax(Arg *arg) | |
oh = sel->h; | |
sel->x = sx; | |
sel->y = sy + bh; | |
- sel->w = sw - 2 * sel->border; | |
- sel->h = sh - 2 * sel->border - bh; | |
+ sel->w = sw - 2; | |
+ sel->h = sh - 2 - bh; | |
higher(sel); | |
resize(sel, False, TopLeft); | |
diff --git a/config.arg.h b/config.arg.h | |
t@@ -3,15 +3,6 @@ | |
* See LICENSE file for license details. | |
*/ | |
-#define DEFMODE dotile /* dofloat */ | |
-#define FONT "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso… | |
-#define BGCOLOR "#0a2c2d" | |
-#define FGCOLOR "#ddeeee" | |
-#define BORDERCOLOR "#176164" | |
-#define MODKEY Mod1Mask | |
-#define NUMLOCKMASK Mod2Mask | |
-#define MASTERW 52 /* percent */ | |
- | |
enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; | |
#define TAGS \ | |
char *tags[TLast] = { \ | |
t@@ -21,7 +12,16 @@ char *tags[TLast] = { \ | |
[Twork] = "work", \ | |
[Tmisc] = "misc", \ | |
}; | |
+ | |
+#define DEFMODE dotile /* dofloat */ | |
#define DEFTAG Tdev | |
+#define FONT "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso… | |
+#define BGCOLOR "#0a2c2d" | |
+#define FGCOLOR "#ddeeee" | |
+#define BORDERCOLOR "#176164" | |
+#define MODKEY Mod1Mask | |
+#define NUMLOCKMASK Mod2Mask | |
+#define MASTERW 52 /* percent */ | |
#define KEYS \ | |
const char *browse[] = { "firefox", NULL }; \ | |
diff --git a/config.h b/config.h | |
t@@ -3,15 +3,6 @@ | |
* See LICENSE file for license details. | |
*/ | |
-#define DEFMODE dotile /* dofloat */ | |
-#define FONT "fixed" | |
-#define BGCOLOR "#666699" | |
-#define FGCOLOR "#eeeeee" | |
-#define BORDERCOLOR "#9999CC" | |
-#define MODKEY Mod1Mask | |
-#define NUMLOCKMASK Mod2Mask | |
-#define MASTERW 52 /* percent */ | |
- | |
enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; | |
#define TAGS \ | |
char *tags[TLast] = { \ | |
t@@ -21,7 +12,16 @@ char *tags[TLast] = { \ | |
[Twork] = "work", \ | |
[Tmisc] = "misc", \ | |
}; | |
+ | |
+#define DEFMODE dotile /* dofloat */ | |
#define DEFTAG Tdev | |
+#define FONT "fixed" | |
+#define BGCOLOR "#666699" | |
+#define FGCOLOR "#eeeeee" | |
+#define BORDERCOLOR "#9999CC" | |
+#define MODKEY Mod1Mask | |
+#define NUMLOCKMASK Mod2Mask | |
+#define MASTERW 52 /* percent */ | |
#define KEYS \ | |
const char *term[] = { "xterm", NULL }; \ | |
diff --git a/draw.c b/draw.c | |
t@@ -3,7 +3,6 @@ | |
* See LICENSE file for license details. | |
*/ | |
#include "dwm.h" | |
- | |
#include <stdio.h> | |
#include <string.h> | |
#include <X11/Xlocale.h> | |
diff --git a/dwm.h b/dwm.h | |
t@@ -3,8 +3,8 @@ | |
* See LICENSE file for license details. | |
*/ | |
-#include <X11/Xlib.h> | |
#include CONFIG | |
+#include <X11/Xlib.h> | |
/* mask shorthands, used in event.c and client.c */ | |
#define BUTTONMASK (ButtonPressMask | ButtonReleaseMask) | |
t@@ -57,8 +57,8 @@ struct Client { | |
int tx, ty, tw, th; /* title */ | |
int basew, baseh, incw, inch, maxw, maxh, minw, minh; | |
int grav; | |
- unsigned int border; | |
long flags; | |
+ unsigned int border; | |
Bool isfloat; | |
Bool ismax; | |
Client *next; | |
diff --git a/event.c b/event.c | |
t@@ -3,7 +3,6 @@ | |
* See LICENSE file for license details. | |
*/ | |
#include "dwm.h" | |
- | |
#include <stdlib.h> | |
#include <X11/keysym.h> | |
#include <X11/Xatom.h> | |
t@@ -151,32 +150,60 @@ configurerequest(XEvent *e) | |
{ | |
Client *c; | |
XConfigureRequestEvent *ev = &e->xconfigurerequest; | |
+ XEvent synev; | |
XWindowChanges wc; | |
+ unsigned long newmask; | |
- ev->value_mask &= ~CWSibling; | |
if((c = getclient(ev->window))) { | |
gravitate(c, True); | |
- if(ev->value_mask & CWX) | |
- c->x = ev->x; | |
- if(ev->value_mask & CWY) | |
- c->y = ev->y; | |
- if(ev->value_mask & CWWidth) | |
- c->w = ev->width; | |
- if(ev->value_mask & CWHeight) | |
- c->h = ev->height; | |
+ if(c->isfloat) { | |
+ if(ev->value_mask & CWX) | |
+ c->x = ev->x; | |
+ if(ev->value_mask & CWY) | |
+ c->y = ev->y; | |
+ if(ev->value_mask & CWWidth) | |
+ c->w = ev->width; | |
+ if(ev->value_mask & CWHeight) | |
+ c->h = ev->height; | |
+ } | |
if(ev->value_mask & CWBorderWidth) | |
- c->border = 1; | |
+ c->border = ev->border_width; | |
gravitate(c, False); | |
+ | |
resize(c, True, TopLeft); | |
- } | |
- wc.x = ev->x; | |
- wc.y = ev->y; | |
- wc.width = ev->width; | |
- wc.height = ev->height; | |
- wc.border_width = 1; | |
- XConfigureWindow(dpy, ev->window, | |
- CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); | |
+ wc.x = c->x; | |
+ wc.y = c->y; | |
+ wc.width = c->w; | |
+ wc.height = c->h; | |
+ newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBord… | |
+ if(newmask) | |
+ XConfigureWindow(dpy, c->win, newmask, &wc); | |
+ else { | |
+ synev.type = ConfigureNotify; | |
+ synev.xconfigure.display = dpy; | |
+ synev.xconfigure.event = c->win; | |
+ synev.xconfigure.window = c->win; | |
+ synev.xconfigure.x = c->x; | |
+ synev.xconfigure.y = c->y; | |
+ synev.xconfigure.width = c->w; | |
+ synev.xconfigure.height = c->h; | |
+ synev.xconfigure.border_width = c->border; | |
+ synev.xconfigure.above = None; | |
+ /* Send synthetic ConfigureNotify */ | |
+ XSendEvent(dpy, c->win, True, NoEventMask, &synev); | |
+ } | |
+ } | |
+ else { | |
+ wc.x = ev->x; | |
+ wc.y = ev->y; | |
+ wc.width = ev->width; | |
+ wc.height = ev->height; | |
+ wc.border_width = ev->border_width; | |
+ wc.sibling = ev->above; | |
+ wc.stack_mode = ev->detail; | |
+ XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); | |
+ } | |
XSync(dpy, False); | |
} | |
diff --git a/main.c b/main.c | |
t@@ -4,7 +4,6 @@ | |
*/ | |
#include "dwm.h" | |
- | |
#include <errno.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
t@@ -15,7 +14,6 @@ | |
#include <X11/Xatom.h> | |
#include <X11/Xproto.h> | |
- | |
/* static */ | |
static int (*xerrorxlib)(Display *, XErrorEvent *); | |
t@@ -165,6 +163,7 @@ main(int argc, char *argv[]) | |
int i; | |
unsigned int mask; | |
fd_set rd; | |
+ Bool readin = True; | |
Window w; | |
XEvent ev; | |
XSetWindowAttributes wa; | |
t@@ -251,7 +250,8 @@ main(int argc, char *argv[]) | |
/* main event loop, reads status text from stdin as well */ | |
while(running) { | |
FD_ZERO(&rd); | |
- FD_SET(STDIN_FILENO, &rd); | |
+ if(readin) | |
+ FD_SET(STDIN_FILENO, &rd); | |
FD_SET(ConnectionNumber(dpy), &rd); | |
i = select(ConnectionNumber(dpy) + 1, &rd, 0, 0, 0); | |
t@@ -267,11 +267,12 @@ main(int argc, char *argv[]) | |
(handler[ev.type])(&ev); /* ca… | |
} | |
} | |
- if(FD_ISSET(STDIN_FILENO, &rd)) { | |
- if(!fgets(stext, sizeof(stext), stdin)) | |
- break; | |
- else | |
+ if(readin && FD_ISSET(STDIN_FILENO, &rd)) { | |
+ readin = NULL != fgets(stext, sizeof(stext), s… | |
+ if(readin) | |
stext[strlen(stext) - 1] = 0; | |
+ else | |
+ strcpy(stext, "broken pipe"); | |
drawstatus(); | |
} | |
} | |
diff --git a/tag.c b/tag.c | |
t@@ -3,7 +3,6 @@ | |
* See LICENSE file for license details. | |
*/ | |
#include "dwm.h" | |
- | |
#include <regex.h> | |
#include <stdio.h> | |
#include <string.h> | |
t@@ -86,26 +85,26 @@ dotile(Arg *arg) | |
if(n == 1) { | |
c->x = sx; | |
c->y = sy + bh; | |
- c->w = sw - 2 * c->border; | |
- c->h = sh - 2 * c->border - bh; | |
+ c->w = sw - 2; | |
+ c->h = sh - 2 - bh; | |
} | |
else if(i == 0) { | |
c->x = sx; | |
c->y = sy + bh; | |
- c->w = mw - 2 * c->border; | |
- c->h = sh - 2 * c->border - bh; | |
+ c->w = mw - 2; | |
+ c->h = sh - 2 - bh; | |
} | |
else if(h > bh) { | |
c->x = sx + mw; | |
c->y = sy + (i - 1) * h + bh; | |
- c->w = w - 2 * c->border; | |
- c->h = h - 2 * c->border; | |
+ c->w = w - 2; | |
+ c->h = h - 2; | |
} | |
else { /* fallback if h < bh */ | |
c->x = sx + mw; | |
c->y = sy + bh; | |
- c->w = w - 2 * c->border; | |
- c->h = sh - 2 * c->border - bh; | |
+ c->w = w - 2; | |
+ c->h = sh - 2 - bh; | |
} | |
resize(c, False, TopLeft); | |
i++; | |
diff --git a/util.c b/util.c | |
t@@ -3,7 +3,6 @@ | |
* See LICENSE file for license details. | |
*/ | |
#include "dwm.h" | |
- | |
#include <stdarg.h> | |
#include <stdio.h> | |
#include <stdlib.h> |