Don't unload emoji sets.

Fixes #24933.
This commit is contained in:
John Preston 2022-08-15 15:40:11 +03:00
parent e05f570e1a
commit 2c0a38d356
7 changed files with 21 additions and 19 deletions

View file

@ -1490,6 +1490,8 @@ void ApiWrap::saveStickerSets(
if (!archived) { if (!archived) {
const auto featured = !!(set->flags & Flag::Featured); const auto featured = !!(set->flags & Flag::Featured);
const auto special = !!(set->flags & Flag::Special); const auto special = !!(set->flags & Flag::Special);
const auto emoji = !!(set->flags & Flag::Emoji);
const auto locked = (set->locked > 0);
const auto setId = set->mtpInput(); const auto setId = set->mtpInput();
auto requestId = request(MTPmessages_UninstallStickerSet( auto requestId = request(MTPmessages_UninstallStickerSet(
@ -1506,7 +1508,7 @@ void ApiWrap::saveStickerSets(
if (removeIndex >= 0) { if (removeIndex >= 0) {
orderRef.removeAt(removeIndex); orderRef.removeAt(removeIndex);
} }
if (!featured && !special) { if (!featured && !special && !emoji && !locked) {
sets.erase(it); sets.erase(it);
} else { } else {
if (archived) { if (archived) {
@ -1573,7 +1575,9 @@ void ApiWrap::saveStickerSets(
if ((set->flags & Flag::Featured) if ((set->flags & Flag::Featured)
|| (set->flags & Flag::Installed) || (set->flags & Flag::Installed)
|| (set->flags & Flag::Archived) || (set->flags & Flag::Archived)
|| (set->flags & Flag::Special)) { || (set->flags & Flag::Special)
|| (set->flags & Flag::Emoji)
|| (set->locked > 0)) {
++it; ++it;
} else { } else {
it = sets.erase(it); it = sets.erase(it);

View file

@ -897,10 +897,10 @@ void SetupChannelBox::prepare() {
} }
void SetupChannelBox::setInnerFocus() { void SetupChannelBox::setInnerFocus() {
if (_link->isHidden()) { if (!_link->isHidden()) {
setFocus();
} else {
_link->setFocusFast(); _link->setFocusFast();
} else {
BoxContent::setInnerFocus();
} }
} }

View file

@ -972,10 +972,10 @@ void SendFilesBox::updateControlsGeometry() {
} }
void SendFilesBox::setInnerFocus() { void SendFilesBox::setInnerFocus() {
if (!_caption || _caption->isHidden()) { if (_caption && !_caption->isHidden()) {
setFocus();
} else {
_caption->setFocusFast(); _caption->setFocusFast();
} else {
BoxContent::setInnerFocus();
} }
} }

View file

@ -1030,6 +1030,8 @@ void StickersBox::saveChanges() {
void StickersBox::setInnerFocus() { void StickersBox::setInnerFocus() {
if (_megagroupSet) { if (_megagroupSet) {
_installed.widget()->setInnerFocus(); _installed.widget()->setInnerFocus();
} else {
BoxContent::setInnerFocus();
} }
} }
@ -1075,7 +1077,8 @@ StickersBox::Inner::Row::~Row() {
const auto featured = !!(set->flags & SetFlag::Featured); const auto featured = !!(set->flags & SetFlag::Featured);
const auto special = !!(set->flags & SetFlag::Special); const auto special = !!(set->flags & SetFlag::Special);
const auto archived = !!(set->flags & SetFlag::Archived); const auto archived = !!(set->flags & SetFlag::Archived);
if (!installed && !featured && !special && !archived) { const auto emoji = !!(set->flags & SetFlag::Emoji);
if (!installed && !featured && !special && !archived && !emoji) {
auto &sets = set->owner().stickers().setsRef(); auto &sets = set->owner().stickers().setsRef();
if (const auto i = sets.find(set->id); i != end(sets)) { if (const auto i = sets.find(set->id); i != end(sets)) {
sets.erase(i); sets.erase(i);

View file

@ -2723,13 +2723,6 @@ object_ptr<Ui::BoxContent> MakeConfirmRemoveSetBox(
} }
set->flags &= ~SetFlag::Installed; set->flags &= ~SetFlag::Installed;
set->installDate = TimeId(0); set->installDate = TimeId(0);
//
// Set can be in search results.
//
//if (!(set->flags & SetFlag::Featured)
// && !(set->flags & SetFlag::Special)) {
// sets.erase(it);
//}
auto &orderRef = (set->type() == Data::StickersType::Emoji) auto &orderRef = (set->type() == Data::StickersType::Emoji)
? session->data().stickers().emojiSetsOrderRef() ? session->data().stickers().emojiSetsOrderRef()
: (set->type() == Data::StickersType::Masks) : (set->type() == Data::StickersType::Masks)

View file

@ -736,6 +736,7 @@ void Stickers::somethingReceived(
const auto featured = !!(set->flags & SetFlag::Featured); const auto featured = !!(set->flags & SetFlag::Featured);
const auto special = !!(set->flags & SetFlag::Special); const auto special = !!(set->flags & SetFlag::Special);
const auto archived = !!(set->flags & SetFlag::Archived); const auto archived = !!(set->flags & SetFlag::Archived);
const auto emoji = !!(set->flags & SetFlag::Emoji);
const auto locked = (set->locked > 0); const auto locked = (set->locked > 0);
if (!installed) { // remove not mine sets from recent stickers if (!installed) { // remove not mine sets from recent stickers
for (auto i = recent.begin(); i != recent.cend();) { for (auto i = recent.begin(); i != recent.cend();) {
@ -747,7 +748,7 @@ void Stickers::somethingReceived(
} }
} }
} }
if (installed || featured || special || archived || locked) { if (installed || featured || special || archived || emoji || locked) {
++it; ++it;
} else { } else {
it = sets.erase(it); it = sets.erase(it);
@ -1062,8 +1063,9 @@ void Stickers::featuredReceived(
const auto featured = (set->flags & SetFlag::Featured); const auto featured = (set->flags & SetFlag::Featured);
const auto special = (set->flags & SetFlag::Special); const auto special = (set->flags & SetFlag::Special);
const auto archived = (set->flags & SetFlag::Archived); const auto archived = (set->flags & SetFlag::Archived);
const auto emoji = !!(set->flags & SetFlag::Emoji);
const auto locked = (set->locked > 0); const auto locked = (set->locked > 0);
if (installed || featured || special || archived || locked) { if (installed || featured || special || archived || emoji || locked) {
if (featured && (set->flags & SetFlag::Unread)) { if (featured && (set->flags & SetFlag::Unread)) {
if (!(set->flags & SetFlag::Emoji)) { if (!(set->flags & SetFlag::Emoji)) {
++unreadCount; ++unreadCount;

View file

@ -109,7 +109,7 @@ void RateCallBox::setInnerFocus() {
if (_comment) { if (_comment) {
_comment->setFocusFast(); _comment->setFocusFast();
} else { } else {
setFocus(); BoxContent::setInnerFocus();
} }
} }