Display correct amount of stickers in search.

This commit is contained in:
John Preston 2018-03-08 14:12:30 +03:00
parent 61700577d0
commit cba12980f9
2 changed files with 17 additions and 3 deletions

View File

@ -147,12 +147,14 @@ StickersListWidget::Set::Set(
MTPDstickerSet::Flags flags, MTPDstickerSet::Flags flags,
const QString &title, const QString &title,
bool externalLayout, bool externalLayout,
int count,
const Stickers::Pack &pack) const Stickers::Pack &pack)
: id(id) : id(id)
, flags(flags) , flags(flags)
, title(title) , title(title)
, pack(pack) , pack(pack)
, externalLayout(externalLayout) { , externalLayout(externalLayout)
, count(count) {
} }
StickersListWidget::Set::Set(Set &&other) = default; StickersListWidget::Set::Set(Set &&other) = default;
@ -986,6 +988,7 @@ void StickersListWidget::addSearchRow(not_null<const Stickers::Set*> set) {
set->flags, set->flags,
set->title, set->title,
!SetInMyList(set->flags), !SetInMyList(set->flags),
set->count,
set->stickers.empty() ? set->covers : set->stickers)); set->stickers.empty() ? set->covers : set->stickers));
} }
@ -1114,7 +1117,10 @@ void StickersListWidget::paintStickers(Painter &p, QRect clip) {
} }
auto &set = sets[info.section]; auto &set = sets[info.section];
if (set.externalLayout) { if (set.externalLayout) {
auto size = int(set.pack.size()); const auto size = (set.flags
& MTPDstickerSet_ClientFlag::f_not_loaded)
? set.count
: int(set.pack.size());
auto widthForTitle = stickersRight() - (st::emojiPanHeaderLeft - st::buttonRadius); auto widthForTitle = stickersRight() - (st::emojiPanHeaderLeft - st::buttonRadius);
if (featuredHasAddButton(info.section)) { if (featuredHasAddButton(info.section)) {
@ -1785,6 +1791,7 @@ void StickersListWidget::appendSet(
it->flags, it->flags,
it->title, it->title,
externalLayout, externalLayout,
it->count,
it->stickers)); it->stickers));
} }
@ -1862,6 +1869,7 @@ void StickersListWidget::refreshRecentStickers(bool performResize) {
| MTPDstickerSet_ClientFlag::f_special), | MTPDstickerSet_ClientFlag::f_special),
lang(lng_recent_stickers), lang(lng_recent_stickers),
externalLayout, externalLayout,
recentPack.size(),
recentPack)); recentPack));
} else { } else {
recentIt->pack = recentPack; recentIt->pack = recentPack;
@ -1890,6 +1898,7 @@ void StickersListWidget::refreshFavedStickers() {
| MTPDstickerSet_ClientFlag::f_special), | MTPDstickerSet_ClientFlag::f_special),
Lang::Hard::FavedSetTitle(), Lang::Hard::FavedSetTitle(),
externalLayout, externalLayout,
it->count,
it->stickers)); it->stickers));
_favedStickersMap = base::flat_set<not_null<DocumentData*>> { it->stickers.begin(), it->stickers.end() }; _favedStickersMap = base::flat_set<not_null<DocumentData*>> { it->stickers.begin(), it->stickers.end() };
} }
@ -1907,11 +1916,13 @@ void StickersListWidget::refreshMegagroupStickers(GroupStickersPlace place) {
auto hidden = Auth().settings().isGroupStickersSectionHidden(_megagroupSet->id); auto hidden = Auth().settings().isGroupStickersSectionHidden(_megagroupSet->id);
if (isShownHere(hidden)) { if (isShownHere(hidden)) {
const auto externalLayout = false; const auto externalLayout = false;
const auto count = 0;
_mySets.push_back(Set( _mySets.push_back(Set(
Stickers::MegagroupSetId, Stickers::MegagroupSetId,
MTPDstickerSet_ClientFlag::f_special | 0, MTPDstickerSet_ClientFlag::f_special | 0,
lang(lng_group_stickers), lang(lng_group_stickers),
externalLayout)); externalLayout,
count));
} }
} }
return; return;
@ -1943,6 +1954,7 @@ void StickersListWidget::refreshMegagroupStickers(GroupStickersPlace place) {
MTPDstickerSet_ClientFlag::f_special | 0, MTPDstickerSet_ClientFlag::f_special | 0,
lang(lng_group_stickers), lang(lng_group_stickers),
externalLayout, externalLayout,
it->count,
it->stickers)); it->stickers));
} }
return; return;

View File

@ -142,6 +142,7 @@ private:
MTPDstickerSet::Flags flags, MTPDstickerSet::Flags flags,
const QString &title, const QString &title,
bool externalLayout, bool externalLayout,
int count,
const Stickers::Pack &pack = Stickers::Pack()); const Stickers::Pack &pack = Stickers::Pack());
Set(Set &&other); Set(Set &&other);
Set &operator=(Set &&other); Set &operator=(Set &&other);
@ -153,6 +154,7 @@ private:
Stickers::Pack pack; Stickers::Pack pack;
std::unique_ptr<Ui::RippleAnimation> ripple; std::unique_ptr<Ui::RippleAnimation> ripple;
bool externalLayout = false; bool externalLayout = false;
int count = 0;
}; };
template <typename Callback> template <typename Callback>