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

View file

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

View file

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

View file

@ -1030,6 +1030,8 @@ void StickersBox::saveChanges() {
void StickersBox::setInnerFocus() {
if (_megagroupSet) {
_installed.widget()->setInnerFocus();
} else {
BoxContent::setInnerFocus();
}
}
@ -1075,7 +1077,8 @@ StickersBox::Inner::Row::~Row() {
const auto featured = !!(set->flags & SetFlag::Featured);
const auto special = !!(set->flags & SetFlag::Special);
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();
if (const auto i = sets.find(set->id); i != end(sets)) {
sets.erase(i);

View file

@ -2723,13 +2723,6 @@ object_ptr<Ui::BoxContent> MakeConfirmRemoveSetBox(
}
set->flags &= ~SetFlag::Installed;
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)
? session->data().stickers().emojiSetsOrderRef()
: (set->type() == Data::StickersType::Masks)

View file

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

View file

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