X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=4015d13aef7efde696af1aa3ab96473364d3b89f;hb=add9e1afd5a4ec7eb104a7cd111429037740a0a0;hp=cb2ca0bf8ed047ad9ad1271bf9ba4485b6a82da4;hpb=45a043425865562d49c86df81a22b4a5545664d5;p=quassel.git diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index cb2ca0bf..4015d13a 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -88,14 +88,13 @@ void BufferView::init() setSortingEnabled(true); sortByColumn(0, Qt::AscendingOrder); - // activated() fails on X11 and Qtopia at least -#if defined Q_WS_QWS || defined Q_WS_X11 - disconnect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(joinChannel(QModelIndex))); - connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(joinChannel(QModelIndex))); -#else +#if defined Q_OS_MACOS || defined Q_OS_WIN // afaik this is better on Mac and Windows disconnect(this, SIGNAL(activated(QModelIndex)), this, SLOT(joinChannel(QModelIndex))); connect(this, SIGNAL(activated(QModelIndex)), SLOT(joinChannel(QModelIndex))); +#else + disconnect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(joinChannel(QModelIndex))); + connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(joinChannel(QModelIndex))); #endif } @@ -129,6 +128,11 @@ void BufferView::setModel(QAbstractItemModel *model) } connect(model, SIGNAL(layoutChanged()), this, SLOT(on_layoutChanged())); + + // Make sure collapsation is correct after setting a model + // This might not be needed here, only in BufferView::setFilteredModel(). If issues arise, just + // move down to setFilteredModel (which calls this function). + setExpandedState(); } @@ -329,7 +333,19 @@ void BufferView::on_configChanged() { Q_ASSERT(model()); - // expand all active networks... collapse inactive ones... unless manually changed + // Expand/collapse as needed + setExpandedState(); + + if (config()) { + // update selection to current one + Client::bufferModel()->synchronizeView(this); + } +} + + +void BufferView::setExpandedState() +{ + // Expand all active networks, collapse inactive ones... unless manually changed QModelIndex networkIdx; NetworkId networkId; for (int row = 0; row < model()->rowCount(); row++) { @@ -343,11 +359,6 @@ void BufferView::on_configChanged() setExpandedState(networkIdx); } - - if (config()) { - // update selection to current one - Client::bufferModel()->synchronizeView(this); - } } @@ -622,7 +633,11 @@ bool BufferViewDelegate::editorEvent(QEvent *event, QAbstractItemModel *model, c if (!value.isValid()) return QStyledItemDelegate::editorEvent(event, model, option, index); +#if QT_VERSION < 0x050000 QStyleOptionViewItemV4 viewOpt(option); +#else + QStyleOptionViewItem viewOpt(option); +#endif initStyleOption(&viewOpt, index); QRect checkRect = viewOpt.widget->style()->subElementRect(QStyle::SE_ItemViewItemCheckIndicator, &viewOpt, viewOpt.widget);