56 selectionModel->select(selection, QItemSelectionModel::ClearAndSelect); |
56 selectionModel->select(selection, QItemSelectionModel::ClearAndSelect); |
57 }); |
57 }); |
58 connect(this->ui.listView->selectionModel(), &QItemSelectionModel::selectionChanged, |
58 connect(this->ui.listView->selectionModel(), &QItemSelectionModel::selectionChanged, |
59 [&](const QItemSelection& selected, const QItemSelection& deselected) |
59 [&](const QItemSelection& selected, const QItemSelection& deselected) |
60 { |
60 { |
61 QSet<ldraw::Id> selectedIds; |
61 auto resolveIndex = [this](const QModelIndex& index){ return this->model->resolve(index); }; |
62 QSet<ldraw::Id> deselectedIds; |
62 auto resolve = [resolveIndex](const QItemSelection& selection) |
63 for (const QModelIndex& index : selected.indexes()) |
|
64 { |
63 { |
65 selectedIds.insert(this->model->resolve(index)); |
64 return fn::map<QSet<ldraw::Id>>(selection.indexes(), resolveIndex); |
66 } |
65 }; |
67 for (const QModelIndex& index : deselected.indexes()) |
66 this->renderer->handleSelectionChange(resolve(selected), resolve(deselected)); |
68 { |
|
69 deselectedIds.insert(this->model->resolve(index)); |
|
70 } |
|
71 this->renderer->handleSelectionChange(selectedIds, deselectedIds); |
|
72 }); |
67 }); |
73 } |
68 } |
74 |
69 |
75 Document::~Document() |
70 Document::~Document() |
76 { |
71 { |