Subject: Re: 31.0.50; Change in fit-frame-to-buffer doesn't work with transient-posframe

From: Gerd Möllmann <[email-masked]>
Date: Wed, 14 May 2025 11:48:02 +0200

martin rudalics <[email-masked]> writes:

>  >> what are the values of 'text-minus-body-height' and 'char-height' when
>  >> the problem happens?
>  >>
>  >> martin
>  >
>  > text-minus-body-height 0, char-height 1
>
> Thanks.  Silly thinko then and the below should fix it.
>
> martin
>
> diff --git a/lisp/window.el b/lisp/window.el
> index e0e626e9500..e372ef8b9bb 100644
> --- a/lisp/window.el
> +++ b/lisp/window.el
> @@ -10153,14 +10153,14 @@ fit-frame-to-buffer-1
>   	;; this may cause lines getting wrapped.  To avoid that, round
>   	;; sizes up here which will, however, leave a blank space at the
>   	;; end of the longest line(s).
> -	(setq text-minus-body-width
> -	      (+ text-minus-body-width
> -		 (- char-width
> -		    (% text-minus-body-width char-width))))
> -	(setq text-minus-body-height
> -	      (+ text-minus-body-height
> -		 (- char-height
> -		    (% text-minus-body-height char-height)))))
> +	(let ((remainder (% text-minus-body-width char-width)))
> +	  (unless (zerop remainder)
> +	    (setq text-minus-body-width
> +		  (+ text-minus-body-width (- char-width remainder)))))
> +	(let ((remainder (% text-minus-body-height char-height)))
> +	  (unless (zerop remainder)
> +	    (setq text-minus-body-height
> +		  (+ text-minus-body-height(- char-height remainder))))))
>         (setq text-width
>               (if width
>                   (+ width text-minus-body-width)

Thanks, that fixes the tty case, but on the GUI it still looks like in
the screen shot I sent. With

modified   lisp/window.el
@@ -10158,6 +10158,8 @@ fit-frame-to-buffer-1
 	    (setq text-minus-body-width
 		  (+ text-minus-body-width (- char-width remainder)))))
 	(let ((remainder (% text-minus-body-height char-height)))
+          (message "remainder %S text-minus-body-height %S char-height %S"
+                   remainder text-minus-body-height char-height)
 	  (unless (zerop remainder)
 	    (setq text-minus-body-height
 		  (+ text-minus-body-height(- char-height remainder))))))

it says

remainder 0 text-minus-body-height 0 char-height 18