X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=d51e0ffc5dd92ca5afbb11dac3c102421914fd32;hp=27bb3e2f4b879bca692e4cf4d1fd29bf88a60880;hb=197cf9c0d5e227dd475124515f6e6005cf87ac8e;hpb=8e6d858eda59a0ab4d8925b2337fb317f2639ab7 diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 27bb3e2f..d51e0ffc 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -526,13 +526,12 @@ void ChannelBufferItem::userModeChanged(IrcUser *ircUser) { } // find the item that needs reparenting - UserCategoryItem *oldCategoryItem = 0; IrcUserItem *ircUserItem = 0; for(int i = 0; i < childCount(); i++) { - UserCategoryItem *catItem = qobject_cast(child(i)); - IrcUserItem *userItem = catItem->findIrcUser(ircUser); + UserCategoryItem *oldCategoryItem = qobject_cast(child(i)); + Q_ASSERT(oldCategoryItem); + IrcUserItem *userItem = oldCategoryItem->findIrcUser(ircUser); if(userItem) { - oldCategoryItem = catItem; ircUserItem = userItem; break; } @@ -542,11 +541,7 @@ void ChannelBufferItem::userModeChanged(IrcUser *ircUser) { qWarning() << "ChannelBufferItem::userModeChanged(IrcUser *): unable to determine old category of" << ircUser; return; } - - Q_ASSERT(oldCategoryItem); - if(ircUserItem->reParent(categoryItem) && oldCategoryItem->childCount() == 0) { - removeChild(oldCategoryItem); - } + ircUserItem->reParent(categoryItem); } /***************************************** @@ -560,6 +555,7 @@ UserCategoryItem::UserCategoryItem(int category, AbstractTreeItem *parent) : PropertyMapItem(QStringList() << "categoryName", parent), _category(category) { + setTreeItemFlags(AbstractTreeItem::DeleteOnLastChildRemoved); setObjectName(parent->data(0, Qt::DisplayRole).toString() + "/" + QString::number(category)); } @@ -696,6 +692,12 @@ QString IrcUserItem::toolTip(int column) const { return QString("

%1

").arg(toolTip.join("
")); } +// void IrcUserItem::ircUserDestroyed() { +// parent()->removeChild(this); +// if(parent()->childCount() == 0) +// parent()->parent()->removeChild(parent()); +// } + /***************************************** * NetworkModel *****************************************/