Skip to content

Commit 14c2e41

Browse files
committed
Ctrl-A should select each engine only once in EngineSelectionDialog (fix #832)
1 parent bb86997 commit 14c2e41

File tree

5 files changed

+24
-7
lines changed

5 files changed

+24
-7
lines changed

projects/gui/src/engineconfigproxymodel.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,14 @@ void EngineConfigurationProxyModel::setFilterVariant(const QString& variant)
3333
bool EngineConfigurationProxyModel::filterAcceptsRow(int sourceRow,
3434
const QModelIndex& sourceParent) const
3535
{
36-
QModelIndex variantsIndex = sourceModel()->index(sourceRow, 4, sourceParent);
37-
QStringList variants(sourceModel()->data(variantsIndex).toStringList());
38-
39-
if (!m_filterVariant.isEmpty() && !variants.contains(m_filterVariant))
40-
return false;
36+
if (!m_filterVariant.isEmpty())
37+
{
38+
QModelIndex variantsIndex = sourceModel()->index(sourceRow, 4, sourceParent);
39+
QStringList variants(sourceModel()->data(variantsIndex).toStringList());
40+
41+
if (!variants.contains(m_filterVariant))
42+
return false;
43+
}
4144

4245
return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
4346
}

projects/gui/src/engineselectiondlg.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,19 @@ QItemSelection EngineSelectionDialog::selection() const
4646
return m_model->mapSelectionToSource(ui->m_enginesList->selectionModel()->selection());
4747
}
4848

49+
QModelIndexList EngineSelectionDialog::selectedRows(int column) const
50+
{
51+
const auto sel = selection();
52+
QModelIndexList ret;
53+
for (const QModelIndex &index : sel.indexes())
54+
{
55+
if (index.column() == column)
56+
ret.append(index);
57+
}
58+
59+
return ret;
60+
}
61+
4962
QListView* EngineSelectionDialog::enginesList() const
5063
{
5164
return ui->m_enginesList;

projects/gui/src/engineselectiondlg.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class EngineSelectionDialog : public QDialog
3939
virtual ~EngineSelectionDialog();
4040

4141
QItemSelection selection() const;
42+
QModelIndexList selectedRows(int column = 0) const;
4243
QListView * enginesList() const;
4344

4445
private:

projects/gui/src/newtournamentdialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ void NewTournamentDialog::addEngine()
160160
if (value != QDialog::Accepted)
161161
return;
162162

163-
const QModelIndexList list(dlg.selection().indexes());
163+
const QModelIndexList list(dlg.selectedRows());
164164
for (const QModelIndex& index : list)
165165
{
166166
m_addedEnginesManager->addEngine(m_srcEngineManager->engineAt(index.row()));

projects/gui/ui/engineselectiondlg.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
<enum>QAbstractItemView::ExtendedSelection</enum>
7070
</property>
7171
<property name="selectionBehavior">
72-
<enum>QAbstractItemView::SelectItems</enum>
72+
<enum>QAbstractItemView::SelectRows</enum>
7373
</property>
7474
</widget>
7575
</item>

0 commit comments

Comments
 (0)