_clients.remove(w);
_clients.push_front(w);
+ _active = _clients.begin();
w->raise();
_cycling = false;
const WindowList::iterator end = _clients.end();
unsigned long i;
- // insert new clients after the active window
for (i = 0; i < num; ++i) {
for (it = _clients.begin(); it != end; ++it)
if (**it == rootclients[i])
break;
if (it == end) { // didn't already exist
if (doAddWindow(rootclients[i])) {
- // cout << "Added window: 0x" << hex << rootclients[i] << dec << endl;
- _clients.insert(insert_point, new XWindow(_epist, this,
- rootclients[i]));
+// cout << "Added window: 0x" << hex << rootclients[i] << dec << endl;
+ if (_stacked_cycling) {
+ // insert new clients after the active window
+ _clients.insert(insert_point, new XWindow(_epist, this,
+ rootclients[i]));
+ } else {
+ // insert new clients at the front of the list
+ _clients.push_front(new XWindow(_epist, this, rootclients[i]));
+ }
}
}
}
_active = it;
- /* if we're not cycling and a window gets focus, add it to the top of the
- * cycle stack.
- */
- if (_stacked_cycling && !_cycling) {
- _clients.remove(*_active);
- _clients.push_front(*_active);
- }
+ if (_active != end) {
+ /* if we're not cycling and a window gets focus, add it to the top of the
+ * cycle stack.
+ */
+ if (_stacked_cycling && !_cycling) {
+ XWindow *win = *_active;
+ _clients.remove(win);
+ _clients.push_front(win);
+ _active = _clients.begin();
+ }
- if (it != end)
- _last_active = it;
+ _last_active = _active;
+ }
/* cout << "Active window is now: ";
if (_active == _clients.end()) cout << "None\n";