Limit attached emoji phrase to two lines.

This commit is contained in:
John Preston 2022-07-28 18:15:18 +03:00
parent d80cf5d149
commit 7a61693034
2 changed files with 26 additions and 3 deletions

View file

@ -1267,6 +1267,7 @@ void AddEmojiPacksAction(
, _dummyAction(new QAction(parent)) { , _dummyAction(new QAction(parent)) {
enableMouseSelecting(); enableMouseSelecting();
_text->setAttribute(Qt::WA_TransparentForMouseEvents); _text->setAttribute(Qt::WA_TransparentForMouseEvents);
updateMinWidth();
parent->widthValue() | rpl::start_with_next([=](int width) { parent->widthValue() | rpl::start_with_next([=](int width) {
const auto top = st::historyHasCustomEmojiPosition.y(); const auto top = st::historyHasCustomEmojiPosition.y();
const auto skip = st::historyHasCustomEmojiPosition.x(); const auto skip = st::historyHasCustomEmojiPosition.x();
@ -1297,6 +1298,28 @@ void AddEmojiPacksAction(
RippleButton::paintRipple(p, 0, 0); RippleButton::paintRipple(p, 0, 0);
} }
void updateMinWidth() {
const auto skip = st::historyHasCustomEmojiPosition.x();
auto min = _text->naturalWidth() / 2;
auto max = _text->naturalWidth() - skip;
_text->resizeToWidth(max);
const auto height = _text->height();
_text->resizeToWidth(min);
const auto heightMax = _text->height();
if (heightMax > height) {
while (min + 1 < max) {
const auto middle = (max + min) / 2;
_text->resizeToWidth(middle);
if (_text->height() > height) {
min = middle;
} else {
max = middle;
}
}
}
setMinWidth(skip * 2 + max);
}
const style::Menu &_st; const style::Menu &_st;
const base::unique_qptr<Ui::FlatLabel> _text; const base::unique_qptr<Ui::FlatLabel> _text;
const not_null<QAction*> _dummyAction; const not_null<QAction*> _dummyAction;

View file

@ -1090,9 +1090,9 @@ msgServiceGiftBoxStickerSize: size(140px, 140px);
historyHasCustomEmoji: FlatLabel(defaultFlatLabel) { historyHasCustomEmoji: FlatLabel(defaultFlatLabel) {
style: TextStyle(defaultTextStyle) { style: TextStyle(defaultTextStyle) {
font: font(12px); font: font(11px);
linkFont: font(12px underline); linkFont: font(11px underline);
linkFontOver: font(12px underline); linkFontOver: font(11px underline);
} }
minWidth: 80px; minWidth: 80px;
} }