BlackboxWindow *BScreen::getIcon(unsigned int index) {
if (index < iconList.size()) {
BlackboxWindowList::iterator it = iconList.begin();
- for (; index > 0; --index, ++it) ; /* increment to index */
+ while (index-- > 0) // increment to index
+ ++it;
return *it;
}
void BScreen::changeWorkspaceID(unsigned int id) {
if (! current_workspace || id == current_workspace->getID()) return;
- BlackboxWindow *focused = blackbox->getFocusedWindow();
- if (focused && focused->getScreen() == this) {
- assert(focused->isStuck() ||
- focused->getWorkspaceNumber() == current_workspace->getID());
-
- current_workspace->setLastFocusedWindow(focused);
- } else {
- // if no window had focus, no need to store a last focus
- current_workspace->setLastFocusedWindow((BlackboxWindow *) 0);
- }
+ current_workspace->hide();
- // when we switch workspaces, unfocus whatever was focused
- blackbox->setFocusedWindow((BlackboxWindow *) 0);
-
- current_workspace->hideAll();
workspacemenu->setItemSelected(current_workspace->getID() + 2, False);
current_workspace = getWorkspace(id);
+ current_workspace->show();
+
xatom->setValue(getRootWindow(), XAtom::net_current_desktop,
XAtom::cardinal, id);
workspacemenu->setItemSelected(current_workspace->getID() + 2, True);
toolbar->redrawWorkspaceLabel(True);
- current_workspace->showAll();
-
- if (resource.focus_last && current_workspace->getLastFocusedWindow()) {
- XSync(blackbox->getXDisplay(), False);
- current_workspace->getLastFocusedWindow()->setInputFocus();
- }
-
updateNetizenCurrentWorkspace();
}
static
-void string_within(char begin, char end, const char *input, size_t length,
- char *output) {
+size_t string_within(char begin, char end,
+ const char *input, size_t start_at, size_t length,
+ char *output) {
bool parse = False;
size_t index = 0;
-
- for (size_t i = 0; i < length; ++i) {
+ size_t i = start_at;
+ for (; i < length; ++i) {
if (input[i] == begin) {
parse = True;
} else if (input[i] == end) {
output[index] = '\0';
else
output[0] = '\0';
+
+ return i;
}
unsigned int key = 0;
// get the keyword enclosed in []'s
- string_within('[', ']', line, line_length, keyword);
+ size_t pos = string_within('[', ']', line, 0, line_length, keyword);
if (keyword[0] == '\0') { // no keyword, no menu entry
continue;
}
// get the label enclosed in ()'s
- string_within('(', ')', line, line_length, label);
+ pos = string_within('(', ')', line, pos, line_length, label);
// get the command enclosed in {}'s
- string_within('{', '}', line, line_length, command);
+ pos = string_within('{', '}', line, pos, line_length, command);
switch (key) {
case 311: // end