aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/basetreeview.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2019-04-07 20:40:29 +0300
committerOrgad Shaneh <orgad.shaneh@audiocodes.com>2019-04-07 23:13:17 +0300
commit39ba01da711c07c43abe8aeacedd98990874ba82 (patch)
tree4a1c8853bd8db754fbf57eac5fff21b7e7342c8a /src/libs/utils/basetreeview.cpp
parenta33386e014db5fdf65903654e9b1ae542ee36c0f (diff)
parent5273ef2a8aa3c8d268b107edc770b53e1aed7803 (diff)
Merge remote-tracking branch 'origin/4.9'
Diffstat (limited to 'src/libs/utils/basetreeview.cpp')
-rw-r--r--src/libs/utils/basetreeview.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/libs/utils/basetreeview.cpp b/src/libs/utils/basetreeview.cpp
index 254f2e91314..352b17bb4b9 100644
--- a/src/libs/utils/basetreeview.cpp
+++ b/src/libs/utils/basetreeview.cpp
@@ -28,6 +28,7 @@
#include "progressindicator.h"
#include "treemodel.h"
+#include <utils/algorithm.h>
#include <utils/qtcassert.h>
#include <QDebug>
@@ -39,6 +40,7 @@
#include <QMenu>
#include <QMouseEvent>
#include <QSettings>
+#include <QSortFilterProxyModel>
#include <QTimer>
namespace Utils {
@@ -596,11 +598,23 @@ ItemViewEvent::ItemViewEvent(QEvent *ev, QAbstractItemView *view)
m_selectedRows.append(current);
}
}
+
+ auto fixIndex = [view](QModelIndex idx) {
+ QAbstractItemModel *model = view->model();
+ while (auto proxy = qobject_cast<QSortFilterProxyModel *>(model)) {
+ idx = proxy->mapToSource(idx);
+ model = proxy->sourceModel();
+ }
+ return idx;
+ };
+
+ m_sourceModelIndex = fixIndex(m_index);
+ m_selectedRows = Utils::transform(m_selectedRows, fixIndex);
}
QModelIndexList ItemViewEvent::currentOrSelectedRows() const
{
- return m_selectedRows.isEmpty() ? QModelIndexList() << m_index : m_selectedRows;
+ return m_selectedRows.isEmpty() ? QModelIndexList() << m_sourceModelIndex : m_selectedRows;
}
} // namespace Utils