diff --git a/lib/settings b/lib/settings index 89f767a5e..2fa3adf42 160000 --- a/lib/settings +++ b/lib/settings @@ -1 +1 @@ -Subproject commit 89f767a5ed2ea5724a4bf5b6170365e5d069634a +Subproject commit 2fa3adf42da988dc2a34b9b625654aa08e906d4f diff --git a/src/twitch/twitchchannel.cpp b/src/twitch/twitchchannel.cpp index 96ca281e3..869912427 100644 --- a/src/twitch/twitchchannel.cpp +++ b/src/twitch/twitchchannel.cpp @@ -2,6 +2,7 @@ #include "debug/log.hpp" #include "singletons/emotemanager.hpp" #include "singletons/ircmanager.hpp" +#include "singletons/settingsmanager.hpp" #include "twitch/twitchmessagebuilder.hpp" #include "util/urlfetch.hpp" diff --git a/src/twitch/twitchmessagebuilder.cpp b/src/twitch/twitchmessagebuilder.cpp index 7581c3c0b..e99a0db33 100644 --- a/src/twitch/twitchmessagebuilder.cpp +++ b/src/twitch/twitchmessagebuilder.cpp @@ -170,7 +170,7 @@ MessagePtr TwitchMessageBuilder::parse() textColor = MessageColor(MessageColor::Link); } - this->emplace(string, textColor) // + this->emplace(string, MessageElement::Text, textColor) // ->setLink(link); } else { // is emoji this->emplace(emoteData, EmoteElement::EmojiAll); diff --git a/src/widgets/basewindow.cpp b/src/widgets/basewindow.cpp index 36f693db1..54fbb780e 100644 --- a/src/widgets/basewindow.cpp +++ b/src/widgets/basewindow.cpp @@ -150,12 +150,12 @@ void BaseWindow::addTitleBarButton(const QString &text) void BaseWindow::changeEvent(QEvent *) { - TooltipWidget::getInstance()->hide(); + // TooltipWidget::getInstance()->hide(); } void BaseWindow::leaveEvent(QEvent *) { - TooltipWidget::getInstance()->hide(); + // TooltipWidget::getInstance()->hide(); } #ifdef USEWINSDK diff --git a/src/widgets/tooltipwidget.cpp b/src/widgets/tooltipwidget.cpp index 99ea114b1..dafe6511b 100644 --- a/src/widgets/tooltipwidget.cpp +++ b/src/widgets/tooltipwidget.cpp @@ -2,6 +2,7 @@ #include "singletons/fontmanager.hpp" #include "singletons/thememanager.hpp" +#include #include #include #include @@ -13,33 +14,40 @@ TooltipWidget::TooltipWidget(BaseWidget *parent) : BaseWindow(parent) , displayText(new QLabel()) { - QColor black(0, 0, 0); - QColor white(255, 255, 255); - - QPalette palette; - palette.setColor(QPalette::WindowText, white); - palette.setColor(QPalette::Background, black); - this->setPalette(palette); - this->displayText->setStyleSheet("color: #ffffff"); + this->setStyleSheet("color: #fff; background: #000"); this->setWindowOpacity(0.8); - this->setFont(singletons::FontManager::getInstance().getFont( - singletons::FontManager::Type::MediumSmall, this->getDpiMultiplier())); + this->updateFont(); this->setAttribute(Qt::WA_ShowWithoutActivating); this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | - Qt::X11BypassWindowManagerHint); + Qt::X11BypassWindowManagerHint | Qt::BypassWindowManagerHint | + Qt::SubWindow); displayText->setAlignment(Qt::AlignHCenter); - displayText->setText("lmao xD"); + displayText->setText("tooltip text"); auto layout = new QVBoxLayout(); layout->setContentsMargins(10, 5, 10, 5); layout->addWidget(displayText); this->setLayout(layout); - singletons::FontManager::getInstance().fontChanged.connect([this] { - this->setFont(singletons::FontManager::getInstance().getFont( - singletons::FontManager::Type::MediumSmall, this->getDpiMultiplier())); - }); + this->fontChangedConnection = + singletons::FontManager::getInstance().fontChanged.connect([this] { this->updateFont(); }); +} + +TooltipWidget::~TooltipWidget() +{ + this->fontChangedConnection.disconnect(); +} + +void TooltipWidget::dpiMultiplierChanged(float, float) +{ + this->updateFont(); +} + +void TooltipWidget::updateFont() +{ + this->setFont(singletons::FontManager::getInstance().getFont( + singletons::FontManager::Type::MediumSmall, this->getDpiMultiplier())); } void TooltipWidget::setText(QString text) @@ -51,7 +59,9 @@ void TooltipWidget::moveTo(QWidget *parent, QPoint point) { point.rx() += 16; point.ry() += 16; + this->move(point); + this->moveIntoDesktopRect(parent); } void TooltipWidget::resizeEvent(QResizeEvent *) @@ -64,22 +74,34 @@ void TooltipWidget::moveIntoDesktopRect(QWidget *parent) QDesktopWidget *desktop = QApplication::desktop(); QRect s = desktop->screenGeometry(parent); - QRect w = this->geometry(); + QPoint p = this->pos(); - if (w.left() < s.left()) { - w.moveLeft(s.left()); + if (p.x() < s.left()) { + p.setX(s.left()); } - if (w.right() < s.right()) { - w.moveRight(s.right()); + if (p.y() < s.top()) { + p.setY(s.top()); } - if (w.top() < s.top()) { - w.moveTop(s.top()); + if (p.x() + this->width() > s.right()) { + p.setX(s.right() - this->width()); } - if (w.bottom() < s.bottom()) { - w.moveBottom(s.bottom()); + if (p.y() + this->height() > s.bottom()) { + p.setY(s.bottom() - this->height()); } - this->setGeometry(w); + if (p != this->pos()) { + this->move(p); + } +} + +void TooltipWidget::changeEvent(QEvent *) +{ + // clear parents event +} + +void TooltipWidget::leaveEvent(QEvent *) +{ + // clear parents event } } // namespace widgets } // namespace chatterino diff --git a/src/widgets/tooltipwidget.hpp b/src/widgets/tooltipwidget.hpp index 5c1ede8cc..3b440dd3d 100644 --- a/src/widgets/tooltipwidget.hpp +++ b/src/widgets/tooltipwidget.hpp @@ -3,6 +3,7 @@ #include #include +#include namespace chatterino { namespace widgets { @@ -12,6 +13,7 @@ class TooltipWidget : public BaseWindow Q_OBJECT public: TooltipWidget(BaseWidget *parent = nullptr); + ~TooltipWidget(); void setText(QString text); void moveTo(QWidget *widget, QPoint point); @@ -27,11 +29,16 @@ public: protected: virtual void resizeEvent(QResizeEvent *) override; + virtual void changeEvent(QEvent *) override; + virtual void leaveEvent(QEvent *) override; + virtual void dpiMultiplierChanged(float, float) override; private: QLabel *displayText; + pajlada::Signals::Connection fontChangedConnection; void moveIntoDesktopRect(QWidget *parent); + void updateFont(); }; } // namespace widgets