| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -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) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		m = mons->next; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		XUnmapWindow(dpy, mons->barwin); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		XDestroyWindow(dpy, mons->barwin); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		free(mons); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		mons = m; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	if(mon == mons) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		mons = mons->next; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	else { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		for(m = mons; m && m->next != mon; m = m->next); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		m->next = mon->next; | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	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 */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			cleanup(); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			setup(); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			scan(); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		else { /* less monitors available nn < n */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			for(i = nn; i < n; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				for(m = mons; m && m->next; m = m->next); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				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); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |