all repos — fluxbox @ 857a6d0a6aaafcb453efaa7307194ea1e1387d58

custom fork of the fluxbox windowmanager

remove _NET_WM_DESKTOP, _NET_WM_STATE, and Gnome hints on client close
markt markt
commit

857a6d0a6aaafcb453efaa7307194ea1e1387d58

parent

135019abf97c7adb236c061d46e3906e51c8a145

4 files changed, 24 insertions(+), 1 deletions(-)

jump to
M ChangeLogChangeLog

@@ -1,5 +1,8 @@

(Format: Year/Month/Day) Changes for 1.0.0: +*07/07/08: + * Clean up state and workspace window properties on client close (Mark) + Ewmh.cc Gnome.cc/hh *07/07/07: * Don't overwrite changes to init file on reconfigure (Mark) Workspace.cc fluxbox.cc/hh
M src/Ewmh.ccsrc/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.ccsrc/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.hhsrc/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: