Subject: bug#75056: 31.0.50; tty-child-frames with server / multiple clients possible hangs

From: Gerd Möllmann <[email-masked]>
Date: Thu, 30 Jan 2025 09:39:59 +0100

martin rudalics <[email-masked]> writes:

>> It has no inherent special purpose, and probably has a bug as you
>> describe. Like perhaps the one for the size. Both are an attempt to
>> mimic what is done for window-system frames, while being depressed that
>> that cannot be easily reused, and being too lazy to rewrite the whole
>> frame parameter department 🙂.
>
> The position handling is inherently broken on window-system frames too
> because we translate negative values to positive ones after the window
> manager has processed them.  But I'd like to handle values like (+ 10)
> to make child frame dragging work so I'll implement that next.

👍

>
>>> Also when I want to move a child frame to the left of its parent via
>>>
>>>    (modify-frame-parameters nil '((left . 0)))
>>>
>>> the left border disappears.  Is that intended?
>>
>> If I understand that correctly, then probably yes. The borders are drawn
>> around the frame, so the left border is at left - 1, the right at left +
>> width + 1, and so on.
>
> I see.
>
>> Whatever is outside of the terminal is clipped.
>
> Didn't you once mention that borders can be displayed more nicely?  I
> obviously forgot how to do that.  In either case I'd like to resize
> child frames by dragging their borders with the mouse.
>

Yes, now even documented:

NEWS:
   50 +++
   51 ** 'standard-display-table' now has more extra slots.
   52 'standard-display-table' has been extended to allow specifying glyphs
   53 that are used for borders around child frames and menu separators on TTY
   54 frames.
   55 
   56 Call the function 'standard-display-unicode-special-glyphs' to set up
   57 the 'standard-display-table's extra slots with Unicode characters.
   58 Please see the documentation of that function to see which slots of the
   59 display table it changes.

_Much_ nicer than the default IMO. I still wished Emacs would do that by
default, but here were objections.