| 1308 | } |
| 1309 | |
| 1310 | void PeerListContent::removeRow(not_null<PeerListRow*> row) { |
| 1311 | auto index = row->absoluteIndex(); |
| 1312 | auto isSearchResult = row->isSearchResult(); |
| 1313 | auto &eraseFrom = isSearchResult ? _searchRows : _rows; |
| 1314 | |
| 1315 | Assert(index >= 0 && index < eraseFrom.size()); |
| 1316 | Assert(eraseFrom[index].get() == row); |
| 1317 | |
| 1318 | auto pressedData = saveSelectedData(_pressed); |
| 1319 | auto contextedData = saveSelectedData(_contexted); |
| 1320 | setSelected(Selected()); |
| 1321 | setPressed(Selected()); |
| 1322 | setContexted(Selected()); |
| 1323 | |
| 1324 | _rowsById.erase(row->id()); |
| 1325 | if (!row->special()) { |
| 1326 | auto &byPeer = _rowsByPeer[row->peer()]; |
| 1327 | byPeer.erase(ranges::remove(byPeer, row), end(byPeer)); |
| 1328 | } |
| 1329 | removeFromSearchIndex(row); |
| 1330 | _filterResults.erase( |
| 1331 | ranges::remove(_filterResults, row), |
| 1332 | end(_filterResults)); |
| 1333 | _hiddenRows.remove(row); |
| 1334 | removeRowAtIndex(eraseFrom, index); |
| 1335 | |
| 1336 | restoreSelection(); |
| 1337 | setPressed(restoreSelectedData(pressedData)); |
| 1338 | setContexted(restoreSelectedData(contextedData)); |
| 1339 | } |
| 1340 | |
| 1341 | void PeerListContent::clearAllContent() { |
| 1342 | setSelected(Selected()); |
no test coverage detected