GNU bug report logs -
#78418
31.0.50; Change in fit-frame-to-buffer doesn't work with transient-posframe
Previous Next
Full log
Message #20 received at submit <at> debbugs.gnu.org (full text, mbox):
Gerd Möllmann <gerd.moellmann <at> gmail.com> writes:
> martin rudalics <rudalics <at> gmx.at> 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
When I invoke a transient in the GUI, and with this diff
1 file changed, 6 insertions(+)
lisp/window.el | 6 ++++++
modified lisp/window.el
@@ -10126,9 +10126,11 @@ fit-frame-to-buffer-1
(setq left left-margin)))))
;; Fit height to constraints.
(when height
+ (message "1: height %S" height)
(unless frame-resize-pixelwise
(setq height (* (/ (+ height char-height -1) char-height)
char-height)))
+ (message "2: height %S" height)
;; The new outer height.
(setq outer-height (+ height outer-minus-body-height))
;; Preserve margins.
@@ -10158,6 +10160,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))))))
@@ -10165,6 +10169,8 @@ fit-frame-to-buffer-1
(if width
(+ width text-minus-body-width)
(frame-text-width frame)))
+ (message "height %S text-minus-body-height %S"
+ height text-minus-body-height)
(setq text-height
(if height
(+ height text-minus-body-height)
I see that the function is apparently called twice? And the output is
1: height 199
2: height 199
height 199 text-minus-body-height 0
1: height 199
2: height 216
remainder 0 text-minus-body-height 0 char-height 18
height 216 text-minus-body-height 0
Maybe the second '2:...' is what increases the frame size?
This bug report was last modified 85 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.