added general manager options
This commit is contained in:
		
							parent
							
								
									2f654441c4
								
							
						
					
					
						commit
						1ef21b5897
					
				| 
						 | 
				
			
			@ -1,3 +1,9 @@
 | 
			
		|||
(define-options-spec manager-options-spec
 | 
			
		||||
  (focus-policy symbol-list '(enter)) ;; enter, click
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
;; TODO: focus-policy click does not work yet
 | 
			
		||||
 | 
			
		||||
(define-record-type wm :wm
 | 
			
		||||
  (make-wm type in-channel out-channel internal-out-channel
 | 
			
		||||
	   dpy window colormap options
 | 
			
		||||
| 
						 | 
				
			
			@ -27,8 +33,6 @@
 | 
			
		|||
   ((eq? type (manager-type switch)) "switch-wm")
 | 
			
		||||
   ((eq? type (manager-type move)) "move-wm")))
 | 
			
		||||
 | 
			
		||||
(define focus-policy '(enter click)) ;; TODO: -> options
 | 
			
		||||
 | 
			
		||||
(define (create-wm dpy parent options children
 | 
			
		||||
		   type options-spec out-channel fun)
 | 
			
		||||
  (let* ((wa (get-window-attributes dpy parent))
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +47,10 @@
 | 
			
		|||
	 (internal-out-channel (make-channel))
 | 
			
		||||
	 (wm (make-wm type in-channel out-channel internal-out-channel
 | 
			
		||||
		      dpy main-window colormap
 | 
			
		||||
		      (create-options dpy colormap options-spec options)
 | 
			
		||||
		      (create-options dpy colormap
 | 
			
		||||
				      (options-spec-union options-spec
 | 
			
		||||
							  manager-options-spec)
 | 
			
		||||
				      options)
 | 
			
		||||
		      '() #f)))
 | 
			
		||||
 | 
			
		||||
    ;; set properties ************************************************
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +101,8 @@
 | 
			
		|||
	(type (any-event-type xevent)))
 | 
			
		||||
    (cond
 | 
			
		||||
     ((expose-event? xevent)
 | 
			
		||||
      (send internal-out-channel '(draw-main-window)))
 | 
			
		||||
      (if (= 0 (expose-event-count xevent))
 | 
			
		||||
	  (send internal-out-channel '(draw-main-window))))
 | 
			
		||||
 | 
			
		||||
     ((configure-event? xevent)
 | 
			
		||||
      (send internal-out-channel '(fit-windows)))
 | 
			
		||||
| 
						 | 
				
			
			@ -261,8 +269,9 @@
 | 
			
		|||
	(dpy (wm:dpy wm)))
 | 
			
		||||
    (cond
 | 
			
		||||
     ((expose-event? xevent)
 | 
			
		||||
      (send internal-out-channel
 | 
			
		||||
	    (list 'draw-client-window client)))
 | 
			
		||||
      (if (= 0 (expose-event-count xevent))
 | 
			
		||||
	  (send internal-out-channel
 | 
			
		||||
		(list 'draw-client-window client))))
 | 
			
		||||
     ((configure-event? xevent)
 | 
			
		||||
      (send internal-out-channel
 | 
			
		||||
	    (list 'fit-client client)))
 | 
			
		||||
| 
						 | 
				
			
			@ -275,11 +284,11 @@
 | 
			
		|||
		(list 'update-client-state client))))
 | 
			
		||||
 | 
			
		||||
     ((eq? (event-type enter-notify) type)
 | 
			
		||||
      (if (memq 'enter focus-policy)
 | 
			
		||||
      (if (memq 'enter (get-option-value (wm:options wm) 'focus-policy))
 | 
			
		||||
	  (wm-select-client wm client (crossing-event-time xevent))))
 | 
			
		||||
 | 
			
		||||
     ((eq? (event-type button-press) type)
 | 
			
		||||
      (if (memq 'click focus-policy)
 | 
			
		||||
      (if (memq 'click (get-option-value (wm:options wm) 'focus-policy))
 | 
			
		||||
	  (wm-select-client wm client (button-event-time xevent))))
 | 
			
		||||
 | 
			
		||||
     ((destroy-window-event? xevent)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue