[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Fix rendering issues on window managers without _NET_WM_STATE
From: |
Tom Gillespie |
Subject: |
[PATCH] Fix rendering issues on window managers without _NET_WM_STATE |
Date: |
Fri, 14 May 2021 18:55:42 -0700 |
Hi,
This patch fixes a bug that occurs when running Emacs in a window
manager that does not set _NET_WM_STATE. The patch is simplest fix
that restores expected behavior for window managers that do not set
_NET_WM_STATE, but I have no idea whether there are other issues that
may be occurring.
I'm guessing that there are also likely issues with other logic in the
MapNotify case that uses not_hidden for window managers that does not
set _NET_WM_STATE.
Thus, the more complex solution, which I am not knowledgeable enough
to implement correctly, is to fix x_get_current_wm_state so that it
works on window managers that do not set _NET_WM_STATE.
I am unfamiliar with this section of the code, so my explanation may
be off and a sanity check would be appreciated. Best,
Tom
A description of the bug for the record.
The bug manifests as frames rendering as solid background after
changing desktops on window managers that do not set _NET_WM_STATE.
When changing desktops and returning to a desktop with Emacs frames,
any frame that is not focused will render the whole frame as only the
background color for the current theme.
I have run a git bisect and found that the first bad commit is
483c5e953c12a95382bef4a3b6769a680c32fe86 Fix two GTK3 event handling
issues.
I think that the bug is occurring because 483c5e953c1 changed calls to
SET_FRAME_VISIBLE and friends from being unconditional to being
conditional on not_hidden, which returns incorrect information when
_NET_WM_STATE is not set (I think).
I encountered the bug on fluxbox but the behavior should happen for
any window manager that does not set _NET_WM_STATE.
It should be possible to reproduce the bug using the following steps.
Run a window manager that does not set _NET_WM_STATE, e.g. fluxbox.
In a terminal run the following and when the newly built Emacs
launches alt-tab to the terminal window, and then leave and return to
the desktop with the Emacs frame.
#+begin_src bash
pushd ~/git/emacs
git checkout 483c5e953c12a95382bef4a3b6769a680c32fe86
git clean -dfx && ./autogen.sh && ./configure && make && \
src/emacs -q
#+end_src
0001-Fix-rendering-issues-on-window-managers-without-_NET.patch
Description: Text Data
- [PATCH] Fix rendering issues on window managers without _NET_WM_STATE,
Tom Gillespie <=
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, Omar Polo, 2021/05/15
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, martin rudalics, 2021/05/16
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, Omar Polo, 2021/05/16
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, martin rudalics, 2021/05/16
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, Omar Polo, 2021/05/16
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, Tom Gillespie, 2021/05/17
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, martin rudalics, 2021/05/18
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, Basil L. Contovounesios, 2021/05/18
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, martin rudalics, 2021/05/18
- Re: [PATCH] Fix rendering issues on window managers without _NET_WM_STATE, Basil L. Contovounesios, 2021/05/18