- bug in make-win-attr-getter fixed
- added window-exists? function
This commit is contained in:
parent
6984e99ccc
commit
c48fde11ba
|
@ -52,6 +52,8 @@
|
|||
;; window-exists? returns #t if the windows still exists (makes sense,
|
||||
;; doesn't it :-)
|
||||
|
||||
;; This version is easier and faster, but causes an X Protocol error,
|
||||
;; if the window does not exist.
|
||||
(define (window-exists? window)
|
||||
(and (integer? (window-Xwindow window)) ;; hasn't been destroyed by
|
||||
;; destroy-window
|
||||
|
@ -59,6 +61,27 @@
|
|||
#t #f))) ;; the window does not
|
||||
;; exists.
|
||||
|
||||
; (define (window-exists? window)
|
||||
; (let ((dpy (window-display window)))
|
||||
; (letrec ((loop (lambda (w)
|
||||
; (or (eq? w window)
|
||||
; (any loop (window-children w))))))
|
||||
; (any loop (map (lambda (i)
|
||||
; (display-root-window dpy i))
|
||||
; (iota (display-screen-count dpy)))))))
|
||||
|
||||
;; Alternative version, seems to be slower
|
||||
; (define (window-exists? window)
|
||||
; (let ((dpy (window-display window)))
|
||||
; (let loop ((candidates (map (lambda (i)
|
||||
; (display-root-window dpy i))
|
||||
; (iota (display-screen-count dpy)))))
|
||||
; (cond
|
||||
; ((null? candidates) #f)
|
||||
; ((eq? (car candidates) window) #t)
|
||||
; (else (loop (append (cdr candidates)
|
||||
; (window-children (car candidates)))))))))
|
||||
|
||||
;; *** change-window-attributes **************************************
|
||||
|
||||
;; change-window-attributes takes an alist of set-window-attributes
|
||||
|
@ -156,7 +179,8 @@
|
|||
|
||||
(define (make-win-attr-getter attribute)
|
||||
(lambda (window)
|
||||
(cdr (assq attribute (get-window-attributes window)))))
|
||||
(let ((attribs (get-window-attributes window)))
|
||||
(and attribs (cdr (assq attribute attribs))))))
|
||||
|
||||
(define window-x (make-win-attr-getter (window-attribute x)))
|
||||
(define window-y (make-win-attr-getter (window-attribute y)))
|
||||
|
|
Loading…
Reference in New Issue