remove _NET_WM_DESKTOP, _NET_WM_STATE, and Gnome hints on client close
This commit is contained in:
parent
135019abf9
commit
857a6d0a6a
4 changed files with 24 additions and 1 deletions
|
@ -1,5 +1,8 @@
|
||||||
(Format: Year/Month/Day)
|
(Format: Year/Month/Day)
|
||||||
Changes for 1.0.0:
|
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:
|
*07/07/07:
|
||||||
* Don't overwrite changes to init file on reconfigure (Mark)
|
* Don't overwrite changes to init file on reconfigure (Mark)
|
||||||
Workspace.cc fluxbox.cc/hh
|
Workspace.cc fluxbox.cc/hh
|
||||||
|
|
|
@ -382,8 +382,17 @@ void Ewmh::updateFocusedWindow(BScreen &screen, Window win) {
|
||||||
(unsigned char *)&win, 1);
|
(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){
|
void Ewmh::updateClientClose(WinClient &winclient){
|
||||||
updateClientList(winclient.screen());
|
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) {
|
void Ewmh::updateClientList(BScreen &screen) {
|
||||||
|
|
11
src/Gnome.cc
11
src/Gnome.cc
|
@ -215,6 +215,17 @@ void Gnome::updateClientList(BScreen &screen) {
|
||||||
delete[] wl;
|
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) {
|
void Gnome::updateWorkspaceNames(BScreen &screen) {
|
||||||
|
|
||||||
size_t number_of_desks = screen.getWorkspaceNames().size();
|
size_t number_of_desks = screen.getWorkspaceNames().size();
|
||||||
|
|
|
@ -72,6 +72,7 @@ public:
|
||||||
void updateWorkarea(BScreen &) { }
|
void updateWorkarea(BScreen &) { }
|
||||||
void updateFocusedWindow(BScreen &, Window) { }
|
void updateFocusedWindow(BScreen &, Window) { }
|
||||||
void updateClientList(BScreen &screen);
|
void updateClientList(BScreen &screen);
|
||||||
|
void updateClientClose(WinClient &winclient);
|
||||||
void updateWorkspaceNames(BScreen &screen);
|
void updateWorkspaceNames(BScreen &screen);
|
||||||
void updateCurrentWorkspace(BScreen &screen);
|
void updateCurrentWorkspace(BScreen &screen);
|
||||||
void updateWorkspaceCount(BScreen &screen);
|
void updateWorkspaceCount(BScreen &screen);
|
||||||
|
@ -85,7 +86,6 @@ public:
|
||||||
|
|
||||||
// ignore these ones
|
// ignore these ones
|
||||||
void updateFrameClose(FluxboxWindow &win) {}
|
void updateFrameClose(FluxboxWindow &win) {}
|
||||||
void updateClientClose(WinClient &winclient) {}
|
|
||||||
bool propertyNotify(WinClient &winclient, Atom the_property);
|
bool propertyNotify(WinClient &winclient, Atom the_property);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
Loading…
Reference in a new issue