Missing unmap by minimizing window
There is no unmap of the client window if one minimizes a window by the minimize window frame option. ICCCM:
Reparenting window managers must unmap the client's window when it is in the Iconic state, even if an ancestor window being unmapped renders the client's window unviewable.
https://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html#changing_window_state
MSEgui uses the unmap event combined with the WM_STATE property in order to
minimize the open application windows when the main window has been minimized.
Restoring any of the application windows will restore all previously
minimized windows.
This does not work on Gnome 3 because of the missing client window unmap event, it works on Gnome 2.
Steps to reproduce
Run the attached program in a terminal, minimize the showed black window by the minimize option of the window frame. minimizewindow.c
Test Results:
Gnome 3.20.2
1 21 ReparentNotify
2 28 PropertyNotify
3 22 ConfigureNotify
4 28 PropertyNotify
5 28 PropertyNotify
6 28 PropertyNotify
7 22 ConfigureNotify
8 28 PropertyNotify
9 19 MapNotify
10 12 Expose
11 9 FocusIn
12 11 KeymapNotify
13 28 PropertyNotify
14 28 PropertyNotify
15 10 FocusOut
16 28 PropertyNotify
17 28 PropertyNotify
18 10 FocusOut
19 28 PropertyNotify <<<- no unmap
Mate 1.18.1
1 28 PropertyNotify
2 21 ReparentNotify
3 28 PropertyNotify
4 28 PropertyNotify
5 28 PropertyNotify
6 22 ConfigureNotify
7 28 PropertyNotify
8 28 PropertyNotify
9 22 ConfigureNotify
10 19 MapNotify
11 12 Expose
12 28 PropertyNotify
13 9 FocusIn
14 11 KeymapNotify
15 28 PropertyNotify
16 3 KeyRelease
17 28 PropertyNotify
18 28 PropertyNotify
19 10 FocusOut
20 18 UnmapNotify <<<- unmap
21 28 PropertyNotify
22 28 PropertyNotify
KDE 5
1 28 PropertyNotify
2 21 ReparentNotify
3 28 PropertyNotify
4 19 MapNotify
5 12 Expose
6 28 PropertyNotify
7 28 PropertyNotify
8 28 PropertyNotify
9 28 PropertyNotify
10 28 PropertyNotify
11 28 PropertyNotify
12 28 PropertyNotify
13 28 PropertyNotify
14 28 PropertyNotify
15 28 PropertyNotify
16 9 FocusIn
17 11 KeymapNotify
18 12 Expose
19 12 Expose
20 22 ConfigureNotify
21 28 PropertyNotify
22 28 PropertyNotify
23 28 PropertyNotify
24 28 PropertyNotify
25 10 FocusOut
26 18 UnmapNotify <<<- unmap
27 28 PropertyNotify