From 0f44a2e0f4184add12d7bd0b1964a04e6638c603 Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Tue, 23 Oct 2018 10:32:13 +0200 Subject: [PATCH] re-enable link resolver, but fix the underlying issue in the "link changed" signal. The feature itself still doesn't work for me, but this code does the same thing. only thing that's really different is it also disconnects the signal properly once the TextLayoutElement is deleted --- src/messages/MessageElement.cpp | 3 +-- src/messages/MessageElement.hpp | 3 ++- src/messages/layouts/MessageLayoutElement.cpp | 11 +++++++++++ src/messages/layouts/MessageLayoutElement.hpp | 4 ++++ src/providers/LinkResolver.cpp | 2 -- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/messages/MessageElement.cpp b/src/messages/MessageElement.cpp index fc2f3c54e..fc6930f89 100644 --- a/src/messages/MessageElement.cpp +++ b/src/messages/MessageElement.cpp @@ -183,8 +183,7 @@ void TextElement::addToContainer(MessageLayoutContainer &container, // Should update it in MessageLayoutElement too! if (this->getLink().type == Link::Url) { - this->linkChanged.connect( - [this, e]() { e->setLink(this->getLink()); }); + static_cast(e)->listenToLinkChanges(); } return e; }; diff --git a/src/messages/MessageElement.hpp b/src/messages/MessageElement.hpp index e9032f958..cfd4ad3dd 100644 --- a/src/messages/MessageElement.hpp +++ b/src/messages/MessageElement.hpp @@ -135,10 +135,11 @@ public: virtual void addToContainer(MessageLayoutContainer &container, MessageElementFlags flags) = 0; + pajlada::Signals::NoArgSignal linkChanged; + protected: MessageElement(MessageElementFlags flags); bool trailingSpace = true; - pajlada::Signals::NoArgSignal linkChanged; private: QString text_; diff --git a/src/messages/layouts/MessageLayoutElement.cpp b/src/messages/layouts/MessageLayoutElement.cpp index 570324fd8..aaefca5ed 100644 --- a/src/messages/layouts/MessageLayoutElement.cpp +++ b/src/messages/layouts/MessageLayoutElement.cpp @@ -181,6 +181,17 @@ TextLayoutElement::TextLayoutElement(MessageElement &_creator, QString &_text, this->setText(_text); } +void TextLayoutElement::listenToLinkChanges() +{ + this->managedConnections_.emplace_back( + static_cast(this->getCreator()) + .linkChanged.connect([this]() { + // log("Old link: {}", this->getCreator().getLink().value); + // log("This link: {}", this->getLink().value); + this->setLink(this->getCreator().getLink()); // + })); +} + void TextLayoutElement::addCopyTextToString(QString &str, int from, int to) const { diff --git a/src/messages/layouts/MessageLayoutElement.hpp b/src/messages/layouts/MessageLayoutElement.hpp index bdf490437..775328a46 100644 --- a/src/messages/layouts/MessageLayoutElement.hpp +++ b/src/messages/layouts/MessageLayoutElement.hpp @@ -83,6 +83,8 @@ public: const QSize &size, QColor color, FontStyle style, float scale); + void listenToLinkChanges(); + protected: void addCopyTextToString(QString &str, int from = 0, int to = INT_MAX) const override; @@ -96,6 +98,8 @@ private: QColor color; FontStyle style; float scale; + + std::vector managedConnections_; }; // TEXT ICON diff --git a/src/providers/LinkResolver.cpp b/src/providers/LinkResolver.cpp index feab70324..069dba691 100644 --- a/src/providers/LinkResolver.cpp +++ b/src/providers/LinkResolver.cpp @@ -12,8 +12,6 @@ namespace chatterino { void LinkResolver::getLinkInfo( const QString url, std::function successCallback) { - return; - QString requestUrl("https://braize.pajlada.com/chatterino/link_resolver/" + QUrl::toPercentEncoding(url, "", "/:"));