From: Po Lu via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Christian Schmidt <cs@aibiot.de>
Cc: Stefan Kangas <stefankangas@gmail.com>, 63511@debbugs.gnu.org
Subject: bug#63511: [Patch] Fix for hidden window bug
Date: Tue, 29 Aug 2023 09:22:44 +0800 [thread overview]
Message-ID: <874jkiwskb.fsf@yahoo.com> (raw)
In-Reply-To: <d5ee2ac6-d7bf-604f-c7d0-487f34ec3038@aibiot.de> (Christian Schmidt's message of "Mon, 28 Aug 2023 09:56:06 +0200")
Christian Schmidt <cs@aibiot.de> writes:
> prop->type == (Atom) 0 IMHO refers to an empty list, which is valid.
I'm sorry, but that contradicts the EWMH, which prescribes _NET_WM_STATE
as an array of Atom. prop->type is only None (which is _not_ a type)
when the property is deleted.
> I would be surprised if this was a bug in E, given emacs is the only
> program I know of that exhibits this issue. I have discussed this
> issue extensively with raster, the main author of E, and we have come
> to the same conclusion: when _NET_WM_STATE_HIDDEN the is the only
> active/set property, and then is removed/unset (sorry if my
_NET_WM_STATE_HIDDEN is not a property that may be ``set'' or ``unset''
(mind that this parlance is not X terminology), it's an element in a
property named _NET_WM_STATE. Each window property is in fact an array
of items whose width in bits is the format of the property.
That property becomes empty when _NET_WM_STATE_HIDDEN is the only
element of that array and is subsequently removed; when that transpires,
GetWindowProperty still returns an empty array of the correct type, as
the property is still set.
The only two situations in which GetWindowProperty will return a type of
None is when Enlightenment sets the property type to None or deletes the
property in its entirety, both of which violate the EWMH.
> terminology is wrong, my days of X programming have been 20+ years
> ago, and these are corners I have never touched before), there is no
> code path in emacs that can handle this case. Also, the request does
> not hit the window manager, but it is X that replies. As such, the bug
> would lie within X11.
When a window property is changed to an empty value, its type remains
intact. Enlightenment is not merely changing the property in this case,
but also deleting it, which contravenes the EWMH.
> What happens is that the array of atoms is empty, and thus the list is
> (Atom) 0. Currently this is interpreted as "keep the current state",
> and not to re-evaluate the (now empty) list of atoms to realize that
> _NET_WM_STATE_HIDDEN is not set.
An empty window property is empty -- its type remains intact, regardless
of the number of items within. There's a distinct contrast between an
empty window property and a window property that has abruptly vanished.
> If that would be an issue, given there is no "unhidden" property that
> could be set, how should the WM handle this? E sets
> _NET_WM_STATE_HIDDEN when the window is hidden, and removes it when no
> longer hidden.
The window manager should empty the property instead of deleting it,
which is more or less proscribed by convention. The removal of a WM
property from a client toplevel window should always coincide with a
corresponding change to _NET_SUPPORTED on the root window.
prev parent reply other threads:[~2023-08-29 1:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-14 19:13 bug#63511: [Patch] Fix for hidden window bug Christian Schmidt
2023-08-23 23:24 ` Stefan Kangas
2023-08-24 0:12 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-28 7:56 ` Christian Schmidt
2023-08-29 1:22 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874jkiwskb.fsf@yahoo.com \
--to=bug-gnu-emacs@gnu.org \
--cc=63511@debbugs.gnu.org \
--cc=cs@aibiot.de \
--cc=luangruo@yahoo.com \
--cc=stefankangas@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.