no more segging when adding removing windows
This commit is contained in:
parent
725e87a05e
commit
c6699031a0
1 changed files with 11 additions and 11 deletions
|
@ -342,16 +342,11 @@ void screen::updateClientList() {
|
||||||
Window *rootclients = 0;
|
Window *rootclients = 0;
|
||||||
unsigned long num = (unsigned) -1;
|
unsigned long num = (unsigned) -1;
|
||||||
if (! _xatom->getValue(_root, XAtom::net_client_list, XAtom::window, num,
|
if (! _xatom->getValue(_root, XAtom::net_client_list, XAtom::window, num,
|
||||||
&rootclients)) {
|
&rootclients))
|
||||||
while (! _clients.empty()) {
|
num = 0;
|
||||||
delete _clients.front();
|
|
||||||
_clients.erase(_clients.begin());
|
WindowList::iterator it;
|
||||||
}
|
const WindowList::iterator end = _clients.end();
|
||||||
if (rootclients) delete [] rootclients;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
WindowList::iterator it, end = _clients.end();
|
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
|
|
||||||
// insert new clients after the active window
|
// insert new clients after the active window
|
||||||
|
@ -370,12 +365,17 @@ void screen::updateClientList() {
|
||||||
|
|
||||||
// remove clients that no longer exist
|
// remove clients that no longer exist
|
||||||
for (it = _clients.begin(); it != end;) {
|
for (it = _clients.begin(); it != end;) {
|
||||||
WindowList::iterator it2 = it++;
|
WindowList::iterator it2 = it;
|
||||||
|
++it;
|
||||||
|
|
||||||
for (i = 0; i < num; ++i)
|
for (i = 0; i < num; ++i)
|
||||||
if (**it2 == rootclients[i])
|
if (**it2 == rootclients[i])
|
||||||
break;
|
break;
|
||||||
if (i == num) { // no longer exists
|
if (i == num) { // no longer exists
|
||||||
//cout << "Removed window: 0x" << hex << (*it2)->window() << dec << endl;
|
//cout << "Removed window: 0x" << hex << (*it2)->window() << dec << endl;
|
||||||
|
// watch for the active window
|
||||||
|
if (it2 == _active)
|
||||||
|
_active = _clients.end();
|
||||||
delete *it2;
|
delete *it2;
|
||||||
_clients.erase(it2);
|
_clients.erase(it2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue