X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=c34d023e045a8090b33b284c359eff31d934dddc;hp=51f8b0e5d3ccb58ac7e05e9ade4fdc878b1c1d8f;hb=993d4d84b10d89197a100212b4aaa1b8ceca1dbb;hpb=20839758caf3ab9929ef002231260e713a320d4a diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 51f8b0e5..c34d023e 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -26,6 +26,12 @@ #include "uisettings.h" +class CheckRemovalEvent : public QEvent { +public: + CheckRemovalEvent(const QModelIndex &source_index) : QEvent(QEvent::User), index(source_index) {}; + QPersistentModelIndex index; +}; + /***************************************** * The Filter for the Tree View *****************************************/ @@ -40,6 +46,9 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig * setDynamicSortFilter(true); loadColors(); + + connect(this, SIGNAL(_dataChanged(const QModelIndex &, const QModelIndex &)), + this, SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex))); } void BufferViewFilter::loadColors() { @@ -268,6 +277,28 @@ void BufferViewFilter::source_rowsInserted(const QModelIndex &parent, int start, } } +void BufferViewFilter::checkPreviousCurrentForRemoval(const QModelIndex ¤t, const QModelIndex &previous) { + Q_UNUSED(current); + if(previous.isValid()) + qApp->postEvent(this, new CheckRemovalEvent(previous)); +} + +void BufferViewFilter::customEvent(QEvent *event) { + if(event->type() != QEvent::User) + return; + + CheckRemovalEvent *removalEvent = static_cast(event); + checkItemForRemoval(removalEvent->index); + + event->accept(); +} + +void BufferViewFilter::checkItemsForRemoval(const QModelIndex &topLeft, const QModelIndex &bottomRight) { + QModelIndex source_topLeft = mapToSource(topLeft); + QModelIndex source_bottomRight = mapToSource(bottomRight); + emit _dataChanged(source_topLeft, source_bottomRight); +} + // ****************************** // Helper // ******************************