emacs-devel
[Top][All Lists]
Advanced

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

Re: Q: child frames on ttys


From: Gerd Möllmann
Subject: Re: Q: child frames on ttys
Date: Wed, 21 Aug 2024 14:00:44 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Gerd Möllmann <gerd.moellmann@gmail.com> writes:

> Gerd Möllmann <gerd.moellmann@gmail.com> writes:

> * What we have
>
> Child frames are created with the =parent-frame= frame parameter on
> GUIs. This parameter can be changed at any time to create a hierarchy
> of child fremes. It can be reset to make a frame a non-child frame.
>
> A terminal's =tty_display_info= contains a =top_frame= member which is the
> topmost frame in z-order, where z-order is a bit misleading because
> all frames currently occupy the whole terminal screen. IOW making a
> frame the topmost frame obsures all other frames.
>
> Redisplay considers topmost frames only (more than one for multiple
> terminals).
>
> The function =frame-restack= can be used to change the z-order of
> frames. It currently does not handle tty frames.
>
> =frame-list= contains child frames.
>
> * Terminology
>
> A =root frame= is a frame with no parent frame. It always occupies the
> whole terminal.
>
> * Steps
>
> 1. Let frames have arbitrary ~(x, y, w, h)~ except for root frames,
>    which have ~(0, 0, terminal-width, terminal-height)~. Change
>    =frame-geometry=.
>
> 2. Give root frames a =child_frames= list which is in z-order, topmost
>    last. Add a =tty-frame-restack= which acts on this list.
>
> 3. In =redisplay_internal=, act only on root frames. Generating desired
>    glyphs generates glyphs for the root frame, then child frames in
>    z-order, topmost last, i.e. in the order of =frame::child_frames=.
>
> 4. Making a frame visible means making all children frames visible.
>
> 5. Do not clear the terminal, unless switching to another root frame.
>
> 6. Update: Build frame matrices for all windows visible on a terminal.
>    Copy visible parts of child fraem desired glyphs to root frame
>    desired glyphs. Then write to the screen.
>
> 7. After writing to the screen, copy visble parts of root frame
>    current glyphs to current glyphs of children.

Changed this to:

7. After writing to the screen, for all child frames that were
   displayed, update current matrices from desired matrices. There is
   no need to copy glyphs from the root frame since we have them already in
   the desired matrix.

> 8. Add something like =ns-frame-list-z-order= for ttys.
>
> * Don't
>
> 1. Allocate child frame glyphs from a common pool. Reason is clipping.
>    Don't want to change glyph generation in redisplay to take clipping
>    into account. It's not worth the effort.



reply via email to

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