diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index 07e9028a7..c9c5407f3 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -327,7 +327,7 @@ namespace BlackGui if (this->isEmpty()) { return 0; } const int currentRows = this->rowCount(); - const ContainerType selected(selectedObjects()); + const ContainerType selected(this->selectedObjects()); const CVariant deletedObjsVariant = CVariant::from(selected); int delta = 0; @@ -339,7 +339,7 @@ namespace BlackGui } else { - ContainerType unselectedObjects(container()); + ContainerType unselectedObjects(this->container()); unselectedObjects.removeIfInSubset(selected); this->updateContainerMaybeAsync(unselectedObjects); delta = currentRows - unselectedObjects.size(); diff --git a/src/blackgui/views/viewbasenontemplate.cpp b/src/blackgui/views/viewbasenontemplate.cpp index 074efaa65..e17e56411 100644 --- a/src/blackgui/views/viewbasenontemplate.cpp +++ b/src/blackgui/views/viewbasenontemplate.cpp @@ -466,12 +466,17 @@ namespace BlackGui QModelIndexList CViewBaseNonTemplate::selectedRows() const { - return this->selectionModel()->selectedRows(); + // make sure this is ordered by row and wee keep the same order as in unselectedRows + // if we'd know for sure the indexes are always sorted we can remove the sorting here + // Qt docu selectedIndexes: Returns a list of all selected model item indexes. The list contains no duplicates, and is not sorted. + QModelIndexList indexes = this->selectionModel()->selectedRows(); + qSort(indexes); + return indexes; } QModelIndexList CViewBaseNonTemplate::unselectedRows() const { - QModelIndexList selected = this->selectedRows(); + const QModelIndexList selected = this->selectedRows(); QModelIndexList unselected; const int rows = this->rowCount(); for (int r = 0; r < rows; r++)