- added destroyed? component to the window-type for a better
recognition of window-destroyal. (should be done with all types)
This commit is contained in:
parent
2db54b1c37
commit
0043252da4
|
@ -1,10 +1,11 @@
|
|||
;; the window-datatype ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define-record-type window :window
|
||||
(really-make-window tag Xwindow display)
|
||||
(really-make-window tag Xwindow display destroyed?)
|
||||
window?
|
||||
(tag window-tag window-set-tag!)
|
||||
(Xwindow real-window-Xwindow window-set-Xwindow!)
|
||||
(destroyed? window-destroyed? window-set-destroyed?!)
|
||||
(display window-display window-set-display!))
|
||||
|
||||
(define (window-Xwindow window)
|
||||
|
@ -22,7 +23,7 @@
|
|||
(let ((maybe-window (window-list-find Xwindow)))
|
||||
(if maybe-window
|
||||
maybe-window
|
||||
(let ((window (really-make-window #f Xwindow display)))
|
||||
(let ((window (really-make-window #f Xwindow display #f)))
|
||||
(if finalize?
|
||||
(add-finalizer! window destroy-window)
|
||||
(add-finalizer! window window-list-delete!))
|
||||
|
@ -57,11 +58,10 @@
|
|||
(define (destroy-window window)
|
||||
(let ((Xdisplay (display-Xdisplay (window-display window)))
|
||||
(Xwindow (window-Xwindow window)))
|
||||
(if (integer? Xwindow)
|
||||
(begin
|
||||
(window-list-delete! window)
|
||||
(%destroy-window Xdisplay Xwindow)
|
||||
(window-set-Xwindow! window 'already-destroyed)))))
|
||||
(window-list-delete! window)
|
||||
(if (not (window-destroyed? window))
|
||||
(%destroy-window Xdisplay Xwindow))
|
||||
(window-set-destroyed?! window #t)))
|
||||
|
||||
(import-lambda-definition %destroy-window (Xdisplay Xwindow)
|
||||
"scx_Destroy_Window")
|
||||
|
|
Loading…
Reference in New Issue