GNU bug report logs -
#76275
31.0.50; frame-inhibit-implied-resize broken on recent master
Previous Next
Reported by: Sean Whitton <spwhitton <at> spwhitton.name>
Date: Fri, 14 Feb 2025 03:29:01 UTC
Severity: normal
Found in version 31.0.50
Done: Sean Whitton <spwhitton <at> spwhitton.name>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 76275 <at> debbugs.gnu.org (full text, mbox):
> By means of Git bisection I have discovered that commit dbf22fd0d05 to
> fix bug#74750 has broken frame-inhibit-implied-resize.
> Here is a reproducer:
>
> 1. Configure the Sway compositor to move and resize new windows that
> open if they have the title "Emacs Sway input":
> --8<---------------cut here---------------start------------->8---
> for_window [title="^Emacs Sway input$"] \
> floating enable, sticky enable, \
> resize set width 90 ppt, resize set height 90 px, \
> border pixel 2, move position 5 ppt 10 px
> --8<---------------cut here---------------end--------------->8---
>
> 2. Create sway-completing-read.el:
> --8<---------------cut here---------------start------------->8---
> (defun spw/scale-default (frame)
> (set-face-attribute 'default frame :height 120))
> (add-to-list 'window-size-change-functions #'spw/scale-default)
>
> (defun spw/sway-completing-read (prompt collection &rest optional-args)
> (let* ((frame-inhibit-implied-resize t)
> (frame (make-frame `((title . "Emacs Sway input")
> (minibuffer . only)
> (display . ,(getenv "WAYLAND_DISPLAY"))))))
> (unwind-protect
> (with-selected-frame frame
> (set-window-scroll-bars (minibuffer-window frame) 0 nil 0 nil t)
> (apply #'completing-read prompt collection optional-args))
> (delete-frame frame))))
> --8<---------------cut here---------------end--------------->8---
>
> 3. src/emacs -Q -l sway-completing-read.el --fg-daemon=test
>
> 4. lib-src/emacsclient -stest -e '(spw/sway-completing-read "Choose: " (list "one" "two" "three"))'
>
> Result before dbf22fd0d05: New graphical frame of size 90%x90px appears.
> Result after dbf22fd0d05: New graphical frame of a different size appears.
>
> I think what happens is that Sway moves and resizes the new frame, but
> then Emacs immediately wants to resize it after scaling the font size.
> Binding frame-inhibit-implied-resize used to prevent that, but it's now
> broken.
Two (maybe silly) questions:
(1) Is the
> (defun spw/scale-default (frame)
> (set-face-attribute 'default frame :height 120))
> (add-to-list 'window-size-change-functions #'spw/scale-default)
needed to reproduce the problem and how or why? If so, then please tell
us (via GDB) when and how these bypass the
|| !f->can_set_window_size
|| !f->after_make_frame
check in run_window_change_functions in window.c. If they do bypass it,
could you insert an additional
|| !f->tool_bar_resized
there and tell us what happens then?
(2) Is the
> (unwind-protect
> (with-selected-frame frame
> (set-window-scroll-bars (minibuffer-window frame) 0 nil 0 nil t)
> (apply #'completing-read prompt collection optional-args))
> (delete-frame frame))))
needed to reproduce the problem and how or why?
Thanks, martin
This bug report was last modified 64 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.