aewl

diff aewl.c @ 786:e65be4ffdbdc

Add handling for popup windows
author markus schnalke <meillo@marmaro.de>
date Thu, 14 Jun 2012 00:00:00 +0200
parents f259785bac44
children eecb13b34511
line diff
     1.1 --- a/aewl.c	Sat Mar 17 19:10:42 2012 +0100
     1.2 +++ b/aewl.c	Thu Jun 14 00:00:00 2012 +0200
     1.3 @@ -90,7 +90,7 @@
     1.4  	int minax, minay, maxax, maxay;
     1.5  	long flags;
     1.6  	unsigned int border;
     1.7 -	Bool isfixed, isfloat, ismax;
     1.8 +	Bool isfixed, isfloat, ismax, ispopup;
     1.9  	Bool tag;
    1.10  	Client *next;
    1.11  	Client *prev;
    1.12 @@ -212,7 +212,7 @@
    1.13  
    1.14  Client *
    1.15  nexttiled(Client *c) {
    1.16 -	for(c = getnext(c); c && c->isfloat; c = getnext(c->next));
    1.17 +	for(c = getnext(c); c && (c->isfloat || c->ispopup); c = getnext(c->next));
    1.18  	return c;
    1.19  }
    1.20  
    1.21 @@ -271,7 +271,7 @@
    1.22  
    1.23  	for(i = 0, c = clients; c; c = c->next)
    1.24  		if(isvisible(c)) {
    1.25 -			if(c->isfloat) {
    1.26 +			if(c->isfloat || c->ispopup) {
    1.27  				resize(c, True);
    1.28  				continue;
    1.29  			}
    1.30 @@ -311,7 +311,7 @@
    1.31  
    1.32    for(c = clients; c; c = c->next) {
    1.33      if(isvisible(c)) {
    1.34 -      if(c->isfloat) {
    1.35 +      if(c->isfloat || c->ispopup) {
    1.36          resize(c, True);
    1.37          continue;
    1.38        }
    1.39 @@ -380,18 +380,15 @@
    1.40  	drawbar();
    1.41  	if(!sel)
    1.42  		return;
    1.43 -	/*if(sel->isfloat)*/
    1.44 +	if(sel->isfloat || sel->ispopup)
    1.45  		XRaiseWindow(dpy, sel->win);
    1.46 -
    1.47 -	/*
    1.48 -	if(!sel->isfloat)
    1.49 +	else
    1.50  		XLowerWindow(dpy, sel->win);
    1.51  	for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
    1.52  		if(c == sel)
    1.53  			continue;
    1.54  		XLowerWindow(dpy, c->win);
    1.55  	}
    1.56 -	*/
    1.57  
    1.58  	XSync(dpy, False);
    1.59  	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
    1.60 @@ -433,6 +430,7 @@
    1.61  void
    1.62  toggleview() {
    1.63  	if (viewfloats) {
    1.64 +		floattoggle();
    1.65  		return;
    1.66  	}
    1.67  	seltag = !seltag;
    1.68 @@ -452,7 +450,7 @@
    1.69  
    1.70  	if(!sel)
    1.71  		return;
    1.72 -	if(sel->isfloat) {
    1.73 +	if(sel->isfloat || sel->ispopup) {
    1.74  		togglemax(sel);
    1.75  		return;
    1.76  	}
    1.77 @@ -533,6 +531,7 @@
    1.78  
    1.79  	if(trans) {
    1.80  		c->tag = trans->tag;
    1.81 +		c->isfloat = trans->isfloat;
    1.82  		return;
    1.83  	}
    1.84  	c->tag = seltag;  /* default */
    1.85 @@ -662,10 +661,10 @@
    1.86  		focus(c);
    1.87  		if(CLEANMASK(ev->state) != MODKEY)
    1.88  			return;
    1.89 -		if(ev->button == Button1 && c->isfloat) {
    1.90 +		if(ev->button == Button1 && (c->isfloat || c->ispopup)) {
    1.91  			restack();
    1.92  			movemouse(c);
    1.93 -		} else if(ev->button == Button3 && c->isfloat && !c->isfixed) {
    1.94 +		} else if(ev->button == Button3 && (c->isfloat || c->ispopup) && !c->isfixed) {
    1.95  			restack();
    1.96  			resizemouse(c);
    1.97  		}
    1.98 @@ -701,7 +700,7 @@
    1.99  		else
   1.100  			configure(c);
   1.101  		XSync(dpy, False);
   1.102 -		if(c->isfloat) {
   1.103 +		if(c->isfloat || c->ispopup) {
   1.104  			resize(c, False);
   1.105  			if(!isvisible(c))
   1.106  				XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
   1.107 @@ -822,7 +821,7 @@
   1.108  			default: break;
   1.109  			case XA_WM_TRANSIENT_FOR:
   1.110  				XGetTransientForHint(dpy, c->win, &trans);
   1.111 -				if(!c->isfloat && (c->isfloat = (trans != 0)))
   1.112 +				if(!c->ispopup && (c->ispopup = (trans != 0)))
   1.113  					arrange();
   1.114  				break;
   1.115  			case XA_WM_NORMAL_HINTS:
   1.116 @@ -1216,8 +1215,8 @@
   1.117  	XSetWindowBorder(dpy, c->win, dc.norm[ColBG]);
   1.118  	updatetitle(c);
   1.119  	settag(c, getclient(trans));
   1.120 -	if(!c->isfloat)
   1.121 -		c->isfloat = trans || c->isfixed;
   1.122 +	if(!c->ispopup)
   1.123 +		c->ispopup = trans || c->isfixed;
   1.124  	if(clients)
   1.125  		clients->prev = c;
   1.126  	c->next = clients;