X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fclient.cc;h=39e47cc4f4e356bec0298888fd21655feeba920f;hb=bb303c74047b7d4f13b54170e1d24fbe5662e9f9;hp=604a2e5d5309c55686fd14677e6f06990e4ea762;hpb=709c747a743be285b97d0ddfcaa28940394840b9;p=chaz%2Fopenbox diff --git a/src/client.cc b/src/client.cc index 604a2e5d..39e47cc4 100644 --- a/src/client.cc +++ b/src/client.cc @@ -72,9 +72,21 @@ Client::Client(int screen, Window window) updateClass(); updateStrut(); + // this makes sure that these windows: + // a) appear on all desktops + // b) don't start iconified + if (_type == Type_Dock || _type == Type_Desktop) { + _desktop = 0xffffffff; + } + // restores iconic state when we restart. // this will override the initial_state if that was set if (_desktop == ICONIC_DESKTOP) _iconic = true; + + // set the desktop hint, to make sure that it always exists, and to reflect + // any changes we've made here + otk::Property::set(_window, otk::Property::atoms.net_wm_desktop, + otk::Property::atoms.cardinal, (unsigned)_desktop); changeState(); } @@ -121,13 +133,9 @@ void Client::getDesktop() // defaults to the current desktop _desktop = openbox->screen(_screen)->desktop(); - if (!otk::Property::get(_window, otk::Property::atoms.net_wm_desktop, - otk::Property::atoms.cardinal, - (long unsigned*)&_desktop)) { - // make sure the hint exists - otk::Property::set(_window, otk::Property::atoms.net_wm_desktop, - otk::Property::atoms.cardinal, (unsigned)_desktop); - } + otk::Property::get(_window, otk::Property::atoms.net_wm_desktop, + otk::Property::atoms.cardinal, + (long unsigned*)&_desktop); }