diff --git a/src/singletons/thememanager.cpp b/src/singletons/thememanager.cpp index d133ee885..97de43f21 100644 --- a/src/singletons/thememanager.cpp +++ b/src/singletons/thememanager.cpp @@ -86,19 +86,26 @@ void ThemeManager::actuallyUpdate(double hue, double multiplier) this->messages.textColors.regular = isLight ? "#000" : "#fff"; /// TABS - // text, {regular, hover, unfocused} - if (lightWin) { this->tabs.regular = {fg, {bg, QColor("#ccc"), bg}}; - this->tabs.newMessage = {fg, {bg, QColor("#ccc"), bg}}; - this->tabs.highlighted = {fg, {bg, QColor("#ccc"), bg}}; - this->tabs.selected = {QColor("#fff"), {QColor("#333"), QColor("#333"), QColor("#666")}}; + this->tabs.newMessage = { + fg, + {QBrush(blendColors(themeColor, "#ccc", 0.9), Qt::FDiagPattern), + QBrush(blendColors(themeColor, "#ccc", 0.9), Qt::FDiagPattern), + QBrush(blendColors(themeColorNoSat, "#ccc", 0.9), Qt::FDiagPattern)}}; + this->tabs.highlighted = {fg, {QColor("#ccc"), QColor("#ccc"), QColor("#bbb")}}; + this->tabs.selected = {QColor("#fff"), + {QColor("#777"), QColor("#777"), QColor("#888")}}; } else { this->tabs.regular = {fg, {bg, QColor("#555"), bg}}; - this->tabs.newMessage = {fg, {bg, QColor("#555"), bg}}; - this->tabs.highlighted = {fg, {bg, QColor("#555"), bg}}; - // this->tabs.selected = {"#000", {themeColor, themeColor, themeColorNoSat}}; - this->tabs.selected = {QColor("#000"), {QColor("#999"), QColor("#999"), QColor("#888")}}; + this->tabs.newMessage = { + fg, + {QBrush(blendColors(themeColor, "#666", 0.7), Qt::FDiagPattern), + QBrush(blendColors(themeColor, "#666", 0.5), Qt::FDiagPattern), + QBrush(blendColors(themeColorNoSat, "#666", 0.7), Qt::FDiagPattern)}}; + this->tabs.highlighted = {fg, {QColor("#777"), QColor("#777"), QColor("#666")}}; + this->tabs.selected = {QColor("#000"), + {QColor("#999"), QColor("#999"), QColor("#888")}}; } } diff --git a/src/widgets/helper/channelview.cpp b/src/widgets/helper/channelview.cpp index 3deceb9fe..07999172d 100644 --- a/src/widgets/helper/channelview.cpp +++ b/src/widgets/helper/channelview.cpp @@ -359,8 +359,12 @@ void ChannelView::setChannel(ChannelPtr newChannel) } } - if (message->flags & ~Message::DoNotTriggerNotification) { - this->highlightedMessageReceived.invoke(); + if (!(message->flags & Message::DoNotTriggerNotification)) { + if (message->flags & Message::Highlighted) { + this->tabHighlightRequested.invoke(HighlightState::Highlighted); + } else { + this->tabHighlightRequested.invoke(HighlightState::NewMessage); + } } this->scrollBar.addHighlight(message->getScrollBarHighlight()); diff --git a/src/widgets/helper/channelview.hpp b/src/widgets/helper/channelview.hpp index 0db184ac9..b231c406c 100644 --- a/src/widgets/helper/channelview.hpp +++ b/src/widgets/helper/channelview.hpp @@ -51,7 +51,7 @@ public: pajlada::Signals::Signal mouseDown; pajlada::Signals::NoArgSignal selectionChanged; - pajlada::Signals::NoArgSignal highlightedMessageReceived; + pajlada::Signals::Signal tabHighlightRequested; pajlada::Signals::Signal linkClicked; protected: diff --git a/src/widgets/notebook.hpp b/src/widgets/notebook.hpp index af1c207c6..f200cbcbb 100644 --- a/src/widgets/notebook.hpp +++ b/src/widgets/notebook.hpp @@ -19,8 +19,6 @@ class Notebook : public BaseWidget Q_OBJECT public: - enum HighlightType { none, highlighted, newMessage }; - explicit Notebook(Window *parent, bool _showButtons); SplitContainer *addNewPage(bool select = false); diff --git a/src/widgets/splitcontainer.cpp b/src/widgets/splitcontainer.cpp index de37c6050..8cefb5b57 100644 --- a/src/widgets/splitcontainer.cpp +++ b/src/widgets/splitcontainer.cpp @@ -66,6 +66,8 @@ int SplitContainer::splitCount() const std::pair SplitContainer::removeFromLayout(Split *widget) { + widget->getChannelView().tabHighlightRequested.disconnectAll(); + // remove reference to chat widget from chatWidgets vector auto it = std::find(std::begin(this->splits), std::end(this->splits), widget); if (it != std::end(this->splits)) { @@ -150,6 +152,8 @@ std::pair SplitContainer::removeFromLayout(Split *widget) void SplitContainer::addToLayout(Split *widget, std::pair position) { this->splits.push_back(widget); + widget->getChannelView().tabHighlightRequested.connect( + [this](HighlightState state) { this->tab->setHighlightState(state); }); this->refreshTitle(); @@ -506,11 +510,6 @@ Split *SplitContainer::createChatWidget() { auto split = new Split(this); - split->getChannelView().highlightedMessageReceived.connect([this] { - // fourtf: error potentionally here - this->tab->setHighlightState(HighlightState::Highlighted); // - }); - return split; }