GNU bug report logs - #33498
26.1; Unable to delete minibuffer-only+child frames

Previous Next

Package: emacs;

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):

From: Andreas Politz <politza <at> hochschule-trier.de>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 33498 <at> debbugs.gnu.org
Subject: Re: bug#33498: 26.1; Unable to delete minibuffer-only+child frames
Date: Mon, 26 Nov 2018 19:59:37 +0100
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.