Fix link preview doesn't update link info for previous messages after setting is enabled (#2108)

Co-authored-by: Felanbird <41973452+Felanbird@users.noreply.github.com>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
fanway 2020-11-01 16:33:01 +03:00 committed by GitHub
parent 86feef6be8
commit 892e16c533
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 9 deletions

View file

@ -40,6 +40,7 @@
- Bugfix: Fixed timestamps missing on channel point redemption messages (#1943)
- Bugfix: Fixed tooltip didn't show in `EmotePopup` depending on the `Link preview` setting enabled or no (#2008)
- Bugfix: Fixed Stream thumbnail not updating after using the "Change channel" feature (#2074, #2080)
- Bugfix: Fixed previous link info not updating after `Link information` setting is enabled (#2054)
- Bugfix: Fix Tab key not working in the Ctrl+K Quick Switcher (#2065)
- Bugfix: Fix bug preventing moderator actions when viewing a user card from the search window (#1089)

View file

@ -24,6 +24,7 @@
#include "messages/MessageElement.hpp"
#include "messages/layouts/MessageLayout.hpp"
#include "messages/layouts/MessageLayoutElement.hpp"
#include "providers/LinkResolver.hpp"
#include "providers/twitch/TwitchChannel.hpp"
#include "providers/twitch/TwitchIrcServer.hpp"
#include "singletons/Resources.hpp"
@ -1379,13 +1380,13 @@ void ChannelView::mouseMoveEvent(QMouseEvent *event)
}
}
const auto &tooltip = hoverLayoutElement->getCreator().getTooltip();
auto element = &hoverLayoutElement->getCreator();
bool isLinkValid = hoverLayoutElement->getLink().isValid();
auto emoteElement =
dynamic_cast<const EmoteElement *>(&hoverLayoutElement->getCreator());
auto emoteElement = dynamic_cast<const EmoteElement *>(element);
if (tooltip.isEmpty() || (isLinkValid && emoteElement == nullptr &&
!getSettings()->linkInfoTooltip))
if (element->getTooltip().isEmpty() ||
(isLinkValid && emoteElement == nullptr &&
!getSettings()->linkInfoTooltip))
{
tooltipWidget->hide();
}
@ -1393,8 +1394,7 @@ void ChannelView::mouseMoveEvent(QMouseEvent *event)
{
auto &tooltipPreviewImage = TooltipPreviewImage::instance();
tooltipPreviewImage.setImageScale(0, 0);
auto badgeElement = dynamic_cast<const BadgeElement *>(
&hoverLayoutElement->getCreator());
auto badgeElement = dynamic_cast<const BadgeElement *>(element);
if ((badgeElement || emoteElement) &&
getSettings()->emotesTooltipPreview.getValue())
@ -1420,7 +1420,21 @@ void ChannelView::mouseMoveEvent(QMouseEvent *event)
}
else
{
auto element = &hoverLayoutElement->getCreator();
if (element->getTooltip() == "No link info loaded")
{
std::weak_ptr<MessageLayout> weakLayout = layout;
LinkResolver::getLinkInfo(
element->getLink().value, nullptr,
[weakLayout, element](QString tooltipText,
Link originalLink,
ImagePtr thumbnail) {
auto shared = weakLayout.lock();
if (!shared)
return;
element->setTooltip(tooltipText);
element->setThumbnail(thumbnail);
});
}
auto thumbnailSize = getSettings()->thumbnailSize;
if (!thumbnailSize)
{
@ -1448,7 +1462,7 @@ void ChannelView::mouseMoveEvent(QMouseEvent *event)
tooltipWidget->moveTo(this, event->globalPos());
tooltipWidget->setWordWrap(isLinkValid);
tooltipWidget->setText(tooltip);
tooltipWidget->setText(element->getTooltip());
tooltipWidget->adjustSize();
tooltipWidget->show();
tooltipWidget->raise();