implemented nn < n case, k-zed please recheck
This commit is contained in:
		
							parent
							
								
									c45d46ad9a
								
							
						
					
					
						commit
						30fed9a211
					
				
							
								
								
									
										44
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								dwm.c
									
									
									
									
									
								
							| @ -158,7 +158,7 @@ static void attachstack(Client *c); | |||||||
| static void buttonpress(XEvent *e); | static void buttonpress(XEvent *e); | ||||||
| static void checkotherwm(void); | static void checkotherwm(void); | ||||||
| static void cleanup(void); | static void cleanup(void); | ||||||
| static void cleanupmons(void); | static void cleanupmon(Monitor *mon); | ||||||
| static void clearurgent(Client *c); | static void clearurgent(Client *c); | ||||||
| static void configure(Client *c); | static void configure(Client *c); | ||||||
| static void configurenotify(XEvent *e); | static void configurenotify(XEvent *e); | ||||||
| @ -480,22 +480,25 @@ cleanup(void) { | |||||||
| 	XFreeCursor(dpy, cursor[CurNormal]); | 	XFreeCursor(dpy, cursor[CurNormal]); | ||||||
| 	XFreeCursor(dpy, cursor[CurResize]); | 	XFreeCursor(dpy, cursor[CurResize]); | ||||||
| 	XFreeCursor(dpy, cursor[CurMove]); | 	XFreeCursor(dpy, cursor[CurMove]); | ||||||
| 	cleanupmons(); | 	while(mons) | ||||||
|  | 		cleanupmon(mons); | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
| 	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); | 	XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| cleanupmons(void) { | cleanupmon(Monitor *mon) { | ||||||
| 	Monitor *m; | 	Monitor *m; | ||||||
| 
 | 
 | ||||||
| 	while(mons) { | 	if(mon == mons) | ||||||
| 		m = mons->next; | 		mons = mons->next; | ||||||
| 		XUnmapWindow(dpy, mons->barwin); | 	else { | ||||||
| 		XDestroyWindow(dpy, mons->barwin); | 		for(m = mons; m && m->next != mon; m = m->next); | ||||||
| 		free(mons); | 		m->next = mon->next; | ||||||
| 		mons = m; |  | ||||||
| 	} | 	} | ||||||
|  | 	XUnmapWindow(dpy, mon->barwin); | ||||||
|  | 	XDestroyWindow(dpy, mon->barwin); | ||||||
|  | 	free(mon); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -1727,6 +1730,7 @@ updategeom(void) { | |||||||
| #ifdef XINERAMA | #ifdef XINERAMA | ||||||
| 	if(XineramaIsActive(dpy)) { | 	if(XineramaIsActive(dpy)) { | ||||||
| 		int i, j, n, nn; | 		int i, j, n, nn; | ||||||
|  | 		Client *c; | ||||||
| 		Monitor *m; | 		Monitor *m; | ||||||
| 		XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn); | 		XineramaScreenInfo *info = XineramaQueryScreens(dpy, &nn); | ||||||
| 		XineramaScreenInfo *unique = NULL; | 		XineramaScreenInfo *unique = NULL; | ||||||
| @ -1755,7 +1759,7 @@ updategeom(void) { | |||||||
| 				    || unique[i].width != m->mw || unique[i].height != m->mh)) | 				    || unique[i].width != m->mw || unique[i].height != m->mh)) | ||||||
| 				{ | 				{ | ||||||
| 					dirty = True; | 					dirty = True; | ||||||
| 					m->num = unique[i].screen_number; | 					m->num = i; | ||||||
| 					m->mx = m->wx = unique[i].x_org; | 					m->mx = m->wx = unique[i].x_org; | ||||||
| 					m->my = m->wy = unique[i].y_org; | 					m->my = m->wy = unique[i].y_org; | ||||||
| 					m->mw = m->ww = unique[i].width; | 					m->mw = m->ww = unique[i].width; | ||||||
| @ -1763,10 +1767,22 @@ updategeom(void) { | |||||||
| 					updatebarpos(m); | 					updatebarpos(m); | ||||||
| 				} | 				} | ||||||
| 		} | 		} | ||||||
| 		else { /* less monitors available */ | 		else { /* less monitors available nn < n */ | ||||||
| 			cleanup(); | 			for(i = nn; i < n; i++) { | ||||||
| 			setup(); | 				for(m = mons; m && m->next; m = m->next); | ||||||
| 			scan(); | 				while(m->clients) { | ||||||
|  | 					dirty = True; | ||||||
|  | 					c = m->clients; | ||||||
|  | 					m->clients = c->next; | ||||||
|  | 					detachstack(c); | ||||||
|  | 					c->mon = mons; | ||||||
|  | 					attach(c); | ||||||
|  | 					attachstack(c); | ||||||
|  | 				} | ||||||
|  | 				if(m == selmon) | ||||||
|  | 					selmon = mons; | ||||||
|  | 				cleanupmon(m); | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 		free(unique); | 		free(unique); | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R Garbe
						Anselm R Garbe