mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Added ability to provide data to emoji list for preview via descriptor.
This commit is contained in:
@@ -482,6 +482,8 @@ EmojiListWidget::EmojiListWidget(
|
||||
, _features(descriptor.features)
|
||||
, _onlyUnicodeEmoji(descriptor.mode == Mode::PeerTitle)
|
||||
, _mode(_onlyUnicodeEmoji ? Mode::Full : descriptor.mode)
|
||||
, _mediaPreviewParent(descriptor.mediaPreviewParent)
|
||||
, _mediaPreviewMargins(descriptor.mediaPreviewMargins)
|
||||
, _api(&session().mtp())
|
||||
, _staticCount(_mode == Mode::Full ? kEmojiSectionCount : 1)
|
||||
, _premiumIcon(_mode == Mode::EmojiStatus
|
||||
@@ -686,7 +688,8 @@ void EmojiListWidget::showPreview() {
|
||||
}
|
||||
|
||||
void EmojiListWidget::showPreviewFor(not_null<DocumentData*> document) {
|
||||
if ((_mode == Mode::FullReactions) || (_mode == Mode::RecentReactions)) {
|
||||
if ((_mode == Mode::FullReactions || _mode == Mode::RecentReactions)
|
||||
&& _mediaPreviewParent) {
|
||||
ensureMediaPreview();
|
||||
_mediaPreview->showPreview(document->stickerSetOrigin(), document);
|
||||
} else {
|
||||
@@ -695,18 +698,24 @@ void EmojiListWidget::showPreviewFor(not_null<DocumentData*> document) {
|
||||
}
|
||||
|
||||
void EmojiListWidget::ensureMediaPreview() {
|
||||
if (!_mediaPreviewParent) {
|
||||
return;
|
||||
}
|
||||
if (_mediaPreview) {
|
||||
_mediaPreview->raise();
|
||||
return;
|
||||
}
|
||||
const auto controller = Core::App().findWindow(_show->toastParent());
|
||||
const auto sessionController = controller ? controller->sessionController() : nullptr;
|
||||
const auto sessionController = controller
|
||||
? controller->sessionController()
|
||||
: nullptr;
|
||||
if (sessionController) {
|
||||
_mediaPreview.create(parentWidget()->parentWidget(), sessionController);
|
||||
_mediaPreview.create(_mediaPreviewParent, sessionController);
|
||||
_mediaPreview->setCustomPadding(st::emojiPanReactionsPreviewPadding);
|
||||
_mediaPreview->setBackgroundMargins({ 0, 0, st::emojiPanRadius, 0 });
|
||||
_mediaPreview->setBackgroundMargins(_mediaPreviewMargins);
|
||||
_mediaPreview->setCornersSkip(st::emojiPanRadius - st::lineWidth);
|
||||
_mediaPreview->show();
|
||||
_mediaPreview->setGeometry(parentWidget()->parentWidget()->geometry().translated(0, 0));
|
||||
_mediaPreview->setGeometry(_mediaPreviewParent->geometry());
|
||||
_mediaPreview->raise();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +99,8 @@ struct EmojiListDescriptor {
|
||||
base::flat_set<DocumentId> freeEffects;
|
||||
const style::EmojiPan *st = nullptr;
|
||||
ComposeFeatures features;
|
||||
QWidget *mediaPreviewParent = nullptr;
|
||||
QMargins mediaPreviewMargins;
|
||||
};
|
||||
|
||||
class EmojiListWidget final
|
||||
@@ -409,6 +411,8 @@ private:
|
||||
const ComposeFeatures _features;
|
||||
const bool _onlyUnicodeEmoji;
|
||||
Mode _mode = Mode::Full;
|
||||
QWidget *_mediaPreviewParent = nullptr;
|
||||
QMargins _mediaPreviewMargins;
|
||||
std::unique_ptr<Ui::TabbedSearch> _search;
|
||||
MTP::Sender _api;
|
||||
const int _staticCount = 0;
|
||||
|
||||
@@ -1051,6 +1051,8 @@ void Selector::createList() {
|
||||
.customRecentFactory = _unifiedFactoryOwner->factory(),
|
||||
.freeEffects = std::move(freeEffects),
|
||||
.st = st,
|
||||
.mediaPreviewParent = this,
|
||||
.mediaPreviewMargins = marginsForShadow(),
|
||||
}));
|
||||
if (!_reactions.stickers.empty()) {
|
||||
auto descriptors = ranges::views::all(
|
||||
|
||||
Reference in New Issue
Block a user