Bug #3514 ยป w-batch-edit-proxy-model-fix-broken-indexes.patch
| src/Wt/WBatchEditProxyModel.C | ||
|---|---|---|
|   WModelIndex sourceIndex = mapToSource(index); | ||
|   if (sourceIndex.isValid()) | ||
|     return sourceModel()->flags(index); | ||
|     return sourceModel()->flags(sourceIndex); | ||
|   else { | ||
|     std::map<int, WFlags<ItemFlag> >::const_iterator i | ||
|       = newRowFlags_.find(index.column()); | ||
|     if (i != newRowFlags_.end()) | ||
|       return i->second; | ||
|     else | ||
|       return WAbstractProxyModel::flags(index); | ||
|       return WAbstractProxyModel::flags(sourceIndex); | ||
|   } | ||
| } | ||
| test/models/WBatchEditProxyModelTest.C | ||
|---|---|---|
|   BOOST_REQUIRE(sm->rowCount() == 0); | ||
|   BOOST_REQUIRE(pm->rowCount() == 0); | ||
|   WModelIndex a = f.proxyModel_->index(1, 0); | ||
|   WModelIndex b = f.proxyModel_->mapToSource(a); | ||
|   WModelIndex c = f.proxyModel_->mapFromSource(b); | ||
|   BOOST_REQUIRE(a == c); | ||
|   pm->insertRows(0, 2); | ||
|   BOOST_REQUIRE(f.modelEvents_[SourceModel].size() == 0); | ||