- 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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
					;; the window-datatype ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-record-type window :window
 | 
					(define-record-type window :window
 | 
				
			||||||
  (really-make-window tag Xwindow display) 
 | 
					  (really-make-window tag Xwindow display destroyed?) 
 | 
				
			||||||
  window? 
 | 
					  window? 
 | 
				
			||||||
  (tag window-tag window-set-tag!)
 | 
					  (tag window-tag window-set-tag!)
 | 
				
			||||||
  (Xwindow real-window-Xwindow window-set-Xwindow!)
 | 
					  (Xwindow real-window-Xwindow window-set-Xwindow!)
 | 
				
			||||||
 | 
					  (destroyed? window-destroyed? window-set-destroyed?!)
 | 
				
			||||||
  (display window-display window-set-display!))
 | 
					  (display window-display window-set-display!))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (window-Xwindow window)
 | 
					(define (window-Xwindow window)
 | 
				
			||||||
| 
						 | 
					@ -22,7 +23,7 @@
 | 
				
			||||||
  (let ((maybe-window (window-list-find Xwindow)))
 | 
					  (let ((maybe-window (window-list-find Xwindow)))
 | 
				
			||||||
    (if maybe-window
 | 
					    (if maybe-window
 | 
				
			||||||
	maybe-window
 | 
						maybe-window
 | 
				
			||||||
	(let ((window (really-make-window #f Xwindow display)))
 | 
						(let ((window (really-make-window #f Xwindow display #f)))
 | 
				
			||||||
	  (if finalize?
 | 
						  (if finalize?
 | 
				
			||||||
	      (add-finalizer! window destroy-window)
 | 
						      (add-finalizer! window destroy-window)
 | 
				
			||||||
	      (add-finalizer! window window-list-delete!))
 | 
						      (add-finalizer! window window-list-delete!))
 | 
				
			||||||
| 
						 | 
					@ -57,11 +58,10 @@
 | 
				
			||||||
(define (destroy-window window)
 | 
					(define (destroy-window window)
 | 
				
			||||||
  (let ((Xdisplay (display-Xdisplay (window-display window)))
 | 
					  (let ((Xdisplay (display-Xdisplay (window-display window)))
 | 
				
			||||||
	(Xwindow (window-Xwindow window)))
 | 
						(Xwindow (window-Xwindow window)))
 | 
				
			||||||
    (if (integer? Xwindow)
 | 
					    (window-list-delete! window)
 | 
				
			||||||
	(begin
 | 
					    (if (not (window-destroyed? window))
 | 
				
			||||||
	  (window-list-delete! window)
 | 
						(%destroy-window Xdisplay Xwindow))
 | 
				
			||||||
	  (%destroy-window Xdisplay Xwindow)
 | 
					    (window-set-destroyed?! window #t)))
 | 
				
			||||||
	  (window-set-Xwindow! window 'already-destroyed)))))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
(import-lambda-definition %destroy-window (Xdisplay Xwindow)
 | 
					(import-lambda-definition %destroy-window (Xdisplay Xwindow)
 | 
				
			||||||
  "scx_Destroy_Window")
 | 
					  "scx_Destroy_Window")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue