fixed misappearance of iconified windows on SIGKILL
This commit is contained in:
		
							parent
							
								
									b975c47280
								
							
						
					
					
						commit
						fc109ea8f7
					
				
							
								
								
									
										27
									
								
								main.c
								
								
								
								
							
							
						
						
									
										27
									
								
								main.c
								
								
								
								
							| 
						 | 
				
			
			@ -111,6 +111,24 @@ initfont(const char *fontstr) {
 | 
			
		|||
	dc.font.height = dc.font.ascent + dc.font.descent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static long
 | 
			
		||||
getstate(Window w) {
 | 
			
		||||
	int format, status;
 | 
			
		||||
	long result = -1;
 | 
			
		||||
	unsigned char *p = NULL;
 | 
			
		||||
	unsigned long n, extra;
 | 
			
		||||
	Atom real;
 | 
			
		||||
 | 
			
		||||
	status = XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState],
 | 
			
		||||
			&real, &format, &n, &extra, (unsigned char **)&p);
 | 
			
		||||
	if(status != Success)
 | 
			
		||||
		return -1;
 | 
			
		||||
	if(n != 0)
 | 
			
		||||
		result = *p;
 | 
			
		||||
	XFree(p);
 | 
			
		||||
	return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
scan(void) {
 | 
			
		||||
	unsigned int i, num;
 | 
			
		||||
| 
						 | 
				
			
			@ -123,7 +141,14 @@ scan(void) {
 | 
			
		|||
			if(!XGetWindowAttributes(dpy, wins[i], &wa)
 | 
			
		||||
			|| wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
 | 
			
		||||
				continue;
 | 
			
		||||
			if(wa.map_state == IsViewable)
 | 
			
		||||
			if(wa.map_state == IsViewable || getstate(wins[i]) == IconicState)
 | 
			
		||||
				manage(wins[i], &wa);
 | 
			
		||||
		}
 | 
			
		||||
		for(i = 0; i < num; i++) { /* now the transients */
 | 
			
		||||
			if(!XGetWindowAttributes(dpy, wins[i], &wa))
 | 
			
		||||
				continue;
 | 
			
		||||
			if(XGetTransientForHint(dpy, wins[i], &d1)
 | 
			
		||||
			&& (wa.map_state == IsViewable || getstate(wins[i]) == IconicState))
 | 
			
		||||
				manage(wins[i], &wa);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										6
									
								
								screen.c
								
								
								
								
							
							
						
						
									
										6
									
								
								screen.c
								
								
								
								
							| 
						 | 
				
			
			@ -60,7 +60,7 @@ setdwmprops(void) {
 | 
			
		|||
	for(i = 0; i < ntags && i < sizeof prop - 1; i++)
 | 
			
		||||
		prop[i] = seltags[i] ? '1' : '0';
 | 
			
		||||
	if(i < sizeof prop - 1)
 | 
			
		||||
		prop[i++] = (char)ltidx;
 | 
			
		||||
		prop[i++] = (char)ltidx + '0';
 | 
			
		||||
	prop[i] = '\0';
 | 
			
		||||
	XChangeProperty(dpy, root, dwmprops, XA_STRING, 8,
 | 
			
		||||
			PropModeReplace, (unsigned char *)prop, i);
 | 
			
		||||
| 
						 | 
				
			
			@ -223,8 +223,8 @@ getdwmprops(void) {
 | 
			
		|||
		for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
 | 
			
		||||
			seltags[i] = prop[i] == '1';
 | 
			
		||||
		if(i < sizeof prop - 1 && prop[i] != '\0') {
 | 
			
		||||
			if(prop[i] < nlayouts)
 | 
			
		||||
				ltidx = prop[i];
 | 
			
		||||
			if((unsigned int)(prop[i] - '0') < nlayouts)
 | 
			
		||||
				ltidx = prop[i] - '0';
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue