started fixing clicking emtoes

This commit is contained in:
fourtf 2018-01-24 20:58:53 +01:00
parent 74fd6c9663
commit 05339aad2d
6 changed files with 26 additions and 3 deletions

View file

@ -30,6 +30,11 @@ EmotePopup::EmotePopup(singletons::ThemeManager &themeManager)
tabs->addTab(this->viewEmojis, "Emojis");
this->loadEmojis();
this->viewEmotes->linkClicked.connect(
[this](const Link &link) { this->linkClicked.invoke(link); });
this->viewEmojis->linkClicked.connect(
[this](const Link &link) { this->linkClicked.invoke(link); });
}
void EmotePopup::loadChannel(ChannelPtr _channel)

View file

@ -4,6 +4,8 @@
#include "widgets/basewindow.hpp"
#include "widgets/helper/channelview.hpp"
#include <pajlada/signals/signal.hpp>
namespace chatterino {
namespace widgets {
@ -15,6 +17,8 @@ public:
void loadChannel(ChannelPtr channel);
void loadEmojis();
pajlada::Signals::Signal<messages::Link> linkClicked;
private:
ChannelView *viewEmotes;
ChannelView *viewEmojis;

View file

@ -834,6 +834,8 @@ void ChannelView::mouseReleaseEvent(QMouseEvent *event)
this->channel->sendMessage(value);
}
}
this->linkClicked.invoke(link);
}
bool ChannelView::tryGetMessageAt(QPoint p, std::shared_ptr<messages::MessageLayout> &_message,

View file

@ -50,6 +50,7 @@ public:
boost::signals2::signal<void(QMouseEvent *)> mouseDown;
boost::signals2::signal<void()> selectionChanged;
pajlada::Signals::NoArgSignal highlightedMessageReceived;
pajlada::Signals::Signal<const messages::Link &> linkClicked;
protected:
virtual void refreshTheme() override;

View file

@ -52,8 +52,13 @@ SplitInput::SplitInput(Split *_chatWidget)
"/>");
connect(&this->emotesLabel, &RippleEffectLabel::clicked, [this] {
if (this->emotePopup == nullptr) {
this->emotePopup = new EmotePopup(this->themeManager);
if (!this->emotePopup) {
this->emotePopup = std::make_unique<EmotePopup>(this->themeManager);
this->emotePopup->linkClicked.connect([this](const messages::Link &link) {
if (link.getType() == messages::Link::InsertText) {
this->insertText(link.getValue());
}
});
}
this->emotePopup->resize((int)(300 * this->emotePopup->getDpiMultiplier()),
@ -210,6 +215,11 @@ QString SplitInput::getInputText() const
return this->textInput.toPlainText();
}
void SplitInput::insertText(const QString &text)
{
this->textInput.insertPlainText(text);
}
void SplitInput::refreshTheme()
{
QPalette palette;

View file

@ -27,6 +27,7 @@ public:
void clearSelection();
QString getInputText() const;
void insertText(const QString &text);
pajlada::Signals::Signal<const QString &> textChanged;
@ -38,7 +39,7 @@ protected:
private:
Split *const chatWidget;
EmotePopup *emotePopup = nullptr;
std::unique_ptr<EmotePopup> emotePopup;
std::vector<pajlada::Signals::ScopedConnection> managedConnections;
QHBoxLayout hbox;