GNU bug report logs -
#33498
26.1; Unable to delete minibuffer-only+child frames
Previous Next
Reported by: Andreas Politz <politza <at> hochschule-trier.de>
Date: Sun, 25 Nov 2018 11:45:01 UTC
Severity: normal
Tags: fixed
Found in version 26.1
Fixed in version 27.1
Done: martin rudalics <rudalics <at> gmx.at>
Bug is archived. No further changes may be made.
Full log
Message #23 received at 33498 <at> debbugs.gnu.org (full text, mbox):
Thanks for the detailed explanation. I was looking for a way to have
the minibuffer at the top of the frame, which you'd probably already
guessed.
martin rudalics <rudalics <at> gmx.at> writes:
> These operations would have to be automatized and improved as follows:
>
> Process a (minibuffer . child-frame) frame parameter to
>
> (1) make an _invisible_ top-level minibuffer-only frame similar to
> what we are doing in the (minibuffer . nil) case,
>
> (2) create the minibuffer-less parent frame with the minibuffer window
> set to the window made in (1),
>
> (3) reparent the minibuffer frame created in (1) and make it visible.
Should this be a dedicated function,
e.g. make-frame-with-minibuffer-child. Or a behavior triggered by an
additional frame-parameter passed to the parent ?
> Then deleting the parent frame would
>
> (4) make the minibuffer frame invisible and top-level,
>
> (5) delete the parent frame,
>
> (6) delete the minibuffer frame if possible or make it visible if it
> still serves as minibuffer frame for another frame.
>
> (4)-(5) would have to handle the cases correctly where delete_frame
> (the C function) is called from Elisp (via C-x 5 0, for example) and
> from the window manager (by clicking the "x" on the title bar). The
> Elisp call would not shut down Emacs, the window manager call could.
>
It seems to me that this code should go into Fdelete_frame ?
> To process (6) we would maybe also want an 'auto-delete-minibuffer'
> frame parameter (which could then be also used for non-child-frame
> minibuffer-only frames).
>
> Finally, any such code will have to process the 'delete-before' frame
> parameter appropriately to avoid running into an infinite loop of
> failed deletion attempts.
What if we allow the deletion of a minibuffer frame, if it will not
violate the invariant that all frames have a minibuffer, i.e. because
the frame in question will be deleted some time later (because this
operation is already on the call-stack.). I don't know if this
temporary violation (i.e. between deleting the child-minibuffer and
deleting the parent) is a problem. Anyway, this would enable the user
to delete these kinds of frames normally, even if it looks jerky.
And then implement the special minibuffer-as-child-frame behavior and
logic via dedicated functions, which display and undsiplay these frames
nicely. (Still, delete-frame would have to be redirected to some proxy
handling this case.)
Andreas
This bug report was last modified 6 years and 89 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.