set desktop names on startup
Dana Jansens danakj@orodu.net
4 files changed,
22 insertions(+),
6 deletions(-)
M
src/client.cc
→
src/client.cc
@@ -539,7 +539,8 @@
void OBClient::setDesktop(long target) { - assert(target >= 0); + printf("Setting desktop %ld\n", target); + assert(target >= 0 || target == (signed)0xffffffff); //assert(target == 0xffffffff || target < MAX); // XXX: move the window to the new desktop (and set root property)
M
src/rootwindow.cc
→
src/rootwindow.cc
@@ -38,9 +38,8 @@ if (!property->get(_info->rootWindow(),
otk::OBProperty::net_desktop_names, otk::OBProperty::utf8, &num, &_names)) _names.clear(); - for (int i = 0; i < numWorkspaces; ++i) - if (i <= static_cast<int>(_names.size())) - _names.push_back("Unnamed workspace"); + while ((signed)_names.size() < numWorkspaces) + _names.push_back("Unnamed"); }@@ -74,9 +73,17 @@ if (e.format != 32) return;
//const otk::OBProperty *property = Openbox::instance->property(); - // XXX: so many client messages to handle here! + // XXX: so many client messages to handle here! ..or not.. they go to clients } + +void OBRootWindow::setDesktopNames(const otk::OBProperty::StringVect &names) +{ + _names = names; + const otk::OBProperty *property = Openbox::instance->property(); + property->set(_info->rootWindow(), otk::OBProperty::net_desktop_names, + otk::OBProperty::utf8, names); +} void OBRootWindow::setDesktopName(int i, const std::string &name) {
M
src/rootwindow.hh
→
src/rootwindow.hh
@@ -53,6 +53,9 @@ OBRootWindow(int screen);
//! Destroys the OBRootWindow object virtual ~OBRootWindow(); + //! Sets the name of all desktops + void setDesktopNames(const otk::OBProperty::StringVect &names); + //! Sets the name of a desktop /*! @param i The index of the desktop to set the name for (base 0)
M
src/screen.cc
→
src/screen.cc
@@ -93,7 +93,7 @@
// set up notification of netwm support setSupportedAtoms(); - // Set the netwm atoms for geomtery and viewport + // Set the netwm properties for geometry and viewport unsigned long geometry[] = { _info->width(), _info->height() }; Openbox::instance->property()->set(_info->rootWindow(),@@ -106,6 +106,11 @@ otk::OBProperty::net_desktop_viewport,
otk::OBProperty::Atom_Cardinal, viewport, 2); + // Set the net_desktop_names property + std::vector<std::string> names; + python_get_stringlist("desktop_names", &names); + _root.setDesktopNames(names); + // create the window which gets focus when no clients get it XSetWindowAttributes attr; attr.override_redirect = true;