From 08c505bd5ee36baca9ca33ee7d1adfcb01b7ab59 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Wed, 18 Jun 2008 17:32:39 +0200 Subject: [PATCH] fixing BR #145 (moving items in custom view off by one) --- src/uisupport/bufferviewfilter.cpp | 16 ++++++++++++++-- src/uisupport/bufferviewfilter.h | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 0adf8ebb..04e31567 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -39,7 +39,8 @@ public: *****************************************/ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig *config) : QSortFilterProxyModel(model), - _config(0) + _config(0), + _sortOrder(Qt::AscendingOrder) { setConfig(config); setSourceModel(model); @@ -125,11 +126,17 @@ bool BufferViewFilter::dropMimeData(const QMimeData *data, Qt::DropAction action if(droppedNetworkId == networkId) { if(row < 0) row = 0; + if(row < rowCount(parent)) { BufferId beforeBufferId = parent.child(row, 0).data(NetworkModel::BufferIdRole).value(); pos = config()->bufferList().indexOf(beforeBufferId); + if(_sortOrder == Qt::DescendingOrder) + pos++; } else { - pos = config()->bufferList().count(); + if(_sortOrder == Qt::AscendingOrder) + pos = config()->bufferList().count(); + else + pos = 0; } if(config()->bufferList().contains(bufferId)) { @@ -147,6 +154,11 @@ bool BufferViewFilter::dropMimeData(const QMimeData *data, Qt::DropAction action return true; } +void BufferViewFilter::sort(int column, Qt::SortOrder order) { + _sortOrder = order; + QSortFilterProxyModel::sort(column, order); +} + void BufferViewFilter::addBuffer(const BufferId &bufferId) const { if(!config() || config()->bufferList().contains(bufferId)) return; diff --git a/src/uisupport/bufferviewfilter.h b/src/uisupport/bufferviewfilter.h index 128b3e83..56fa974a 100644 --- a/src/uisupport/bufferviewfilter.h +++ b/src/uisupport/bufferviewfilter.h @@ -61,6 +61,8 @@ public: void setConfig(BufferViewConfig *config); inline BufferViewConfig *config() const { return _config; } + virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); + public slots: void checkPreviousCurrentForRemoval(const QModelIndex ¤t, const QModelIndex &previous); void checkItemForRemoval(const QModelIndex &index) { checkItemsForRemoval(index, index); } @@ -81,6 +83,7 @@ private slots: private: QPointer _config; + Qt::SortOrder _sortOrder; QColor _FgColorInactiveActivity; QColor _FgColorNoActivity; -- 2.20.1