}
saveWorkspaceNames();
- updateDesktopNames();
updateNetizenWorkspaceCount();
workspacemenu->insert(i18n(IconSet, IconIcons, "Icons"), iconmenu);
workspacemenu->setItemSelected(2, True);
- removeWorkspaceNames(); // do not need them any longer
-
toolbar = new Toolbar(this);
slit = new Slit(this);
}
-void BScreen::removeWorkspaceNames(void) {
- workspaceNames.clear();
-}
-
void BScreen::saveSloppyFocus(bool s) {
resource.sloppy_focus = s;
void BScreen::saveWorkspaceNames() {
+ XAtom::StringVect nameList;
+ unsigned long numnames = (unsigned) -1;
string names;
- WorkspaceList::iterator it = workspacesList.begin();
- const WorkspaceList::iterator last = workspacesList.end() - 1;
- const WorkspaceList::iterator end = workspacesList.end();
- for (; it != end; ++it) {
- names += (*it)->getName();
- if (it != last)
- names += ',';
+
+ if (numnames > 0 &&
+ xatom->getValue(getRootWindow(), XAtom::net_desktop_names, XAtom::utf8,
+ numnames, nameList)) {
+ for (unsigned int i = 0; i < nameList.size(); ++i) {
+ if (i > 0) names += ",";
+ names += nameList[i];
+ }
}
config->setValue(screenstr + "workspaceNames", names);
}
else
resource.col_direction = TopBottom;
+ XAtom::StringVect workspaceNames;
if (config->getValue(screenstr + "workspaceNames", s)) {
string::const_iterator it = s.begin(), end = s.end();
while(1) {
string::const_iterator tmp = it; // current string.begin()
it = std::find(tmp, end, ','); // look for comma between tmp and end
- addWorkspaceName(string(tmp, it)); // s[tmp:it]
+ workspaceNames.push_back(string(tmp, it)); // s[tmp:it]
if (it == end)
break;
++it;
}
}
+ xatom->setValue(getRootWindow(), XAtom::net_desktop_names, XAtom::utf8,
+ workspaceNames);
resource.sloppy_focus = true;
resource.auto_raise = false;
Workspace *wkspc = new Workspace(this, workspacesList.size());
workspacesList.push_back(wkspc);
saveWorkspaces(getWorkspaceCount());
- saveWorkspaceNames();
workspacemenu->insert(wkspc->getName(), wkspc->getMenu(),
wkspc->getID() + 2);
toolbar->reconfigure();
- updateDesktopNames();
updateNetizenWorkspaceCount();
return workspacesList.size();
delete wkspc;
saveWorkspaces(getWorkspaceCount());
- saveWorkspaceNames();
- updateDesktopNames();
toolbar->reconfigure();
// desktop windows cant do anything, so we remove all the normal window
// stuff from them, they are only kept around so that we can keep them on
// the bottom of the z-order
- addDesktopWindow(win->getClientWindow());
win->restore(True);
+ addDesktopWindow(win->getClientWindow());
delete win;
return;
}
void BScreen::lowerDesktops(void) {
+ if (desktopWindowList.empty()) return;
+
XLowerWindow(blackbox->getXDisplay(), desktopWindowList[0]);
if (desktopWindowList.size() > 1)
XRestackWindows(blackbox->getXDisplay(), &desktopWindowList[0],
}
-void BScreen::addWorkspaceName(const string& name) {
- workspaceNames.push_back(name);
- updateDesktopNames();
-}
-
-
-void BScreen::updateDesktopNames(){
- XAtom::StringVect names;
-
- WorkspaceList::iterator it = workspacesList.begin();
- const WorkspaceList::iterator end = workspacesList.end();
- for (; it != end; ++it)
- names.push_back((*it)->getName());
-
- xatom->setValue(getRootWindow(), XAtom::net_desktop_names,
- XAtom::utf8, names);
-}
-
-
-/*
- * I would love to kill this function and the accompanying workspaceNames
- * list. However, we have a chicken and egg situation. The names are read
- * in during load_rc() which happens before the workspaces are created.
- * The current solution is to read the names into a list, then use the list
- * later for constructing the workspaces. It is only used during initial
- * BScreen creation.
- */
-const string BScreen::getNameOfWorkspace(unsigned int id) {
- if (id < workspaceNames.size())
- return workspaceNames[id];
- return string("");
-}
-
-
void BScreen::reassociateWindow(BlackboxWindow *w, unsigned int wkspc_id,
bool ignore_sticky) {
if (! w) return;
if (model == SloppyFocus) {
saveSloppyFocus(True);
} else {
+ // we're cheating here to save writing the config file 3 times
+ resource.auto_raise = False;
+ resource.click_raise = False;
saveSloppyFocus(False);
- saveAutoRaise(False);
- saveClickRaise(False);
}
updateFocusModel();