Skip to content
Snippets Groups Projects
Commit 6e0ae807 authored by Konstantinos Sideris's avatar Konstantinos Sideris
Browse files

Update badge counter only on change

parent 0c0ac68b
No related branches found
No related tags found
No related merge requests found
......@@ -33,7 +33,7 @@ public:
virtual void paint(QPainter *p, const QRect &rect, QIcon::Mode mode, QIcon::State state);
virtual QIconEngine *clone() const;
virtual QList<QSize> availableSizes(QIcon::Mode mode, QIcon::State state) const;
virtual QPixmap pixmap(const QSize& size, QIcon::Mode mode, QIcon::State state);
virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
int msgCount = 0;
......
......@@ -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_);
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment