X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fnetworkssettingspage.cpp;h=ff582612979163a0244225bca459710b1bcf0aaa;hp=4fb60da25bef3031d731716d7c3a8b7c3d49ee52;hb=5b083e1f67c77ceb7d1d134e976cd6081b70bf12;hpb=5b560ec1a01349562ac58051ca7e7fa899d4b994 diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index 4fb60da2..ff582612 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -178,7 +178,7 @@ void NetworksSettingsPage::setWidgetStates() { } void NetworksSettingsPage::setItemState(NetworkId id, QListWidgetItem *item) { - if(!item) item = networkItem(id); + if(!item && !(item = networkItem(id))) return; const Network *net = Client::network(id); if(!net || net->isInitialized()) item->setFlags(item->flags() | Qt::ItemIsEnabled); else item->setFlags(item->flags() & ~Qt::ItemIsEnabled); @@ -190,19 +190,22 @@ void NetworksSettingsPage::setItemState(NetworkId id, QListWidgetItem *item) { item->setIcon(disconnectedIcon); } if(net) { + bool select = false; // check if we already have another net of this name in the list, and replace it QList items = ui.networkList->findItems(net->networkName(), Qt::MatchExactly); if(items.count()) { foreach(QListWidgetItem *i, items) { NetworkId oldid = i->data(Qt::UserRole).value(); if(oldid > 0) continue; // only locally created nets should be replaced - if(oldid == currentId) item->setSelected(true); - delete ui.networkList->takeItem(ui.networkList->row(i)); + if(oldid == currentId) select = true; + int row = ui.networkList->row(i); + if(row >= 0) delete ui.networkList->takeItem(row); networkInfos.remove(oldid); break; } } item->setText(net->networkName()); + if(select) item->setSelected(true); } }