Slightly improved style of mini icons in dialogs list for replies story.

This commit is contained in:
23rd 2023-09-13 12:09:00 +03:00
parent c057c88d30
commit 976c696004
4 changed files with 36 additions and 23 deletions

View File

@ -35,6 +35,12 @@ ForumTopicIcon {
textTop: pixels;
}
DialogsMiniIcon {
icon: ThreeStateIcon;
skipText: pixels;
skipMedia: pixels;
}
defaultForumTopicIcon: ForumTopicIcon {
size: 21px;
font: font(bold 11px);
@ -462,17 +468,24 @@ dialogsMiniPreviewSkip: 2px;
dialogsMiniPreviewRight: 3px;
dialogsMiniPlay: icon{{ "dialogs/dialogs_mini_play", videoPlayIconFg }};
dialogsMiniForwardIcon: ThreeStateIcon {
icon: icon {{ "mini_forward", dialogsTextFg, point(0px, 1px) }};
over: icon {{ "mini_forward", dialogsTextFgOver, point(0px, 1px) }};
active: icon {{ "mini_forward", dialogsTextFgActive, point(0px, 1px) }};
dialogsMiniForward: DialogsMiniIcon {
icon: ThreeStateIcon {
icon: icon {{ "mini_forward", dialogsTextFg, point(0px, 1px) }};
over: icon {{ "mini_forward", dialogsTextFgOver, point(0px, 1px) }};
active: icon {{ "mini_forward", dialogsTextFgActive, point(0px, 1px) }};
}
skipText: 1px;
skipMedia: 2px;
}
dialogsMiniIconSkip: 2px;
dialogsMiniIconTextSkip: 1px;
dialogsMiniReplyStoryIcon: ThreeStateIcon {
icon: icon {{ "mini_reply_story", dialogsTextFg, point(0px, 1px) }};
over: icon {{ "mini_reply_story", dialogsTextFgOver, point(0px, 1px) }};
active: icon {{ "mini_reply_story", dialogsTextFgActive, point(0px, 1px) }};
dialogsMiniReplyStory: DialogsMiniIcon {
icon: ThreeStateIcon {
icon: icon {{ "mini_reply_story", dialogsTextFg, point(0px, 1px) }};
over: icon {{ "mini_reply_story", dialogsTextFgOver, point(0px, 1px) }};
active: icon {{ "mini_reply_story", dialogsTextFgActive, point(0px, 1px) }};
}
skipText: 4px;
skipMedia: 5px;
}
dialogsUnreadMention: ThreeStateIcon {

View File

@ -160,9 +160,9 @@ void MessageView::prepare(
options.spoilerLoginCode = true;
auto preview = item->toPreview(options);
_leftIcon = (preview.icon == ItemPreview::Icon::ForwardedMessage)
? &st::dialogsMiniForwardIcon
? &st::dialogsMiniForward
: (preview.icon == ItemPreview::Icon::ReplyToStory)
? &st::dialogsMiniReplyStoryIcon
? &st::dialogsMiniReplyStory
: nullptr;
const auto hasImages = !preview.images.empty();
const auto history = item->history();
@ -325,7 +325,7 @@ void MessageView::paint(
if (_leftIcon) {
const auto &icon = ThreeStateIcon(
*_leftIcon,
_leftIcon->icon,
context.active,
context.selected);
const auto w = (icon.width());
@ -342,8 +342,8 @@ void MessageView::paint(
rect.setLeft(rect.x()
+ w
+ (_imagesCache.empty()
? st::dialogsMiniIconTextSkip
: st::dialogsMiniIconSkip));
? _leftIcon->skipText
: _leftIcon->skipMedia));
}
}
for (const auto &image : _imagesCache) {

View File

@ -15,7 +15,7 @@ enum class ImageRoundRadius;
namespace style {
struct DialogRow;
struct ThreeStateIcon;
struct DialogsMiniIcon;
} // namespace style
namespace Ui {
@ -93,7 +93,7 @@ private:
mutable std::vector<ItemPreviewImage> _imagesCache;
mutable std::unique_ptr<SpoilerAnimation> _spoiler;
mutable std::unique_ptr<LoadingContext> _loadingContext;
mutable const style::ThreeStateIcon *_leftIcon = nullptr;
mutable const style::DialogsMiniIcon *_leftIcon = nullptr;
mutable bool _hasPlainLinkAtBegin = false;
};

View File

@ -43,7 +43,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "api/api_bot.h"
#include "styles/style_widgets.h"
#include "styles/style_chat.h"
#include "styles/style_dialogs.h" // dialogsMiniReplyStoryIcon.
#include "styles/style_dialogs.h" // dialogsMiniReplyStory.
#include <QtGui/QGuiApplication>
@ -466,8 +466,8 @@ void HistoryMessageReply::updateName(
w,
std::min(replyToText.maxWidth(), st::maxSignatureSize))
+ (storyReply
? (st::dialogsMiniIconSkip
+ st::dialogsMiniReplyStoryIcon.icon.width())
? (st::dialogsMiniReplyStory.skipText
+ st::dialogsMiniReplyStory.icon.icon.width())
: 0);
} else {
maxReplyWidth = st::msgDateFont->width(statePhrase());
@ -611,14 +611,14 @@ void HistoryMessageReply::paint(
? stm->replyTextPalette
: st->imgReplyTextPalette());
if (storyReply) {
st::dialogsMiniReplyStoryIcon.icon.paint(
st::dialogsMiniReplyStory.icon.icon.paint(
p,
replyToTextPosition,
w - st::msgReplyBarSkip - previewSkip,
replyToTextPalette->linkFg->c);
replyToTextPosition += QPoint(
st::dialogsMiniIconSkip
+ st::dialogsMiniReplyStoryIcon.icon.width(),
st::dialogsMiniReplyStory.skipText
+ st::dialogsMiniReplyStory.icon.icon.width(),
0);
}
replyToText.draw(p, {