Subject: Re: bug#67753: 28.2, 29.1: Making frame invisible always affects frame position parameters

From: [email-masked]
Date: Wed, 10 Jan 2024 12:25:19 +0200

Hi !

Probable bug in void xfns.c → x_real_pos_and_offsets interpreting
_NET_FRAME_EXTENTS set in Application Window Properties by WM.

Current visible Emacs frame parameters:

_NET_FRAME_EXTENTS(CARDINAL) = 5, 5, 29, 5

That means these are Emacs frame border and frame title thicknesses.

The Window Manager MUST set _NET_FRAME_EXTENTS to the extents of the
window's frame. left, right, top and bottom are widths of the respective
borders added by the Window Manager.
-----
Original Reference: [[
https://specifications.freedesktop.org/wm-spec/1.4/ar01s05.html][Application
Window Properties]]

On Tue, 09 Jan 2024 21:58:10 +0200
Eli Zaretskii <[email-masked]> wrote:

> Ping! Ping!  Can we make some progress here, please?
>
> > Cc: [email-masked]
> > Date: Sat, 23 Dec 2023 11:05:22 +0200
> > From: Eli Zaretskii <[email-masked]>
> >
> > Ping!  Po Lu, can we make some progress here?
> >
> > > From: [email-masked]
> > > Date: Sat, 16 Dec 2023 14:53:47 +0200
> > > Cc: Eli Zaretskii <[email-masked]>, [email-masked]
> > >
> > > On Sat, 16 Dec 2023 20:18:07 +0800
> > > Po Lu <[email-masked]> wrote:
> > >
> > > > Eli Zaretskii <[email-masked]> writes:
> > > >
> > > > >> From: [email-masked]
> > > > >> Date: Sun, 10 Dec 2023 19:45:49 +0200
> > > > >>
> > > > >> Always for all frames, position constantly affected by: left
> > > > >> - 5 and top - 29. It seems like a bug, but it could also be
> > > > >> an oversight. Can someone comment please ?
> > > > >>
> > > > >> Thanks !
> > > > >>
> > > > >> xfwm4 4.18.0
> > > > >> xorg-server 21.1.9
> > > > >> Emacs 28.2, 29.1
> > > > >> Archlinux
> > > > >>
> > > > >> How to reproduce:
> > > > >> #################
> > > > >>
> > > > >> $ emacs --fg-daemon -Q
> > > > >> ...
> > > > >> Starting Emacs daemon.
> > > > >> $ emacsclient --eval "(make-frame-on-display \":0\")"
> > > > >> #<frame GNU Emacs at Elitebook 0x558cf8d7d120>
> > > > >> $ emacsclient --eval "(frame-position (nth 0 (frame-list)))"
> > > > >> (185 . 130)
> > > > >> $ emacsclient --eval "(make-frame-invisible (nth 0
> > > > >> (frame-list)) t)" nil
> > > > >> $ emacsclient --eval "(frame-position (nth 0 (frame-list)))"
> > > > >> (180 . 101)
> > > > >>
> > > > >> Moving frame to left-top corner
> > > > >> ###############################
> > > > >>
> > > > >> $ emacsclient --eval "(make-frame-visible (nth 0
> > > > >> (frame-list)))" #<frame GNU Emacs at Elitebook
> > > > >> 0x558cf8d7d120> $ emacsclient --eval "(frame-position (nth 0
> > > > >> 0x558cf8d7d120> (frame-list)))"
> > > > >> (0 . 0)
> > > > >> $ emacsclient --eval "(make-frame-invisible (nth 0
> > > > >> (frame-list)) t)" nil
> > > > >> $ emacsclient --eval "(frame-position (nth 0 (frame-list)))"
> > > > >> (-5 . -29)
> > > > >> $ emacsclient --eval "(make-frame-visible (nth 0
> > > > >> (frame-list)))" #<frame GNU Emacs at Elitebook
> > > > >> 0x558cf8d7d120> $ emacsclient --eval "(frame-position (nth 0
> > > > >> 0x558cf8d7d120> (frame-list)))"
> > > > >> (-5 . 0)
> > > > >> $ emacsclient --eval "(make-frame-invisible (nth 0
> > > > >> (frame-list)) t)" nil
> > > > >> $ emacsclient --eval "(frame-position (nth 0 (frame-list)))"
> > > > >> (-10 . -29)
> > > > >> $ emacsclient --eval "(make-frame-visible (nth 0
> > > > >> (frame-list)))" #<frame GNU Emacs at Elitebook
> > > > >> 0x558cf8d7d120> $ emacsclient --eval "(frame-position (nth 0
> > > > >> 0x558cf8d7d120> (frame-list)))"
> > > > >> (-10 . 0)
> > > > >
> > > > > Po Lu, any comments?
> > > >
> > > > Did the OP mention the toolkit Emacs was built with?
> > >
> > > $ emacsclient --eval "system-configuration-options"
> > > "--sysconfdir=/etc --prefix=/usr --libexecdir=/usr/lib
> > > --localstatedir=/var --with-cairo --with-harfbuzz -
> > > -with-libsystemd --with-modules --with-x-toolkit=gtk3
> > > 'CFLAGS=-march=x86-64 -mtune=generic -O2 - pipe -fno-plt
> > > -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat
> > > -Werror=format-security -fstack-clash-protection -fcf-protection
> > > -g -ffile-prefix-map=/build/emacs/src=/usr/src/debug/emacs -
> > > flto=auto'
> > > 'LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
> > > -flto=auto'"
> >
> >
> >
> >