some more refactoring, bar toggle fixes
This commit is contained in:
		
							parent
							
								
									d53ceee682
								
							
						
					
					
						commit
						a3bbdb1b7b
					
				
							
								
								
									
										44
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								dwm.c
									
									
									
									
									
								
							| @ -124,6 +124,7 @@ struct Monitor { | |||||||
| 	int screen_number; | 	int screen_number; | ||||||
| 	float mfact; | 	float mfact; | ||||||
| 	int by, btx;          /* bar geometry */ | 	int by, btx;          /* bar geometry */ | ||||||
|  | 	int my, mh;           /* vertical screen size*/ | ||||||
| 	int wx, wy, ww, wh;   /* window area  */ | 	int wx, wy, ww, wh;   /* window area  */ | ||||||
| 	unsigned int seltags; | 	unsigned int seltags; | ||||||
| 	unsigned int sellt; | 	unsigned int sellt; | ||||||
| @ -209,6 +210,7 @@ static void toggleview(const Arg *arg); | |||||||
| static void unmanage(Client *c); | static void unmanage(Client *c); | ||||||
| static void unmapnotify(XEvent *e); | static void unmapnotify(XEvent *e); | ||||||
| static void updategeom(void); | static void updategeom(void); | ||||||
|  | static void updatebarpos(Monitor *m); | ||||||
| static void updatebars(void); | static void updatebars(void); | ||||||
| static void updatenumlockmask(void); | static void updatenumlockmask(void); | ||||||
| static void updatesizehints(Client *c); | static void updatesizehints(Client *c); | ||||||
| @ -389,7 +391,7 @@ buttonpress(XEvent *e) { | |||||||
| 	XButtonPressedEvent *ev = &e->xbutton; | 	XButtonPressedEvent *ev = &e->xbutton; | ||||||
| 
 | 
 | ||||||
| 	click = ClkRootWin; | 	click = ClkRootWin; | ||||||
| 	if(ev->window == selmon->barwin) { | 	if(ev->window == selmon->barwin && ev->x >= selmon->btx) { | ||||||
| 		i = 0; | 		i = 0; | ||||||
| 		x = selmon->btx; | 		x = selmon->btx; | ||||||
| 		do | 		do | ||||||
| @ -597,6 +599,7 @@ die(const char *errstr, ...) { | |||||||
| 
 | 
 | ||||||
| void | void | ||||||
| drawbar(Monitor *m) { | drawbar(Monitor *m) { | ||||||
|  | 	char buf[2]; | ||||||
| 	int x; | 	int x; | ||||||
| 	unsigned int i, occ = 0, urg = 0; | 	unsigned int i, occ = 0, urg = 0; | ||||||
| 	unsigned long *col; | 	unsigned long *col; | ||||||
| @ -613,11 +616,11 @@ drawbar(Monitor *m) { | |||||||
| 	dc.x = 0; | 	dc.x = 0; | ||||||
| #ifdef XINERAMA | #ifdef XINERAMA | ||||||
| 	{ | 	{ | ||||||
| 		/*
 | 		buf[0] = m->screen_number + '0'; | ||||||
| 		dc.w = TEXTW(m->symbol); | 		buf[1] = '\0'; | ||||||
| 		drawtext(NULL, selmon == m ? dc.sel : dc.norm, False); | 		dc.w = TEXTW(buf); | ||||||
|  | 		drawtext(buf, selmon == m ? dc.sel : dc.norm, True); | ||||||
| 		dc.x += dc.w; | 		dc.x += dc.w; | ||||||
| 		*/ |  | ||||||
| 	} | 	} | ||||||
| #endif /* XINERAMA */ | #endif /* XINERAMA */ | ||||||
| 	m->btx = dc.x; | 	m->btx = dc.x; | ||||||
| @ -1525,7 +1528,7 @@ tile(Monitor *m) { | |||||||
| void | void | ||||||
| togglebar(const Arg *arg) { | togglebar(const Arg *arg) { | ||||||
| 	selmon->showbar = !selmon->showbar; | 	selmon->showbar = !selmon->showbar; | ||||||
| 	updategeom(); | 	updatebarpos(selmon); | ||||||
| 	XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); | 	XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); | ||||||
| 	arrange(); | 	arrange(); | ||||||
| } | } | ||||||
| @ -1614,6 +1617,19 @@ updatebars(void) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void | ||||||
|  | updatebarpos(Monitor *m) { | ||||||
|  | 	m->wy = m->my; | ||||||
|  | 	m->wh = m->mh; | ||||||
|  | 	if(m->showbar) { | ||||||
|  | 		m->wh -= bh; | ||||||
|  | 		m->by = m->topbar ? m->wy : m->wy + m->wh; | ||||||
|  | 		m->wy = m->topbar ? m->wy + bh : m->wy; | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 		m->by = -bh; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| updategeom(void) { | updategeom(void) { | ||||||
| 	int i, n; | 	int i, n; | ||||||
| @ -1639,9 +1655,9 @@ updategeom(void) { | |||||||
| 		for(i = 0, m = newmons; m; m = m->next, i++) { | 		for(i = 0, m = newmons; m; m = m->next, i++) { | ||||||
| 			m->screen_number = info[i].screen_number; | 			m->screen_number = info[i].screen_number; | ||||||
| 			m->wx = info[i].x_org; | 			m->wx = info[i].x_org; | ||||||
| 			m->wy = info[i].y_org; | 			m->my = m->wy = info[i].y_org; | ||||||
| 			m->ww = info[i].width; | 			m->ww = info[i].width; | ||||||
| 			m->wh = info[i].height; | 			m->mh = m->wh = info[i].height; | ||||||
| 		} | 		} | ||||||
| 		XFree(info); | 		XFree(info); | ||||||
| 	} | 	} | ||||||
| @ -1651,9 +1667,9 @@ updategeom(void) { | |||||||
| 	{ | 	{ | ||||||
| 		m->screen_number = 0; | 		m->screen_number = 0; | ||||||
| 		m->wx = sx; | 		m->wx = sx; | ||||||
| 		m->wy = sy; | 		m->my = m->wy = sy; | ||||||
| 		m->ww = sw; | 		m->ww = sw; | ||||||
| 		m->wh = sh; | 		m->mh = m->wh = sh; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* bar geometry setup */ | 	/* bar geometry setup */ | ||||||
| @ -1665,13 +1681,7 @@ updategeom(void) { | |||||||
| 		m->mfact = mfact; | 		m->mfact = mfact; | ||||||
| 		m->showbar = showbar; | 		m->showbar = showbar; | ||||||
| 		m->topbar = topbar; | 		m->topbar = topbar; | ||||||
| 		if(m->showbar) { | 		updatebarpos(m); | ||||||
| 			m->wh -= bh; |  | ||||||
| 			m->by = m->topbar ? m->wy : m->wy + m->wh; |  | ||||||
| 			m->wy = m->topbar ? m->wy + bh : m->wy; |  | ||||||
| 		} |  | ||||||
| 		else |  | ||||||
| 			m->by = -bh; |  | ||||||
| 		/* reassign all clients with same screen number */ | 		/* reassign all clients with same screen number */ | ||||||
| 		for(c = clients; c; c = c->next) | 		for(c = clients; c; c = c->next) | ||||||
| 			if(c->m->screen_number == m->screen_number) | 			if(c->m->screen_number == m->screen_number) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user