aboutsummaryrefslogtreecommitdiff
path: root/src/MessageBoard.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-04-21 04:17:24 +0200
committerdec05eba <dec05eba@protonmail.com>2018-04-21 04:17:29 +0200
commit424b02609fa34175a4e2aadb95e68b3c9c8dc93c (patch)
treec6312f04ea70a483fec9e76dcef8ae3ffa5e6424 /src/MessageBoard.cpp
parent09a8ade6becca2a71f45ff0db5f4bf6d64afb212 (diff)
Fix emoji async download drawing
Diffstat (limited to 'src/MessageBoard.cpp')
-rw-r--r--src/MessageBoard.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/MessageBoard.cpp b/src/MessageBoard.cpp
index acb7be1..575ae5f 100644
--- a/src/MessageBoard.cpp
+++ b/src/MessageBoard.cpp
@@ -143,6 +143,9 @@ namespace dchat
case MessagePart::Type::EMOJI:
{
MessagePartEmoji *messagePartEmoji = static_cast<MessagePartEmoji*>(messagePart);
+ // Emoji is dirty when it's created, but render target can become dirty after emoji has been added, so we need to set emoji as dirty then
+ if(dirty)
+ messagePartEmoji->dirty = true;
auto imageByUrlResult = cache.getImageByUrl(messagePartEmoji->url, 1024 * 512);
position.x += 5.0f;
if(imageByUrlResult.texture)
@@ -152,8 +155,11 @@ namespace dchat
sf::Vector2f spriteSize(MessagePartEmoji::getHeightScaled(), MessagePartEmoji::getHeightScaled());
messagePartEmoji->sprite.setScale(spriteSize.x / (float)imageByUrlResult.texture->getSize().x, spriteSize.y / (float)imageByUrlResult.texture->getSize().y);
messagePartEmoji->sprite.setPosition(floor(position.x), floor(position.y + MessagePart::getSizeScaled() * 0.5f - MessagePartEmoji::getHeightScaled() * 0.5f));
- if(dirty)
+ if(messagePartEmoji->dirty)
+ {
+ messagePartEmoji->dirty = false;
renderTarget->draw(messagePartEmoji->sprite);
+ }
}
else
{
@@ -161,8 +167,7 @@ namespace dchat
sf::RectangleShape emojiDownloadRect(sf::Vector2f(MessagePartEmoji::getHeightScaled(), MessagePartEmoji::getHeightScaled()));
emojiDownloadRect.setPosition(floor(position.x), floor(position.y + MessagePart::getSizeScaled() * 0.5f - MessagePartEmoji::getHeightScaled() * 0.5f));
emojiDownloadRect.setFillColor(sf::Color::White);
- if(dirty)
- renderTarget->draw(emojiDownloadRect);
+ window.draw(emojiDownloadRect);
}
position.x += MessagePartEmoji::getHeightScaled() + 5.0f;
break;