diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2019-04-07 20:40:29 +0300 |
---|---|---|
committer | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2019-04-07 23:13:17 +0300 |
commit | 39ba01da711c07c43abe8aeacedd98990874ba82 (patch) | |
tree | 4a1c8853bd8db754fbf57eac5fff21b7e7342c8a /src/libs/utils/basetreeview.cpp | |
parent | a33386e014db5fdf65903654e9b1ae542ee36c0f (diff) | |
parent | 5273ef2a8aa3c8d268b107edc770b53e1aed7803 (diff) |
Merge remote-tracking branch 'origin/4.9'
Change-Id: I7d1912cd5c4d824fd40d3454c5f1bb796f2c21d8
Diffstat (limited to 'src/libs/utils/basetreeview.cpp')
-rw-r--r-- | src/libs/utils/basetreeview.cpp | 16 |
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 |