Subject: 31.0.50; frame-inhibit-implied-resize broken on recent master

From: Sean Whitton <[email-masked]>
Date: Fri, 14 Feb 2025 11:28:10 +0800

X-debbugs-cc: [email-masked], [email-masked]

Hello,

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.

Thanks.

-- 
Sean Whitton