Fixed crash on erasing peer search result with pressed sponsored button.

This commit is contained in:
23rd
2025-11-06 16:58:37 +03:00
parent 6e0ff9b6a0
commit 01a140ea29

View File

@@ -3273,6 +3273,18 @@ void InnerWidget::showSponsoredMenu(int peerSearchIndex, QPoint globalPos) {
const auto peer = entry->peer;
const auto remove = crl::guard(this, [=] {
_sponsoredRemoved.emplace(peer);
if (_pressedRightButtonData) {
for (const auto &result : _peerSearchResults) {
if (result->peer == peer
&& result->sponsored
&& _pressedRightButtonData
== &result->sponsored->button) {
_pressedRightButtonData = nullptr;
_pressedRightButton = false;
break;
}
}
}
_peerSearchResults.erase(
ranges::remove(
_peerSearchResults,
@@ -3601,12 +3613,17 @@ void InnerWidget::clearSearchResults(bool alsoPeerSearchResults) {
}
void InnerWidget::clearPeerSearchResults() {
_peerSearchResults.clear();
if (_pressedRightButtonSponsored) {
_pressedRightButtonData = nullptr;
_pressedRightButtonSponsored = false;
_pressedRightButton = false;
if (_pressedRightButtonData) {
for (const auto &result : _peerSearchResults) {
if (result->sponsored
&& _pressedRightButtonData == &result->sponsored->button) {
_pressedRightButtonData = nullptr;
_pressedRightButton = false;
break;
}
}
}
_peerSearchResults.clear();
}
void InnerWidget::clearPreviewResults() {