GNU bug report logs - #15133
24.3.50; REGRESSION: `after-make-frame-functions' now run with wrong frame selected

Previous Next

Package: emacs;

Reported by: Drew Adams <drew.adams <at> oracle.com>

Date: Mon, 19 Aug 2013 15:03:02 UTC

Severity: normal

Tags: moreinfo

Found in version 24.3.50

Done: Drew Adams <drew.adams <at> oracle.com>

Bug is archived. No further changes may be made.

Full log


Message #14 received at 15133 <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: 15133 <at> debbugs.gnu.org
Subject: RE: bug#15133: 24.3.50; REGRESSION: `after-make-frame-functions' now
 run with wrong frame	selected
Date: Mon, 19 Aug 2013 11:25:37 -0700 (PDT)
>  > This regression was introduced after a build from 2013-08-08.  It
>  > appears in the build cited below, from 2013-08-18.  It makes Emacs
>  > unusable (by me).
>  >
>  > I have this as `after-make-frame-functions': `(fit-frame)', in order to
>  > fit the new frame to its displayed buffer.'
>  >
>  > When `after-make-frame-functions' is run in `make-frame' now, the
>  > original frame, not the newly created frame, is selected when it runs.
>  > So `fit-frame' is called with the original (wrong) frame selected.
> 
> If it can be fixed by commenting in the second line of the following
> comment in `pop-to-buffer'
> 
>    ;; This should be done by `select-window' below.
>    ;; (set-buffer buffer)
> 
> we have the following problem: Your `fit-frame' will work when using
> `pop-to-buffer' but not when using `display-buffer'.  So maybe it's
> better to do the funcall in `display-buffer-pop-up-frame' as
> 
> 	       (with-current-buffer buffer
> 		 (setq frame (funcall fun)))
> 
> Please try them both, tell me whether they work for you, and, if so,
> which one you prefer.

Sorry, I don't understand.  What "both" would you like me to try?  This
needs to work as it did before the regression - both `pop-to-buffer'
and `display-buffer'.

But first, I don't understand either why there should be any difference.
Why shouldn't functions on `after-make-frame-functions' always be passed
the new frame as argument, as has been the case in the past?  There is a
`before-make-frame-functions' hook for passing the originally selected
frame.

Perhaps you are thinking that this is about _selecting_ the new frame?
(I mistakenly mentioned "is selected" above, when I meant is passed to
the hook functions.)

I can understand that `pop-to-buffer' and `display-buffer' might act
differently wrt selecting the buffer's frame.  But I do not understand
why suddenly the functions on hook `after-make-frame-functions' should
be passed the original frame as arg instead of the new frame.

How else can someone invoke a function on the new frame as part of the
process of frame creation?




This bug report was last modified 11 years and 276 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.