| 
						
						
						
					 | 
				
				 | 
				
					@ -1,4 +1,4 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#define XINULATOR /* debug, simulates dual head */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//#define XINULATOR /* debug, simulates dual head */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					/* See LICENSE file for copyright and license details. | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					 * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					 * dynamic window manager is designed like any other X client as well. It is | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1649,9 +1649,11 @@ updatebarpos(Monitor *m) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					updategeom(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int i, n = 1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						int i, di, n = 1, x, y; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						unsigned int dui; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Client *c; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Monitor *newmons = NULL, *m, *tm; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						Window dummy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#ifdef XINULATOR | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						n = 2; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1720,16 +1722,6 @@ updategeom(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->showbar = showbar; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							m->topbar = topbar; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							updatebarpos(m); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							/* reassign all clients with same screen number */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(tm = mons; tm; tm = tm->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(tm->screen_number == m->screen_number) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									m->clients = tm->clients; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									m->sel = m->stack = tm->stack; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									tm->clients = NULL; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									tm->stack = NULL; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									for(c = m->clients; c; c = c->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										c->mon = m; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* reassign left over clients of disappeared monitors */ | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1744,18 +1736,13 @@ updategeom(void) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* select focused monitor */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(!selmon) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							selmon = newmons; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							int di, x, y; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							unsigned int dui; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							Window dummy; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui))  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								for(m = newmons; m; m = m->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									if(INRECT(x, y, m->wx, m->wy, m->ww, m->wh)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										selmon = m; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						selmon = newmons; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui))  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for(m = newmons; m; m = m->next) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if(INRECT(x, y, m->wx, m->wy, m->ww, m->wh)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									selmon = m; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									break; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/* final assignment of new monitors */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						cleanupmons(); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |