From 35913a8b7f8f95c1b912e02c56fa16191eae2d5a Mon Sep 17 00:00:00 2001 From: Philippe Brochard Date: Fri, 13 Dec 2013 22:51:57 +0100 Subject: [PATCH] Also remove frame in delete-child-and-children-in-all-frames --- src/clfswm-internal.lisp | 5 ++++- src/clfswm-util.lisp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/clfswm-internal.lisp b/src/clfswm-internal.lisp index 01807cf..dc6f150 100644 --- a/src/clfswm-internal.lisp +++ b/src/clfswm-internal.lisp @@ -1567,7 +1567,10 @@ Warning:frame window and gc are freeed." (when (frame-p child) (delete-child-and-children-in-frames child *root-frame* close-methode)) (when (xlib:window-p child) - (funcall close-methode child)))) + (funcall close-methode child)) + (when (frame-p child) + (awhen (frame-gc child) (xlib:free-gcontext it) (setf it nil)) + (awhen (frame-window child) (xlib:destroy-window it) (setf it nil))))) (defun clean-windows-in-all-frames () diff --git a/src/clfswm-util.lisp b/src/clfswm-util.lisp index 2acb2d3..f5cefac 100644 --- a/src/clfswm-util.lisp +++ b/src/clfswm-util.lisp @@ -671,7 +671,7 @@ Write (defparameter *contrib-dir* \"/usr/local/lib/clfswm/\") in ~A.~%" (child-root-p frame)) (when (child-equal-p frame (current-child)) (setf (current-child) (find-current-root))) - (remove-child-in-frame frame (find-parent-frame frame))) + (delete-child-and-children-in-all-frames frame)) (show-all-children t)) -- 2.11.4.GIT