Subject: bug#58627: 29.0.50; `set-frame-position' doesn't set frame position correctly when it is called with negative X or Y

From: Yuwei Tian <[email-masked]>
Date: Wed, 19 Oct 2022 20:23:51 +0800

Sorry. I just built Emacs 28.2 on macOS 12.6. It behaves the same as Emacs 29.
I tested it again on the Mac port version of Emacs 28.2, and the behavior is the
same as described in the manual. Is it an issue with the NS version Emacs only?

On Wed, Oct 19, 2022 at 7:18 PM Po Lu <[email-masked]> wrote:
>
> Yuwei Tian <[email-masked]> writes:
>
> > The manual for the function `set-frame-position' says this:
> >
> > "Negative parameter values position the right edge of the outer
> > frame by -X pixels left from the right edge of the screen (or the
> > parent frame's native rectangle) and the bottom edge by - Y pixels
> > up from the bottom edge of the screen (or the parent frame's native
> > rectangle)."
> >
> > Tested with NS port Emacs 28.2 and 29.0.50 on macOS 12.6.
> >
> > In Emacs 28, when using `set-frame-position' to set the position of
> > the child frame, when X or Y is a negative value, it correctly sets
> > the position of the child frame so that its right edge is X pixels
> > away from the right edge of its parent frame or its bottom edge is
> > Y pixels away from the bottom edge of its parent frame.
> >
> > But in Emacs 29, when X or Y is negative, `set-frame-position` sets
> > the position of child frame's (0, 0) point -X pixels left or -Y pixels
> > up from its parent frame's (0, 0) point.
> >
> > `set-frame-position' has inconsistent behavior in Emacs 28 and 29.
>
> Did you build Emacs 28.2 on Mac OS 12.6 as well?