GNU bug report logs - #75056
31.0.50; tty-child-frames with server / multiple clients possible hangs

Previous Next

Package: emacs;

Reported by: Len Trigg <lenbok <at> gmail.com>

Date: Tue, 24 Dec 2024 05:44:02 UTC

Severity: normal

Found in version 31.0.50

Full log


View this message in rfc822 format

From: Gerd Möllmann <gerd.moellmann <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: Eli Zaretskii <eliz <at> gnu.org>, lenbok <at> gmail.com, 75056 <at> debbugs.gnu.org
Subject: bug#75056: 31.0.50; tty-child-frames with server / multiple clients possible hangs
Date: Wed, 29 Jan 2025 20:09:49 +0100
martin rudalics <rudalics <at> gmx.at> writes:

>> Back from the drawing board, please find now 3 patches attached.
>
> Works pretty well so far.  I'll do some further experiments with it.

Thanks!

> Next question: What is the special purpose of 'tty_child_pos_param'?
> With a negative value it makes a frame disappear on the left of the
> parent which is not bad per se.  But the manual says:
>
>   A negative integer relates the right frame edge to the right edge of the
>   display or parent frame.
>
> So
>
>   (modify-frame-parameters nil '((left . -5)))
>
> on a GUI child frame moves the right edge of the child frame by 5 pixels
> left of the right edge of the parent.  Inherently, negative positions
> are deprecated on GUIs.

You mean this one (nice copy function I pilfered from the Internetz):

frame.c:
 1451 int
 1452 tty_child_pos_param (struct frame *child, Lisp_Object key,
 1453                      Lisp_Object params, int dflt)
 1454 {
 1455   Lisp_Object val = Fassq (key, params);
 1456   if (CONSP (val))
 1457     {
 1458       val = XCDR (val);
 1459       if (FIXNUMP (val))
 1460         return XFIXNUM (val);
 1461     }
 1462   return dflt;
 1463 }
 1464 

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 :-).

>
> 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.

Whatever is outside of the terminal is clipped.




This bug report was last modified 110 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.