From 3e4c62de2fe70e7bd9d19d913c1c0af9c49ee83c Mon Sep 17 00:00:00 2001 From: David Botton Date: Wed, 10 Apr 2024 15:25:55 -0400 Subject: [PATCH] zombie control --- source/clog-gui.lisp | 21 ++++++++++++++++++++- tools/clog-builder-files.lisp | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/source/clog-gui.lisp b/source/clog-gui.lisp index d9d4b3e..c7b9707 100644 --- a/source/clog-gui.lisp +++ b/source/clog-gui.lisp @@ -305,7 +305,9 @@ create-gui-menu-bar.")) (defmethod menu-bar-height ((obj clog-obj)) (let ((app (connection-data-item obj "clog-gui"))) (if (and app (menu app)) - (height (menu app)) + (if (in-clog-popup-p obj) + 0 + (height (menu app))) 0))) ;;;;;;;;;;;;;;;;;;;;;;; @@ -328,6 +330,7 @@ create-gui-menu-bar.")) window or nil if not found")) (defmethod window-to-top-by-title ((obj clog-obj) title) + (window-clean-zombies obj) (when title (let ((app (connection-data-item obj "clog-gui")) (r nil)) @@ -340,6 +343,22 @@ window or nil if not found")) (windows app)) r))) +;;;;;;;;;;;;;;;;;;;;;;;;;; +;; window-clean-zombies ;; +;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defgeneric window-clean-zombies (clog-obj) + (:documentation "Clean zombie references to windows that can +occur from browsers being closed or crashing. (private)")) + +(defmethod window-clean-zombies ((obj clog-obj)) + (let ((app (connection-data-item obj "clog-gui"))) + (maphash (lambda (key value) + (declare (ignore key)) + (unless (window-valid-p value) + (remhash key (windows app)))) + (windows app)))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; window-to-top-by-param ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/tools/clog-builder-files.lisp b/tools/clog-builder-files.lisp index 02f6334..2c9b4c7 100644 --- a/tools/clog-builder-files.lisp +++ b/tools/clog-builder-files.lisp @@ -44,7 +44,9 @@ (if pop (let ((app (connection-data-item obj "builder-app-data"))) (setf (connection-data-item pop "builder-app-data") app) + (set-html-on-close pop "Connection Lost") (clog-gui-initialize pop :parent-desktop-obj obj) + (add-class pop *builder-window-desktop-class*) (if open-file (setf (title (html-document pop)) open-file) (setf (title (html-document pop)) "CLOG Builder Source Editor"))