bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#4543: window-full-height-p


From: martin rudalics
Subject: bug#4543: window-full-height-p
Date: Fri, 25 Sep 2009 14:59:51 +0200
User-agent: Thunderbird 2.0.0.21 (Windows/20090302)

>> `window-full-width-p' is based on the definition
>>
>>    /* Total width of frame F, in columns (characters),
>>       including the width used by scroll bars if any.  */
>>
>>    #define FRAME_TOTAL_COLS(f) ((f)->total_cols)
>>
>> from frame.h whose semantics I don't understand.  Not really simple.
>
> Maybe I can help.  What is the difficulty with the semantics of this
> attribute of a frame?

It's merely how this is set in `change_frame_size_1' which does

  SET_FRAME_COLS (f, newwidth);

where

#define SET_FRAME_COLS(f, val)                                          \
     (FRAME_COLS (f) = (val),                                           \
      (f)->total_cols = FRAME_TOTAL_COLS_ARG (f, FRAME_COLS (f)))

and

#define FRAME_TOTAL_COLS_ARG(f, width)          \
     ((width)                                   \
      + FRAME_SCROLL_BAR_COLS (f)               \
      + FRAME_FRINGE_COLS (f))
and

#define FRAME_SCROLL_BAR_COLS(f)                        \
     (FRAME_HAS_VERTICAL_SCROLL_BARS (f)                \
      ? FRAME_CONFIG_SCROLL_BAR_COLS (f)                \
      : 0)

etc ...  What are the scrollbars of a frame, I'm asking myself.  If we
define a frame as a collection of windows and frame-width as the width
of the widest window in that frame, things are deceptively simple.  But
the calculations sketched above are a little over my head.

> What's wrong with this (taken from frame.c:frame-parameters) as the
> frame height:
>
>   height = (f->new_text_lines ? f->new_text_lines : FRAME_LINES (f));

new_text_lines is for a pending size change and zero otherwise.  You
probably mean text_lines whose precise semantics I don't know - what are
canonical characters?

> and then subtract from it the height of the minibuffer window?
>
> The C variable `minibuf_window' should give you the Lisp object that
> holds the minibuffer window, and its `total_lines' attribute should
> give you the height of that window.  Or am I missing something?

Then why not use the height of the frame-root-window directly?  No need
to subtract one value from the other.

martin





reply via email to

[Prev in Thread] Current Thread [Next in Thread]