mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
Update badge counter only on change
This commit is contained in:
parent
0c0ac68bc2
commit
6e0ae807d5
3 changed files with 14 additions and 12 deletions
|
@ -33,7 +33,7 @@ public:
|
||||||
virtual void paint(QPainter *p, const QRect &rect, QIcon::Mode mode, QIcon::State state);
|
virtual void paint(QPainter *p, const QRect &rect, QIcon::Mode mode, QIcon::State state);
|
||||||
virtual QIconEngine *clone() const;
|
virtual QIconEngine *clone() const;
|
||||||
virtual QList<QSize> availableSizes(QIcon::Mode mode, QIcon::State state) 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;
|
int msgCount = 0;
|
||||||
|
|
||||||
|
|
|
@ -380,14 +380,12 @@ TimelineView::init()
|
||||||
scrollbar_ = new ScrollBar(scroll_area_);
|
scrollbar_ = new ScrollBar(scroll_area_);
|
||||||
scroll_area_->setVerticalScrollBar(scrollbar_);
|
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_->addStretch(1);
|
||||||
scroll_layout_->setSpacing(0);
|
scroll_layout_->setSpacing(0);
|
||||||
|
|
||||||
scroll_widget_->setLayout(scroll_layout_);
|
|
||||||
|
|
||||||
scroll_area_->setWidget(scroll_widget_);
|
scroll_area_->setWidget(scroll_widget_);
|
||||||
|
|
||||||
top_layout_->addWidget(scroll_area_);
|
top_layout_->addWidget(scroll_area_);
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QTimer>
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
#include "TrayIcon.h"
|
#include "TrayIcon.h"
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ MsgCountComposedIcon::availableSizes(QIcon::Mode mode, QIcon::State state) const
|
||||||
}
|
}
|
||||||
|
|
||||||
QPixmap
|
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);
|
QImage img(size, QImage::Format_ARGB32);
|
||||||
img.fill(qRgba(0, 0, 0, 0));
|
img.fill(qRgba(0, 0, 0, 0));
|
||||||
|
@ -132,15 +132,19 @@ TrayIcon::setUnreadCount(int count)
|
||||||
{
|
{
|
||||||
// Use the native badge counter in MacOS.
|
// Use the native badge counter in MacOS.
|
||||||
#if defined(Q_OS_MAC)
|
#if defined(Q_OS_MAC)
|
||||||
if (count == 0)
|
auto labelText = count == 0 ? "" : QString::number(count);
|
||||||
QtMac::setBadgeLabelText("");
|
|
||||||
else
|
if (labelText == QtMac::badgeLabelText())
|
||||||
QtMac::setBadgeLabelText(QString::number(count));
|
return;
|
||||||
|
|
||||||
|
QtMac::setBadgeLabelText(labelText);
|
||||||
#elif defined(Q_OS_WIN)
|
#elif defined(Q_OS_WIN)
|
||||||
// FIXME: Find a way to use Windows apis for the badge counter (if any).
|
// FIXME: Find a way to use Windows apis for the badge counter (if any).
|
||||||
#else
|
#else
|
||||||
|
if (count == icon_->msgCount)
|
||||||
|
return;
|
||||||
|
|
||||||
// Custom drawing on Linux.
|
// Custom drawing on Linux.
|
||||||
// FIXME: It doesn't seem to work on KDE.
|
|
||||||
MsgCountComposedIcon *tmp = static_cast<MsgCountComposedIcon *>(icon_->clone());
|
MsgCountComposedIcon *tmp = static_cast<MsgCountComposedIcon *>(icon_->clone());
|
||||||
tmp->msgCount = count;
|
tmp->msgCount = count;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue