Subject: Re: bug#4543: window-full-height-p

From: Eli Zaretskii <[email-masked]>
Date: Sat, 26 Sep 2009 14:28:39 +0300

> Date: Sat, 26 Sep 2009 11:45:41 +0200
> From: martin rudalics <[email-masked]>
> Cc: [email-masked]
> 
> The problem I see is that the value for new_frame_total_cols
> calculated by change_frame_size_1 as
> 
>    /* Compute width of windows in F.
>       This is the width of the frame without vertical scroll bars.  */
>    new_frame_total_cols = FRAME_TOTAL_COLS_ARG (f, newwidth);
> 
>    /* Round up to the smallest acceptable size.  */
>    check_frame_size (f, &newheight, &newwidth);
> 
> doesn't make sense for more complex window configurations.

Why doesn't it make sense?  The computed value of new_frame_total_cols
is used to enlarge only the frame's root window:

  if (new_frame_total_cols != FRAME_TOTAL_COLS (f))
    {
      set_window_width (FRAME_ROOT_WINDOW (f), new_frame_total_cols, 2);

And for the root window, FRAME_TOTAL_COLS is correct, I think.  The
window configuration, however complex, does not affect the root
window, does it?

> I'm not sure, however, whether text-only terminals inherently rely
> on these calculations.  So the question I essentially ask is whether
> the number of total columns of a frame's root-window invariantly
> equals the width of that frame over all possible terminals.

I think it does, yes.  In any case, the code in change_frame_size_1
_is_ run on text-only terminals (or should I say for frames on
text-only terminals, since we have multi-tty now).