fixed grabbing if no window is focused.
This commit is contained in:
		
							parent
							
								
									cd58a58e42
								
							
						
					
					
						commit
						6eeef48f98
					
				| 
						 | 
				
			
			@ -89,11 +89,11 @@
 | 
			
		|||
  (let* ((fwin (get-input-focus-window dpy)) ;; can be pointer-root and none
 | 
			
		||||
	 (path (reverse (if (or (equal? fwin none)
 | 
			
		||||
				(equal? fwin pointer-root))
 | 
			
		||||
			    '()
 | 
			
		||||
			    (list (default-root-window dpy))
 | 
			
		||||
			    (window-path dpy fwin))))
 | 
			
		||||
	 ;; find all that match the first key and are registered for a
 | 
			
		||||
	 ;; window on the path
 | 
			
		||||
	 (grabs (flatten
 | 
			
		||||
		 (filter
 | 
			
		||||
		  (lambda (x) x)
 | 
			
		||||
		 (map (lambda (win)
 | 
			
		||||
			(filter
 | 
			
		||||
			 (lambda (grab)
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,8 @@
 | 
			
		|||
				  (equal? (key:keycode first)
 | 
			
		||||
					  (key-event-keycode event)))))
 | 
			
		||||
			 grabs))
 | 
			
		||||
		       path))))
 | 
			
		||||
		      path)))
 | 
			
		||||
	 ;; make an alist mapping a grab to the keys that are not entered
 | 
			
		||||
	 (grabs-rests (map (lambda (g)
 | 
			
		||||
			     (cons g (cdr (key-grab:keys g))))
 | 
			
		||||
			   grabs))
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +113,6 @@
 | 
			
		|||
		    (let ((dones (map car (filter (lambda (grab-rest)
 | 
			
		||||
						    (null? (cdr grab-rest)))
 | 
			
		||||
						  grabs-rests))))
 | 
			
		||||
		      (mdisplay "winner? dones: " dones "\n")
 | 
			
		||||
		      (let loop ((dones dones))
 | 
			
		||||
			(if (null? dones)
 | 
			
		||||
			    #f
 | 
			
		||||
| 
						 | 
				
			
			@ -129,7 +129,6 @@
 | 
			
		|||
	    dpy (default-root-window dpy) (event-mask key-press)
 | 
			
		||||
	    (lambda (event-channel)
 | 
			
		||||
	      (let loop ((grabs-rests grabs-rests))
 | 
			
		||||
		(mdisplay "grabs-rests: " grabs-rests "\n")
 | 
			
		||||
		(and (not (null? grabs-rests))
 | 
			
		||||
		     (or (winner? grabs-rests)
 | 
			
		||||
			 (let ((e (receive event-channel)))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue