Fixed crash on erasing peer search result with pressed sponsored button.
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user