remove _NET_WM_DESKTOP, _NET_WM_STATE, and Gnome hints on client close
markt markt
4 files changed,
24 insertions(+),
1 deletions(-)
M
src/Ewmh.cc
→
src/Ewmh.cc
@@ -382,8 +382,17 @@ PropModeReplace,
(unsigned char *)&win, 1); } +// EWMH says, regarding _NET_WM_STATE and _NET_WM_DESKTOP +// The Window Manager should remove the property whenever a window is withdrawn +// but it should leave the property in place when it is shutting down void Ewmh::updateClientClose(WinClient &winclient){ updateClientList(winclient.screen()); + if (!winclient.screen().isShuttingdown()) { + XDeleteProperty(FbTk::App::instance()->display(), winclient.window(), + m_net_wm_state); + XDeleteProperty(FbTk::App::instance()->display(), winclient.window(), + m_net_wm_desktop); + } } void Ewmh::updateClientList(BScreen &screen) {
M
src/Gnome.cc
→
src/Gnome.cc
@@ -215,6 +215,17 @@
delete[] wl; } +void Gnome::updateClientClose(WinClient &client) { + if (client.screen().isShuttingdown()) { + XDeleteProperty(FbTk::App::instance()->display(), client.window(), + m_gnome_wm_win_workspace); + XDeleteProperty(FbTk::App::instance()->display(), client.window(), + m_gnome_wm_win_layer); + XDeleteProperty(FbTk::App::instance()->display(), client.window(), + m_gnome_wm_win_state); + } +} + void Gnome::updateWorkspaceNames(BScreen &screen) { size_t number_of_desks = screen.getWorkspaceNames().size();
M
src/Gnome.hh
→
src/Gnome.hh
@@ -72,6 +72,7 @@
void updateWorkarea(BScreen &) { } void updateFocusedWindow(BScreen &, Window) { } void updateClientList(BScreen &screen); + void updateClientClose(WinClient &winclient); void updateWorkspaceNames(BScreen &screen); void updateCurrentWorkspace(BScreen &screen); void updateWorkspaceCount(BScreen &screen);@@ -85,7 +86,6 @@ bool checkClientMessage(const XClientMessageEvent &ce, BScreen * screen, WinClient * const winclient);
// ignore these ones void updateFrameClose(FluxboxWindow &win) {} - void updateClientClose(WinClient &winclient) {} bool propertyNotify(WinClient &winclient, Atom the_property); private: