From 90dbcb271c5e6d7ca73c19a519b93885b833db0a Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 14 Jul 2002 20:54:03 +0000 Subject: properly handle workspace names, and changes to them. --- src/Workspace.cc | 60 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 28 deletions(-) (limited to 'src/Workspace.cc') diff --git a/src/Workspace.cc b/src/Workspace.cc index 65f323f1..88280a1d 100644 --- a/src/Workspace.cc +++ b/src/Workspace.cc @@ -70,8 +70,7 @@ Workspace::Workspace(BScreen *scrn, unsigned int i) { lastfocus = (BlackboxWindow *) 0; - setName(""); - fprintf(stderr, "WORKSPACE NAME: %s\n", name.c_str()); + readName(); } @@ -420,43 +419,48 @@ void Workspace::setCurrent(void) { } -void Workspace::setName(const string& new_name) { - if (! new_name.empty()) { - name = new_name; +void Workspace::readName(void) { + XAtom::StringVect namesList; + unsigned long numnames = id + 1; + + // attempt to get from the _NET_WM_DESKTOP_NAMES property + if (xatom->getValue(screen->getRootWindow(), XAtom::net_desktop_names, + XAtom::utf8, numnames, namesList) && + namesList.size() > id) { + name = namesList[id]; + + clientmenu->setLabel(name); + clientmenu->update(); } else { - // attempt to get from the _NET_WM_DESKTOP_NAMES property - XAtom::StringVect namesList; - unsigned long numnames = id + 1; - if (xatom->getValue(screen->getRootWindow(), XAtom::net_desktop_names, - XAtom::utf8, numnames, namesList) && - namesList.size() > id) { - name = namesList[id]; - } else { - string tmp =i18n(WorkspaceSet, WorkspaceDefaultNameFormat, - "Workspace %d"); - assert(tmp.length() < 32); - char default_name[32]; - sprintf(default_name, tmp.c_str(), id + 1); - name = default_name; - } + /* + Use a default name. This doesn't actually change the class. That will + happen after the setName changes the root property, and that change + makes its way back to this function. + */ + string tmp =i18n(WorkspaceSet, WorkspaceDefaultNameFormat, + "Workspace %d"); + assert(tmp.length() < 32); + char default_name[32]; + sprintf(default_name, tmp.c_str(), id + 1); + + setName(default_name); // save this into the _NET_WM_DESKTOP_NAMES property } - - // reset the property with the new name +} + + +void Workspace::setName(const string& new_name) { + // set the _NET_WM_DESKTOP_NAMES property with the new name XAtom::StringVect namesList; unsigned long numnames = (unsigned) -1; if (xatom->getValue(screen->getRootWindow(), XAtom::net_desktop_names, XAtom::utf8, numnames, namesList) && namesList.size() > id) - namesList[id] = name; + namesList[id] = new_name; else - namesList.push_back(name); + namesList.push_back(new_name); xatom->setValue(screen->getRootWindow(), XAtom::net_desktop_names, XAtom::utf8, namesList); - - clientmenu->setLabel(name); - clientmenu->update(); - screen->saveWorkspaceNames(); } -- cgit v1.2.3