From: Dana Jansens Date: Sat, 4 Jan 2003 02:03:30 +0000 (+0000) Subject: set desktop names on startup X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=8d5bd298540b98eb10072c5ee281c64f221ce9a6;p=chaz%2Fopenbox set desktop names on startup --- diff --git a/src/client.cc b/src/client.cc index 15f44349..d150cf8b 100644 --- a/src/client.cc +++ b/src/client.cc @@ -539,7 +539,8 @@ void OBClient::setWMState(long state) 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) diff --git a/src/rootwindow.cc b/src/rootwindow.cc index 364f6144..771cc799 100644 --- a/src/rootwindow.cc +++ b/src/rootwindow.cc @@ -38,9 +38,8 @@ void OBRootWindow::updateDesktopNames() otk::OBProperty::net_desktop_names, otk::OBProperty::utf8, &num, &_names)) _names.clear(); - for (int i = 0; i < numWorkspaces; ++i) - if (i <= static_cast(_names.size())) - _names.push_back("Unnamed workspace"); + while ((signed)_names.size() < numWorkspaces) + _names.push_back("Unnamed"); } @@ -74,10 +73,18 @@ void OBRootWindow::clientMessageHandler(const XClientMessageEvent &e) //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) { const int numWorkspaces = 1; // XXX: change this to the number of workspaces! diff --git a/src/rootwindow.hh b/src/rootwindow.hh index 180f239c..5ff386e1 100644 --- a/src/rootwindow.hh +++ b/src/rootwindow.hh @@ -53,6 +53,9 @@ public: //! 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) diff --git a/src/screen.cc b/src/screen.cc index c121c20f..fcbe2ea6 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -93,7 +93,7 @@ OBScreen::OBScreen(int screen) // 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 @@ OBScreen::OBScreen(int screen) otk::OBProperty::Atom_Cardinal, viewport, 2); + // Set the net_desktop_names property + std::vector 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;