[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: "Final" version of tty child frames
From: |
martin rudalics |
Subject: |
Re: "Final" version of tty child frames |
Date: |
Fri, 17 Jan 2025 10:08:12 +0100 |
User-agent: |
Mozilla Thunderbird |
>> + - There exists at least one visible child frame whose root is the
>> + same frame as the root of W's frame. Such a frame could overlap
>> + the position of point in W in which case we (1) don't want to
>> + show the cursor and (2) make sure that if point is not overlapped
>> + by that frame, the cursor is shown. */
>
> If one wants, one could sharpen the second point a bit. Glyphs from
> child frames can only ever appear if
>
> - in a current matrix
>
> matrix == w->current_matrix
>
> - if w->frame is a root frame (NILP (w->frame->parent_frame)
> IOW, the current matrix of child frames will never show this
> phenomenon.
>
> struct frame *f = XFRAME (w->frame);
> is_tty_root_frame (f);
>
> - w is the selected window
>
> - that root frame has visible child frames. Something like
>
> Lisp_Object z_order = frames_in_reverse_z_order (f, true);
> bool has_visible_child = CONSP (XCDR (z_order);
>
> Which might be easier to understand than the below.
I am a bit lost with this. Just note one aspect which you can test with
my example file: With C-l and M-l you get two child frames overlapping
each other. Now in the child frame beneath move the cursor in the area
right of the child frame above to the left so that it is hidden and back
again until it is visible. Here I have two child frames and no root
frame involved. Does your "sharpened second point" handle that?
>> + bool is_tty_selected = false;
>> + struct frame *f = WINDOW_XFRAME (w);
>> + struct frame *r = root_frame (WINDOW_XFRAME (w));
>> +
>> + Lisp_Object tail, other;
>> +
>> + if (w == XWINDOW (selected_window))
>> + FOR_EACH_FRAME (tail, other)
>> + {
>> + struct frame *o = XFRAME (other);
>> +
>> + if (FRAME_LIVE_P (o) && is_tty_child_frame (o)
>> + && FRAME_VISIBLE_P (o) && root_frame (o) == r)
This root_frame (o) == r check is meant to handle the case of two
overlapping child frames too.
>> + {
>> + is_tty_selected = true;
>> + break;
>> + }
>> + }
>> +
martin
- Re: "Final" version of tty child frames, (continued)
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/16
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/16
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/16
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/16
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/16
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/16
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/16
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/16
- Re: "Final" version of tty child frames, martin rudalics, 2025/01/16
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/16
- Re: "Final" version of tty child frames,
martin rudalics <=
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/17
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/17
- Re: "Final" version of tty child frames, martin rudalics, 2025/01/17
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/17
- Re: "Final" version of tty child frames, martin rudalics, 2025/01/18
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/18
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/16
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/16
- Re: "Final" version of tty child frames, Eli Zaretskii, 2025/01/16
- Re: "Final" version of tty child frames, Gerd Möllmann, 2025/01/16