From 18a6f7d700ce0906ebde59af61582e53030a002b Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 21 Jul 2022 20:09:30 +0300 Subject: [PATCH] Make 8 column emoji picker by default. --- .../Resources/icons/emoji/emoji_travel.png | Bin 882 -> 774 bytes .../Resources/icons/emoji/emoji_travel@2x.png | Bin 1613 -> 1430 bytes .../Resources/icons/emoji/emoji_travel@3x.png | Bin 2397 -> 2136 bytes Telegram/Resources/langs/lang.strings | 5 + .../chat_helpers/chat_helpers.style | 13 +- .../chat_helpers/emoji_list_widget.cpp | 156 ++++++++++-------- .../chat_helpers/emoji_list_widget.h | 5 +- Telegram/SourceFiles/core/core_settings.cpp | 2 - .../SourceFiles/ui/cached_round_corners.cpp | 2 +- 9 files changed, 103 insertions(+), 80 deletions(-) diff --git a/Telegram/Resources/icons/emoji/emoji_travel.png b/Telegram/Resources/icons/emoji/emoji_travel.png index 0a7bec1a420a120276214e114e6eac15950bdb19..315acc6f190f8f4aef78b5ef51a21720cd91c41f 100644 GIT binary patch delta 657 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 Ef`oYC6#xJL diff --git a/Telegram/Resources/icons/emoji/emoji_travel@3x.png b/Telegram/Resources/icons/emoji/emoji_travel@3x.png index 708d71324fdda407c6f3055957ccde282e005017..0d6e1babba25cc8e4d6b193c5d7bd0033508e1f9 100644 GIT binary patch delta 2030 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 - _esize = Ui::Emoji::GetSizeLarge(); - for (auto i = 1; i != kEmojiSectionCount; ++i) { const auto section = static_cast
(i); _counts[i] = Ui::Emoji::GetSectionCount(section); @@ -563,13 +585,10 @@ bool EmojiListWidget::enumerateSections(Callback callback) const { const auto premiumMayBeBought = !session->premium() && session->premiumPossible(); const auto next = [&] { - const auto shift = (info.premiumRequired ? st::emojiPanPadding : 0); info.rowsCount = (info.count + _columnCount - 1) / _columnCount; info.rowsTop = info.top - + (i == 0 ? st::emojiPanPadding : st::emojiPanHeader) - - shift; + + (i == 0 ? st::emojiPanPadding : st::emojiPanHeader); info.rowsBottom = info.rowsTop - + shift + (info.rowsCount * _singleSize.height()) + st::roundRadiusSmall; if (!callback(info)) { @@ -628,21 +647,32 @@ int EmojiListWidget::sectionsCount() const { return kEmojiSectionCount + int(_custom.size()); } +void EmojiListWidget::setSingleSize(QSize size) { + const auto area = st::emojiPanArea; + _singleSize = size; + _areaPosition = QPoint( + (_singleSize.width() - area.width()) / 2, + (_singleSize.height() - area.height()) / 2); + const auto esize = Ui::Emoji::GetSizeLarge() / style::DevicePixelRatio(); + _innerPosition = QPoint( + (area.width() - esize) / 2, + (area.height() - esize) / 2); + _picker->setSingleSize(_singleSize); +} + int EmojiListWidget::countDesiredHeight(int newWidth) { + const auto left = st::emojiPanLeft; + const auto right = st::emojiPanRight; const auto fullWidth = st::roundRadiusSmall + newWidth + st::emojiScroll.width; - _columnCount = std::max( - (fullWidth - st::emojiPadding * 2) / st::emojiPanDesiredSize, - 1); - - _rowsLeft = fullWidth / (_columnCount * 4 + 2); - auto rowsRight = std::max(_rowsLeft, st::emojiScroll.width); - auto singleWidth = (fullWidth - _rowsLeft - rowsRight) - / _columnCount; - _rowsLeft -= st::roundRadiusSmall; - _singleSize = QSize(singleWidth, singleWidth - 4 * st::lineWidth); - _picker->setSingleSize(_singleSize); + const auto innerWidth = fullWidth - left - right; + _columnCount = std::max(innerWidth / st::emojiPanDesiredSize, 1); + const auto singleWidth = innerWidth / _columnCount; + _rowsLeft = left + + (innerWidth - _columnCount * singleWidth) / 2 + - st::roundRadiusSmall; + setSingleSize({ singleWidth, singleWidth - 4 * st::lineWidth }); auto visibleHeight = minimalHeight(); auto minimalHeight = (visibleHeight - st::stickerPanPadding); @@ -734,17 +764,12 @@ void EmojiListWidget::paintEvent(QPaintEvent *e) { } else if (r.top() + r.height() <= info.top) { return false; } - if (info.premiumRequired) { - drawPremiumRect(p, info); - } auto widthForTitle = emojiRight() - (st::emojiPanHeaderLeft - st::roundRadiusSmall); const auto skip = st::roundRadiusSmall; if (hasRemoveButton(info.section)) { auto &custom = _custom[info.section - kEmojiSectionCount]; auto remove = removeButtonRect(info.section); - auto expanded = remove.marginsAdded({ skip, 0, skip, 0 }); - if (expanded.intersects(r)) { - p.fillRect(expanded, st::emojiPanBg); + if (remove.intersects(r)) { auto selected = selectedButton ? (selectedButton->section == info.section) : false; if (custom.ripple) { custom.ripple->paint(p, remove.x() + st::stickerPanRemoveSet.rippleAreaPosition.x(), remove.y() + st::stickerPanRemoveSet.rippleAreaPosition.y(), width()); @@ -767,17 +792,16 @@ void EmojiListWidget::paintEvent(QPaintEvent *e) { titleText = st::emojiPanHeaderFont->elided(titleText, widthForTitle); titleWidth = st::emojiPanHeaderFont->width(titleText); } - auto left = st::emojiPanHeaderLeft - st::roundRadiusSmall; + const auto left = (info.premiumRequired + ? st::emojiPanHeaderLockedLeft + : st::emojiPanHeaderLeft) - st::roundRadiusSmall; const auto top = info.top + st::emojiPanHeaderTop; if (info.premiumRequired) { - p.fillRect( - left - skip, - top - skip, - titleWidth + st::emojiPremiumRequired.width() + skip, - st::emojiPanHeaderFont->height + 2 * skip, - st::emojiPanBg); - st::emojiPremiumRequired.paint(p, left - skip, top, width()); - left += st::emojiPremiumRequired.width() - skip; + st::emojiPremiumRequired.paint( + p, + st::emojiPanHeaderLockLeft - st::roundRadiusSmall, + top, + width()); } p.setFont(st::emojiPanHeaderFont); p.setPen(st::emojiPanHeaderFg); @@ -800,11 +824,18 @@ void EmojiListWidget::paintEvent(QPaintEvent *e) { || (!_picker->isHidden() && state == _pickerSelected); - auto w = QPoint(_rowsLeft + j * _singleSize.width(), info.rowsTop + i * _singleSize.height()); + auto w = QPoint( + _rowsLeft + j * _singleSize.width(), + info.rowsTop + i * _singleSize.height() + ) + _areaPosition; if (selected && !info.premiumRequired) { auto tl = w; - if (rtl()) tl.setX(width() - tl.x() - _singleSize.width()); - Ui::FillRoundRect(p, QRect(tl, _singleSize), st::emojiPanHover, Ui::StickerHoverCorners); + if (rtl()) tl.setX(width() - tl.x() - st::emojiPanArea.width()); + Ui::FillRoundRect( + p, + QRect(tl, st::emojiPanArea), + st::emojiPanHover, + Ui::EmojiHoverCorners); } if (info.section == int(Section::Recent)) { drawRecent(p, w, now, paused, index); @@ -821,41 +852,22 @@ void EmojiListWidget::paintEvent(QPaintEvent *e) { }); } -void EmojiListWidget::drawPremiumRect(QPainter &p, const SectionInfo &info) { - auto pen = st::windowSubTextFg->p; - pen.setWidthF(style::ConvertScale(2.)); - pen.setDashPattern({ 3, 5 }); - pen.setDashOffset(2); - pen.setCapStyle(Qt::RoundCap); - p.setPen(pen); - p.setBrush(Qt::NoBrush); - - const auto radius = st::roundRadiusLarge; - const auto titleTop = info.top + st::emojiPanHeaderTop; - const auto left = _rowsLeft; - const auto top = titleTop + st::emojiPanHeaderFont->height / 2; - const auto width = _columnCount * _singleSize.width(); - const auto height = info.rowsBottom - top - st::roundRadiusSmall; - p.drawRoundedRect(left, top, width, height, radius, radius); -} - void EmojiListWidget::drawRecent( QPainter &p, QPoint position, crl::time now, bool paused, int index) { - const auto size = (_esize / cIntRetinaFactor()); _recentPainted = true; if (const auto emoji = std::get_if(&_recent[index].id.data)) { drawEmoji(p, position, *emoji); } else { Assert(_recent[index].instance != nullptr); - + position += _innerPosition; _recent[index].instance->object.paint( p, - position.x() + (_singleSize.width() - size) / 2, - position.y() + (_singleSize.height() - size) / 2, + position.x(), + position.y(), now, st::windowBgRipple->c, paused); @@ -866,13 +878,13 @@ void EmojiListWidget::drawEmoji( QPainter &p, QPoint position, EmojiPtr emoji) { - const auto size = (_esize / cIntRetinaFactor()); + position += _innerPosition; Ui::Emoji::Draw( p, emoji, - _esize, - position.x() + (_singleSize.width() - size) / 2, - position.y() + (_singleSize.height() - size) / 2); + Ui::Emoji::GetSizeLarge(), + position.x(), + position.y()); } void EmojiListWidget::drawCustom( @@ -882,12 +894,12 @@ void EmojiListWidget::drawCustom( bool paused, int set, int index) { - const auto size = (_esize / cIntRetinaFactor()); + position += _innerPosition; _custom[set].painted = true; _custom[set].list[index].instance->object.paint( p, - position.x() + (_singleSize.width() - size) / 2, - position.y() + (_singleSize.height() - size) / 2, + position.x(), + position.y(), now, st::windowBgRipple->c, paused); @@ -1085,7 +1097,7 @@ QRect EmojiListWidget::removeButtonRect(int index) const { auto buttonw = st::stickerPanRemoveSet.rippleAreaPosition.x() + st::stickerPanRemoveSet.rippleAreaSize; auto buttonh = st::stickerPanRemoveSet.height; - auto buttonx = emojiRight() - buttonw; + auto buttonx = emojiRight() - st::emojiPanRemoveSkip - buttonw; auto buttony = sectionInfo(index).top + (st::emojiPanHeader - buttonh) / 2; return QRect(buttonx, buttony, buttonw, buttonh); } diff --git a/Telegram/SourceFiles/chat_helpers/emoji_list_widget.h b/Telegram/SourceFiles/chat_helpers/emoji_list_widget.h index 0c7c03403..7d5edb74e 100644 --- a/Telegram/SourceFiles/chat_helpers/emoji_list_widget.h +++ b/Telegram/SourceFiles/chat_helpers/emoji_list_widget.h @@ -171,6 +171,7 @@ private: [[nodiscard]] SectionInfo sectionInfo(int section) const; [[nodiscard]] SectionInfo sectionInfoByOffset(int yOffset) const; [[nodiscard]] int sectionsCount() const; + void setSingleSize(QSize size); void showPicker(); void pickerHidden(); @@ -204,7 +205,6 @@ private: bool paused, int set, int index); - void drawPremiumRect(QPainter &p, const SectionInfo &info); [[nodiscard]] bool hasRemoveButton(int index) const; [[nodiscard]] QRect removeButtonRect(int index) const; [[nodiscard]] QRect emojiRect(int section, int index) const; @@ -255,7 +255,8 @@ private: int _rowsLeft = 0; int _columnCount = 1; QSize _singleSize; - int _esize = 0; + QPoint _areaPosition; + QPoint _innerPosition; OverState _selected; OverState _pressed; diff --git a/Telegram/SourceFiles/core/core_settings.cpp b/Telegram/SourceFiles/core/core_settings.cpp index 0c7f36f01..1f1284755 100644 --- a/Telegram/SourceFiles/core/core_settings.cpp +++ b/Telegram/SourceFiles/core/core_settings.cpp @@ -1009,8 +1009,6 @@ void Settings::resetOnLastLogout() { _recentEmoji.clear(); _emojiVariants.clear(); - _workMode = WorkMode::WindowAndTray; - _accountsOrder.clear(); } diff --git a/Telegram/SourceFiles/ui/cached_round_corners.cpp b/Telegram/SourceFiles/ui/cached_round_corners.cpp index bcd9a9478..056484388 100644 --- a/Telegram/SourceFiles/ui/cached_round_corners.cpp +++ b/Telegram/SourceFiles/ui/cached_round_corners.cpp @@ -80,7 +80,7 @@ void CreatePaletteCorners() { PrepareCorners(OverviewVideoSelectedCorners, st::overviewVideoStatusRadius, st::msgDateImgBgSelected); PrepareCorners(ForwardCorners, st::historyMessageRadius, st::historyForwardChooseBg); PrepareCorners(MediaviewSaveCorners, st::mediaviewControllerRadius, st::mediaviewSaveMsgBg); - PrepareCorners(EmojiHoverCorners, st::roundRadiusSmall, st::emojiPanHover); + PrepareCorners(EmojiHoverCorners, st::emojiPanRadius, st::emojiPanHover); PrepareCorners(StickerHoverCorners, st::roundRadiusSmall, st::emojiPanHover); PrepareCorners(BotKeyboardCorners, st::roundRadiusSmall, st::botKbBg);