From: John Avery <jkavery@fastmail.net>
To: Roshan Shariff <roshan.shariff@gmail.com>, Eli Zaretskii <eliz@gnu.org>
Cc: Po Lu <luangruo@yahoo.com>, 67654@debbugs.gnu.org
Subject: bug#67654: 29.1; Hiding menu bar makes new frames very small
Date: Tue, 18 Jun 2024 21:57:18 -0400 [thread overview]
Message-ID: <278bddcc-5614-44cc-99fa-c748d557d346@fastmail.net> (raw)
In-Reply-To: <CAG8iPGxLEkM2eQGrKAjh_ShR5N6K=8o8Hk+M+GeWLR6-cWxtNQ@mail.gmail.com>
On 12/11/23 02:13, Roshan Shariff wrote:
> I tried a git bisect only to find that commits as far back as ~2015
> exhibit the bug; I wasn't able to compile older versions on my system
> because of segfaults during compilation. So it seems plausible that
> the GTK3 build of Emacs has always had this issue.
>
> While coming up with a workaround (see below) I noticed something odd.
> I added a hook to after-make-frame-functions that prints out the
> frame-{char,native,text,outer}-{width,height} of the newly created
> frame. I found that immediately after the frame is created, these
> values are fine. But when printing them out after a brief sleep-for,
> or using run-with-timer, the values actually match the size of the
> tiny frame. So it seems that Emacs thinks the frame has the correct
> size on creation, but learns of its actual size a little bit later.
>
> The following workaround needs the run-with-timer (and the duration
> needs to be long enough):
>
> (add-hook 'after-make-frame-functions
> (defun +resize-after-make-frame (frame)
> ;; HACK Resize new frames shortly after creation. Works around
> ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67654
> (when-let ((width (alist-get 'width default-frame-alist))
> (height (alist-get 'height default-frame-alist)))
> (run-with-timer (/ 1.0 60) nil #'set-frame-size frame width height))))
>
> I figure there's little chance of finding the root cause, but
> hopefully the workaround will help people who come across this.
>
I have only seen the problem since moving to Ubuntu 24.04 (with Gnu
Emacs 29.3). Previously I was running Ubuntu 23.10 with its default Emacs.
Before seeing any bug reports I came up with an after make frame
function. It now incorporates most of your code and also takes
advantage of your observation about
frame-{char,native,text,outer}-{width,height} of the newly created
frame. Thank you!
I have not tested it extensively, but it has worked without fail for
nearly two weeks.
(add-hook 'after-make-frame-functions
(defun +resize-after-make-frame (frame)
"HACK Resize new frames shortly after creation. Works around
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67654"
(let ((width (/ (frame-text-width frame) (frame-char-width frame)))
(height (/ (frame-text-height frame) (frame-char-height
frame))))
(sleep-for 0 1)
(set-frame-size frame width height))))
next prev parent reply other threads:[~2024-06-19 1:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAG8iPGxmb2f-1PH6HKEbLzchr+DRE2DAiCWG6YKmAOX6+ORdGA@mail.gmail.com>
2023-12-06 8:26 ` bug#67654: 29.1; Hiding menu bar makes new frames very small Roshan Shariff
2023-12-06 12:33 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-06 12:39 ` Eli Zaretskii
2023-12-06 16:48 ` Roshan Shariff
2023-12-11 7:13 ` Roshan Shariff
2023-12-11 7:37 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-11 12:14 ` Eli Zaretskii
2023-12-11 12:38 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-19 1:57 ` John Avery [this message]
2023-12-06 7:52 Roshan Shariff
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=278bddcc-5614-44cc-99fa-c748d557d346@fastmail.net \
--to=jkavery@fastmail.net \
--cc=67654@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=luangruo@yahoo.com \
--cc=roshan.shariff@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).