[Top][All Lists]

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

Re: Emphasizing the top of the frame

From: martin rudalics
Subject: Re: Emphasizing the top of the frame
Date: Wed, 26 Oct 2016 10:10:32 +0200

>> The relevant places to look are xdisp.c, dispnew.c, and dispextern.h.
>> IOW, the Emacs display engine.  It currently _knows_ that the
>> minibuffer is at bottom and that the mode line is the last screen line
>> of any window.
> That was somewhat inaccurate: the fact that the minibuffer window is
> at bottom is coded in frame.c:make_frame, where the frame's window
> tree is set such that the minibuffer window is on the 'next' pointer
> from the frame's root window.  Switching the order shouldn't be hard,
> but I'd like Martin's opinion on how many things this could break.

Does the display engine anywhere rely on that order?  The frame/window
code doesn't and conceptually should even tolerate the next window of
the root window being nil all the time.

I would start by assigning the appropriate pixel_top and top_line values
for root and minibuffer window (grow_mini_window, shrink_mini_window,
resize_frame_windows, make_frame, Fresize_mini_window_internal,
init_xdisp seem affected at least) and look what happens.

Note, however, that enlarging the minibuffer window currently tries to
"adjust the trailing edge" of the root window (see that comment in

      ;; When shrinking the root window, emulate an edge drag in order
      ;; to not resize other windows if we can avoid it (Bug#12419).

and the bug mentioned there for why that is important).

No routine for adjusting "the leading edge" of a window exists.  So you
either have to write such a routine (it's not hard to write but probably
hard to integrate into the current framework of resizing routines) or
use the resize-windows-proportionally approach (with the consequence
that enlarging the minibuffer window will shrink all vertically stacked
subwindows of the root window proportionally and maybe readjust their
start positions).


reply via email to

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