diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-10-01 18:15:23 +0300 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-10-01 18:15:23 +0300 |
commit | 6e0ae807d59ae5c7d110c8feae031584825669ce (patch) | |
tree | e0d11998c7b4c1ba805b4a6dea53d5752e53ef07 /src | |
parent | Remove extra clang-format options (diff) | |
download | nheko-6e0ae807d59ae5c7d110c8feae031584825669ce.tar.xz |
Update badge counter only on change
Diffstat (limited to 'src')
-rw-r--r-- | src/TimelineView.cc | 6 | ||||
-rw-r--r-- | src/TrayIcon.cc | 18 |
2 files changed, 13 insertions, 11 deletions
diff --git a/src/TimelineView.cc b/src/TimelineView.cc index 8b255cde..032d1310 100644 --- a/src/TimelineView.cc +++ b/src/TimelineView.cc @@ -380,14 +380,12 @@ TimelineView::init() scrollbar_ = new ScrollBar(scroll_area_); scroll_area_->setVerticalScrollBar(scrollbar_); - scroll_widget_ = new QWidget(); + scroll_widget_ = new QWidget(this); - scroll_layout_ = new QVBoxLayout(); + scroll_layout_ = new QVBoxLayout(scroll_widget_); scroll_layout_->addStretch(1); scroll_layout_->setSpacing(0); - scroll_widget_->setLayout(scroll_layout_); - scroll_area_->setWidget(scroll_widget_); top_layout_->addWidget(scroll_area_); diff --git a/src/TrayIcon.cc b/src/TrayIcon.cc index 8d3dc99f..1360cc4e 100644 --- a/src/TrayIcon.cc +++ b/src/TrayIcon.cc @@ -16,8 +16,8 @@ */ #include <QApplication> -#include <QTimer> #include <QList> +#include <QTimer> #include "TrayIcon.h" @@ -89,7 +89,7 @@ MsgCountComposedIcon::availableSizes(QIcon::Mode mode, QIcon::State state) const } QPixmap -MsgCountComposedIcon::pixmap(const QSize& size, QIcon::Mode mode, QIcon::State state) +MsgCountComposedIcon::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) { QImage img(size, QImage::Format_ARGB32); img.fill(qRgba(0, 0, 0, 0)); @@ -132,15 +132,19 @@ TrayIcon::setUnreadCount(int count) { // Use the native badge counter in MacOS. #if defined(Q_OS_MAC) - if (count == 0) - QtMac::setBadgeLabelText(""); - else - QtMac::setBadgeLabelText(QString::number(count)); + auto labelText = count == 0 ? "" : QString::number(count); + + if (labelText == QtMac::badgeLabelText()) + return; + + QtMac::setBadgeLabelText(labelText); #elif defined(Q_OS_WIN) // FIXME: Find a way to use Windows apis for the badge counter (if any). #else + if (count == icon_->msgCount) + return; + // Custom drawing on Linux. - // FIXME: It doesn't seem to work on KDE. MsgCountComposedIcon *tmp = static_cast<MsgCountComposedIcon *>(icon_->clone()); tmp->msgCount = count; |