mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Added minimal threshold to emoji preview for reaction selector.
This commit is contained in:
@@ -451,6 +451,8 @@ emojiPanSlideDuration: 200;
|
||||
emojiPanArea: size(34px, 32px);
|
||||
emojiPanRadius: 8px;
|
||||
emojiPanReactionsPreviewPadding: margins(10px, 20px, 10px, 20px);
|
||||
emojiPanEmojiPreviewMinHeight: 160px;
|
||||
emojiPanEmojiPreviewRadius: 8px + 8px + 4px;
|
||||
|
||||
defaultTabbedSearchCancel: CrossButton {
|
||||
width: 33px;
|
||||
|
||||
@@ -47,6 +47,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "emoji_suggestions_helper.h"
|
||||
#include "main/main_session.h"
|
||||
#include "main/main_session_settings.h"
|
||||
#include "mainwidget.h"
|
||||
#include "core/core_settings.h"
|
||||
#include "core/application.h"
|
||||
#include "settings/settings_premium.h"
|
||||
@@ -710,12 +711,22 @@ void EmojiListWidget::ensureMediaPreview() {
|
||||
? controller->sessionController()
|
||||
: nullptr;
|
||||
if (sessionController) {
|
||||
_mediaPreview.create(_mediaPreviewParent, sessionController);
|
||||
_mediaPreview->setCustomPadding(st::emojiPanReactionsPreviewPadding);
|
||||
_mediaPreview->setBackgroundMargins(_mediaPreviewMargins);
|
||||
_mediaPreview->setCornersSkip(st::emojiPanRadius - st::lineWidth);
|
||||
const auto tooSmall = _mediaPreviewParent->height()
|
||||
< st::emojiPanEmojiPreviewMinHeight;
|
||||
const auto parent = tooSmall
|
||||
? sessionController->content()
|
||||
: _mediaPreviewParent;
|
||||
_mediaPreview = base::make_unique_q<Window::MediaPreviewWidget>(
|
||||
parent,
|
||||
sessionController);
|
||||
if (!tooSmall) {
|
||||
_mediaPreview->setCustomPadding(
|
||||
st::emojiPanReactionsPreviewPadding);
|
||||
_mediaPreview->setBackgroundMargins(_mediaPreviewMargins);
|
||||
_mediaPreview->setCustomRadius(st::emojiPanEmojiPreviewRadius);
|
||||
}
|
||||
_mediaPreview->show();
|
||||
_mediaPreview->setGeometry(_mediaPreviewParent->geometry());
|
||||
_mediaPreview->setGeometry(parent->geometry());
|
||||
_mediaPreview->raise();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -487,7 +487,7 @@ private:
|
||||
bool _previewShown = false;
|
||||
|
||||
|
||||
object_ptr<Window::MediaPreviewWidget> _mediaPreview = { nullptr };
|
||||
base::unique_qptr<Window::MediaPreviewWidget> _mediaPreview;
|
||||
|
||||
rpl::event_stream<EmojiChosen> _chosen;
|
||||
rpl::event_stream<FileChosen> _customChosen;
|
||||
|
||||
@@ -20,6 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "main/main_session.h"
|
||||
#include "ui/emoji_config.h"
|
||||
#include "ui/image/image.h"
|
||||
#include "ui/painter.h"
|
||||
#include "ui/rect.h"
|
||||
#include "ui/ui_utility.h"
|
||||
#include "window/window_session_controller.h"
|
||||
@@ -78,19 +79,12 @@ QRect MediaPreviewWidget::updateArea() const {
|
||||
void MediaPreviewWidget::paintEvent(QPaintEvent *e) {
|
||||
auto p = QPainter(this);
|
||||
|
||||
if (_cornersSkip > 0) {
|
||||
if (_customRadius > 0) {
|
||||
auto hq = PainterHighQualityEnabler(p);
|
||||
const auto r = rect() - _backgroundMargins;
|
||||
auto clipRegion = QRegion(r);
|
||||
const auto skip = _cornersSkip;
|
||||
clipRegion -= QRect(r.x(), r.y(), skip, skip);
|
||||
clipRegion -= QRect(r.x() + r.width() - skip, r.y(), skip, skip);
|
||||
clipRegion -= QRect(r.x(), r.y() + r.height() - skip, skip, skip);
|
||||
clipRegion -= QRect(
|
||||
r.x() + r.width() - skip,
|
||||
r.y() + r.height() - skip,
|
||||
skip,
|
||||
skip);
|
||||
p.setClipRegion(clipRegion);
|
||||
auto path = QPainterPath();
|
||||
path.addRoundedRect(r, _customRadius, _customRadius);
|
||||
p.setClipPath(path);
|
||||
}
|
||||
|
||||
const auto r = e->rect();
|
||||
@@ -310,8 +304,8 @@ void MediaPreviewWidget::setBackgroundMargins(const QMargins &margins) {
|
||||
update();
|
||||
}
|
||||
|
||||
void MediaPreviewWidget::setCornersSkip(int pixels) {
|
||||
_cornersSkip = pixels;
|
||||
void MediaPreviewWidget::setCustomRadius(int radius) {
|
||||
_customRadius = radius;
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
void hidePreview();
|
||||
void setCustomPadding(const QMargins &padding = QMargins());
|
||||
void setBackgroundMargins(const QMargins &margins = QMargins());
|
||||
void setCornersSkip(int pixels);
|
||||
void setCustomRadius(int radius);
|
||||
|
||||
~MediaPreviewWidget();
|
||||
|
||||
@@ -92,7 +92,7 @@ private:
|
||||
mutable QSize _cachedSize;
|
||||
QMargins _customPadding;
|
||||
QMargins _backgroundMargins;
|
||||
int _cornersSkip = 0;
|
||||
int _customRadius = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user