Fixed size ratios of stickers in touchbar.

This commit is contained in:
23rd 2020-06-16 11:27:13 +03:00
parent 044c281cf7
commit 27c799ce3d

View file

@ -679,7 +679,6 @@ void AppendEmojiPacks(
@end // @interface PickerScrubberItemView @end // @interface PickerScrubberItemView
@implementation PickerScrubberItemView { @implementation PickerScrubberItemView {
rpl::lifetime _lifetime; rpl::lifetime _lifetime;
QSize _dimensions;
std::shared_ptr<Data::DocumentMedia> _media; std::shared_ptr<Data::DocumentMedia> _media;
Image *_image; Image *_image;
@public @public
@ -700,8 +699,7 @@ void AppendEmojiPacks(
return self; return self;
} }
- (void)addDocument:(not_null<DocumentData*>)document - (void)addDocument:(not_null<DocumentData*>)document {
loadProducer:(rpl::producer<>)loadProducer {
if (!document->sticker()) { if (!document->sticker()) {
return; return;
} }
@ -710,12 +708,11 @@ void AppendEmojiPacks(
_media->checkStickerSmall(); _media->checkStickerSmall();
_image = _media->getStickerSmall(); _image = _media->getStickerSmall();
if (_image) { if (_image) {
_dimensions = document->dimensions;
[self updateImage]; [self updateImage];
return; return;
} }
std::move( base::ObservableViewer(
loadProducer document->session().downloaderTaskFinished()
) | rpl::start_with_next([=] { ) | rpl::start_with_next([=] {
_image = _media->getStickerSmall(); _image = _media->getStickerSmall();
if (_image) { if (_image) {
@ -725,7 +722,7 @@ void AppendEmojiPacks(
}, _lifetime); }, _lifetime);
} }
- (void)updateImage { - (void)updateImage {
const auto size = _dimensions const auto size = _image->size()
.scaled(kCircleDiameter, kCircleDiameter, Qt::KeepAspectRatio); .scaled(kCircleDiameter, kCircleDiameter, Qt::KeepAspectRatio);
_imageView.image = [qt_mac_create_nsimage( _imageView.image = [qt_mac_create_nsimage(
_image->pixSingle( _image->pixSingle(
@ -853,10 +850,7 @@ void AppendEmojiPacks(
const auto item = _stickers[index]; const auto item = _stickers[index];
if (const auto document = item.document) { if (const auto document = item.document) {
PickerScrubberItemView *itemView = [scrubber makeItemWithIdentifier:kStickerItemIdentifier owner:nil]; PickerScrubberItemView *itemView = [scrubber makeItemWithIdentifier:kStickerItemIdentifier owner:nil];
auto loadProducer = base::ObservableViewer( [itemView addDocument:(std::move(document))];
_session->downloaderTaskFinished());
[itemView addDocument:(std::move(document))
loadProducer:(std::move(loadProducer))];
return itemView; return itemView;
} else if (const auto emoji = item.emoji) { } else if (const auto emoji = item.emoji) {
NSScrubberImageItemView *itemView = [scrubber makeItemWithIdentifier:kEmojiItemIdentifier owner:nil]; NSScrubberImageItemView *itemView = [scrubber makeItemWithIdentifier:kEmojiItemIdentifier owner:nil];