rework setting window color
This commit is contained in:
		
							parent
							
								
									10d4e479c5
								
							
						
					
					
						commit
						754195f8d7
					
				
							
								
								
									
										17
									
								
								slock.c
								
								
								
								
							
							
						
						
									
										17
									
								
								slock.c
								
								
								
								
							| 
						 | 
				
			
			@ -119,11 +119,12 @@ readpw(Display *dpy, const char *pws)
 | 
			
		|||
{
 | 
			
		||||
	char buf[32], passwd[256];
 | 
			
		||||
	int num, screen;
 | 
			
		||||
	unsigned int len, llen;
 | 
			
		||||
	unsigned int len, color;
 | 
			
		||||
	KeySym ksym;
 | 
			
		||||
	XEvent ev;
 | 
			
		||||
	static int oldc = INIT;
 | 
			
		||||
 | 
			
		||||
	len = llen = 0;
 | 
			
		||||
	len = 0;
 | 
			
		||||
	running = True;
 | 
			
		||||
 | 
			
		||||
	/* As "slock" stands for "Simple X display locker", the DPMS settings
 | 
			
		||||
| 
						 | 
				
			
			@ -174,18 +175,14 @@ readpw(Display *dpy, const char *pws)
 | 
			
		|||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
			if (llen == 0 && len != 0) {
 | 
			
		||||
			color = len ? INPUT : (failure || failonclear ? FAILED : INIT);
 | 
			
		||||
			if (oldc != color) {
 | 
			
		||||
				for (screen = 0; screen < nscreens; screen++) {
 | 
			
		||||
					XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[INPUT]);
 | 
			
		||||
					XClearWindow(dpy, locks[screen]->win);
 | 
			
		||||
				}
 | 
			
		||||
			} else if (llen != 0 && len == 0) {
 | 
			
		||||
				for (screen = 0; screen < nscreens; screen++) {
 | 
			
		||||
					XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[failure || failonclear ? FAILED : INIT]);
 | 
			
		||||
					XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[color]);
 | 
			
		||||
					XClearWindow(dpy, locks[screen]->win);
 | 
			
		||||
				}
 | 
			
		||||
				oldc = color;
 | 
			
		||||
			}
 | 
			
		||||
			llen = len;
 | 
			
		||||
		} else if (rr && ev.type == rrevbase + RRScreenChangeNotify) {
 | 
			
		||||
			XRRScreenChangeNotifyEvent *rre = (XRRScreenChangeNotifyEvent*)&ev;
 | 
			
		||||
			for (screen = 0; screen < nscreens; screen++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue