diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/corelib/itemmodels/qrangemodel_impl.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/corelib/itemmodels/qrangemodel_impl.h b/src/corelib/itemmodels/qrangemodel_impl.h index b1c374e1496..d5bbdb37345 100644 --- a/src/corelib/itemmodels/qrangemodel_impl.h +++ b/src/corelib/itemmodels/qrangemodel_impl.h @@ -1997,8 +1997,18 @@ protected: void deleteRemovedRows(It &&begin, Sentinel &&end) { if constexpr (tree_traits::has_deleteRow) { - for (auto it = begin; it != end; ++it) + for (auto it = begin; it != end; ++it) { + if constexpr (is_mutable_impl) { + decltype(auto) children = this->protocol().childRows(QRangeModelDetails::refTo(*it)); + if (QRangeModelDetails::isValid(children)) { + deleteRemovedRows(QRangeModelDetails::begin(children), + QRangeModelDetails::end(children)); + QRangeModelDetails::refTo(children) = range_type{ }; + } + } + this->protocol().deleteRow(std::move(*it)); + } } } |
