unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
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))))





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