From c112e33befd55f31c2e9614c9d933c4e32188713 Mon Sep 17 00:00:00 2001 From: shaojun Date: Fri, 6 Sep 2019 14:44:07 +0800 Subject: [PATCH] feat(plugin):plugin layout --- frame/panel/mainpanelcontrol.cpp | 48 +++++++++++++++++++-------- frame/panel/mainpanelcontrol.h | 1 + frame/window/mainwindow.cpp | 3 +- interfaces/constants.h | 3 ++ plugins/datetime/datetimewidget.cpp | 36 +++++++++++++++----- plugins/network/item/wireditem.cpp | 14 ++++++-- plugins/network/item/wirelessitem.cpp | 25 +++++++++----- plugins/onboard/onboarditem.cpp | 26 +++++++++------ plugins/shutdown/pluginwidget.cpp | 41 +++++++++++++---------- plugins/trash/trashwidget.cpp | 16 +++++++-- plugins/tray/abstracttraywidget.cpp | 24 +++++++++++--- plugins/tray/abstracttraywidget.h | 1 + 12 files changed, 169 insertions(+), 69 deletions(-) diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index 5a87cc5ad..8e39124ec 100644 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -65,27 +65,38 @@ MainPanelControl::~MainPanelControl() void MainPanelControl::init() { - m_mainPanelLayout->setMargin(0); - m_mainPanelLayout->setContentsMargins(0, 0, 0, 0); - m_fixedAreaLayout->setMargin(0); - m_fixedAreaLayout->setContentsMargins(0, 0, 0, 0); - m_pluginLayout->setMargin(0); - m_pluginLayout->setContentsMargins(10, 10, 10, 10); - m_trayAreaLayout->setMargin(0); - m_trayAreaLayout->setContentsMargins(10, 10, 10, 10); - m_appAreaSonLayout->setMargin(0); - m_appAreaSonLayout->setContentsMargins(0, 0, 0, 0); + // 主窗口 m_mainPanelLayout->addWidget(m_fixedAreaWidget); - m_fixedAreaWidget->setLayout(m_fixedAreaLayout); m_mainPanelLayout->addWidget(m_appAreaWidget); m_mainPanelLayout->addWidget(m_trayAreaWidget); - m_trayAreaWidget->setLayout(m_trayAreaLayout); m_mainPanelLayout->addWidget(m_pluginAreaWidget); - m_pluginAreaWidget->setLayout(m_pluginLayout); - m_appAreaSonWidget->setLayout(m_appAreaSonLayout); + + m_mainPanelLayout->setMargin(0); + m_mainPanelLayout->setContentsMargins(0, 0, 0, 0); + m_mainPanelLayout->setSpacing(0); + + // 固定区域 + m_fixedAreaWidget->setLayout(m_fixedAreaLayout); + m_fixedAreaLayout->setMargin(0); + m_fixedAreaLayout->setContentsMargins(0, 0, 0, 0); m_fixedAreaLayout->setSpacing(0); + + // 应用程序 + m_appAreaSonWidget->setLayout(m_appAreaSonLayout); + m_appAreaSonLayout->setMargin(0); + m_appAreaSonLayout->setContentsMargins(0, 0, 0, 0); m_appAreaSonLayout->setSpacing(0); + + // 托盘 + m_trayAreaWidget->setLayout(m_trayAreaLayout); + m_trayAreaLayout->setMargin(0); + m_trayAreaLayout->setContentsMargins(10, 10, 10, 10); m_trayAreaLayout->setSpacing(0); + + // 插件 + m_pluginAreaWidget->setLayout(m_pluginLayout); + m_pluginLayout->setMargin(0); + m_pluginLayout->setContentsMargins(0, 10, 10, 10); m_pluginLayout->setSpacing(10); } @@ -111,6 +122,7 @@ void MainPanelControl::updateMainPanelLayout() m_pluginLayout->setDirection(QBoxLayout::LeftToRight); m_trayAreaLayout->setDirection(QBoxLayout::LeftToRight); m_appAreaSonLayout->setDirection(QBoxLayout::LeftToRight); + m_pluginLayout->setContentsMargins(0, 10, 10, 10); break; case Position::Right: case Position::Left: @@ -123,6 +135,7 @@ void MainPanelControl::updateMainPanelLayout() m_pluginLayout->setDirection(QBoxLayout::TopToBottom); m_trayAreaLayout->setDirection(QBoxLayout::TopToBottom); m_appAreaSonLayout->setDirection(QBoxLayout::TopToBottom); + m_pluginLayout->setContentsMargins(10, 0, 10, 10); break; } } @@ -157,6 +170,8 @@ void MainPanelControl::addTrayAreaItem(int index, QWidget *wdg) void MainPanelControl::addPluginAreaItem(int index, QWidget *wdg) { m_pluginLayout->insertWidget(index, wdg); + QTimer::singleShot(50, this, [ = ] {m_pluginAreaWidget->adjustSize();}); + } void MainPanelControl::removeFixedAreaItem(QWidget *wdg) @@ -647,3 +662,8 @@ void MainPanelControl::onPositionChanged() { updateMainPanelLayout(); } + +void MainPanelControl::itemUpdated(DockItem *item) +{ + item->parentWidget()->adjustSize(); +} diff --git a/frame/panel/mainpanelcontrol.h b/frame/panel/mainpanelcontrol.h index ed8f31ca3..36364df57 100644 --- a/frame/panel/mainpanelcontrol.h +++ b/frame/panel/mainpanelcontrol.h @@ -90,6 +90,7 @@ public slots: void removeItem(DockItem *item); void onDisplayModeChanged(); void onPositionChanged(); + void itemUpdated(DockItem *item); private: QBoxLayout *m_mainPanelLayout; diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 35ef9f435..86516cf3f 100644 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -40,7 +40,7 @@ #define SNI_WATCHER_SERVICE "org.kde.StatusNotifierWatcher" #define SNI_WATCHER_PATH "/StatusNotifierWatcher" -#define MAINWINDOW_MAX_SIZE (100) +#define MAINWINDOW_MAX_SIZE DOCK_MAX_SIZE #define MAINWINDOW_MIN_SIZE (40) #define DRAG_AREA_SIZE (5) @@ -468,6 +468,7 @@ void MainWindow::initConnections() connect(DockItemManager::instance(), &DockItemManager::itemInserted, m_mainPanel, &MainPanelControl::insertItem, Qt::DirectConnection); connect(DockItemManager::instance(), &DockItemManager::itemRemoved, m_mainPanel, &MainPanelControl::removeItem, Qt::DirectConnection); + connect(DockItemManager::instance(), &DockItemManager::itemUpdated, m_mainPanel, &MainPanelControl::itemUpdated, Qt::DirectConnection); connect(DockItemManager::instance(), &DockItemManager::requestRefershWindowVisible, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection); connect(DockItemManager::instance(), &DockItemManager::requestWindowAutoHide, m_settings, &DockSettings::setAutoHide); connect(m_mainPanel, &MainPanelControl::itemMoved, DockItemManager::instance(), &DockItemManager::itemMoved, Qt::DirectConnection); diff --git a/interfaces/constants.h b/interfaces/constants.h index 84d967197..9814db480 100644 --- a/interfaces/constants.h +++ b/interfaces/constants.h @@ -41,6 +41,9 @@ namespace Dock { // 插件最小尺寸,图标采用深色 #define PLUGIN_MIN_ICON_NAME "-dark" + +// dock最大尺寸 +#define DOCK_MAX_SIZE 100 /// /// \brief The DisplayMode enum /// spec dock display mode diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp index e6443faaa..cec024ae5 100644 --- a/plugins/datetime/datetimewidget.cpp +++ b/plugins/datetime/datetimewidget.cpp @@ -46,6 +46,8 @@ DatetimeWidget::DatetimeWidget(QWidget *parent) int dateHeight = fm_date.boundingRect("8888/88/88").height(); m_timeOffset = (timeHeight - dateHeight) / 2; + + setMinimumSize(PLUGIN_BACKGROUND_MIN_SIZE, PLUGIN_BACKGROUND_MIN_SIZE); } void DatetimeWidget::set24HourFormat(const bool value) @@ -65,16 +67,35 @@ void DatetimeWidget::set24HourFormat(const bool value) QSize DatetimeWidget::sizeHint() const { - QFontMetrics fm(qApp->font()); - - if (m_24HourFormat) - return fm.boundingRect("8888/88/88").size() + QSize(30, 10); - else - return fm.boundingRect("88:88 A.A.").size() + QSize(30, 20); + // 最大尺寸 + QFontMetrics fm(TIME_FONT); + return fm.boundingRect("88:88 A.A.").size() + QSize(20, 20); } void DatetimeWidget::resizeEvent(QResizeEvent *e) { + const Dock::Position position = qApp->property(PROP_POSITION).value(); + + QFontMetrics fm(TIME_FONT); + QString format; + if (m_24HourFormat) + format = "hh:mm"; + else + format = "hh:mm AP"; + + QSize timeSize = fm.boundingRect(QDateTime::currentDateTime().toString(format)).size(); + QSize dateSize = QFontMetrics(DATE_FONT).boundingRect("0000/00/00").size(); + if (timeSize.width() < dateSize.width()) + timeSize.setWidth(dateSize.width()); + + if (position == Dock::Bottom || position == Dock::Top) { + setMaximumWidth(timeSize.width()); + setMaximumHeight(QWIDGETSIZE_MAX); + } else { + setMaximumWidth(QWIDGETSIZE_MAX); + setMaximumHeight(timeSize.height() * 2); + } + QWidget::resizeEvent(e); } @@ -82,9 +103,6 @@ void DatetimeWidget::paintEvent(QPaintEvent *e) { Q_UNUSED(e); - const auto ratio = devicePixelRatioF(); - const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value(); - const Dock::Position position = qApp->property(PROP_POSITION).value(); const QDateTime current = QDateTime::currentDateTime(); QPainter painter(this); diff --git a/plugins/network/item/wireditem.cpp b/plugins/network/item/wireditem.cpp index 377aea1bc..3f3b8a4f1 100644 --- a/plugins/network/item/wireditem.cpp +++ b/plugins/network/item/wireditem.cpp @@ -73,7 +73,7 @@ void WiredItem::paintEvent(QPaintEvent *e) QPainter painter(this); const auto ratio = devicePixelRatioF(); - const QRectF &rf = QRectF(pos(), QSize(std::min(width(), height()), std::min(width(), height()))); + const QRectF &rf = rect(); const QRectF &rfp = QRectF(m_icon.rect()); const int x = rf.center().x() - rfp.center().x() / ratio; const int y = rf.center().y() - rfp.center().y() / ratio; @@ -82,6 +82,16 @@ void WiredItem::paintEvent(QPaintEvent *e) void WiredItem::resizeEvent(QResizeEvent *e) { + const Dock::Position position = qApp->property(PROP_POSITION).value(); + // 保持横纵比 + if (position == Dock::Bottom || position == Dock::Top) { + setMaximumWidth(height()); + setMaximumHeight(QWIDGETSIZE_MAX); + } else { + setMaximumHeight(width()); + setMaximumWidth(QWIDGETSIZE_MAX); + } + DeviceItem::resizeEvent(e); m_delayTimer->start(); @@ -133,7 +143,7 @@ void WiredItem::reloadIcon() const quint64 index = QDateTime::currentMSecsSinceEpoch() / 200; const int num = (index % 5) + 1; m_icon = QIcon(QString(":/wired/resources/wired/network-wired-symbolic-connecting%1.svg").arg(num)) - .pixmap(iconSize * ratio, iconSize * ratio); + .pixmap(iconSize * ratio, iconSize * ratio); m_icon.setDevicePixelRatio(ratio); update(); return; diff --git a/plugins/network/item/wirelessitem.cpp b/plugins/network/item/wirelessitem.cpp index 52adf8bac..f15e58374 100644 --- a/plugins/network/item/wirelessitem.cpp +++ b/plugins/network/item/wirelessitem.cpp @@ -49,9 +49,9 @@ WirelessItem::WirelessItem(WirelessDevice *device) m_wirelessTips->setText(tr("No Network")); connect(m_refreshTimer, &QTimer::timeout, this, &WirelessItem::onRefreshTimeout); - connect(m_device, static_cast(&NetworkDevice::statusChanged), this, &WirelessItem::deviceStateChanged); - connect(static_cast(m_device.data()), &WirelessDevice::activeApInfoChanged, m_refreshTimer, static_cast(&QTimer::start)); - connect(static_cast(m_device.data()), &WirelessDevice::activeWirelessConnectionInfoChanged, m_refreshTimer, static_cast(&QTimer::start)); + connect(m_device, static_cast(&NetworkDevice::statusChanged), this, &WirelessItem::deviceStateChanged); + connect(static_cast(m_device.data()), &WirelessDevice::activeApInfoChanged, m_refreshTimer, static_cast(&QTimer::start)); + connect(static_cast(m_device.data()), &WirelessDevice::activeWirelessConnectionInfoChanged, m_refreshTimer, static_cast(&QTimer::start)); //QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection); QTimer::singleShot(0, this, &WirelessItem::refreshTips); @@ -104,8 +104,7 @@ void WirelessItem::paintEvent(QPaintEvent *e) pixmap.setDevicePixelRatio(ratio); QPainter painter(this); - if (displayMode == Dock::Fashion) - { + if (displayMode == Dock::Fashion) { QPixmap pixmap = backgroundPix(iconSize * ratio); pixmap.setDevicePixelRatio(ratio); painter.drawPixmap(rect().center() - pixmap.rect().center() / ratio, pixmap); @@ -122,6 +121,16 @@ void WirelessItem::resizeEvent(QResizeEvent *e) { DeviceItem::resizeEvent(e); + const Dock::Position position = qApp->property(PROP_POSITION).value(); + // 保持横纵比 + if (position == Dock::Bottom || position == Dock::Top) { + setMaximumWidth(height()); + setMaximumHeight(QWIDGETSIZE_MAX); + } else { + setMaximumHeight(width()); + setMaximumWidth(QWIDGETSIZE_MAX); + } + m_icons.clear(); } @@ -188,8 +197,8 @@ const QPixmap WirelessItem::iconPix(const Dock::DisplayMode displayMode, const i } QString key = QString("wireless-%1%2") - .arg(type) - .arg(displayMode == Dock::Fashion ? "" : "-symbolic"); + .arg(type) + .arg(displayMode == Dock::Fashion ? "" : "-symbolic"); if (state == NetworkDevice::DeviceStatus::Activated && !NetworkPlugin::isConnectivity()) { key = "network-wireless-offline-symbolic"; @@ -238,7 +247,7 @@ void WirelessItem::init() connect(m_APList, &WirelessList::requestWirelessScan, this, &WirelessItem::requestWirelessScan); connect(m_APList, &WirelessList::requestSetAppletVisible, this, &WirelessItem::requestSetAppletVisible); - QTimer::singleShot(0, this, [=]() { + QTimer::singleShot(0, this, [ = ]() { m_refreshTimer->start(); }); } diff --git a/plugins/onboard/onboarditem.cpp b/plugins/onboard/onboarditem.cpp index a4b62df72..30ad23252 100644 --- a/plugins/onboard/onboarditem.cpp +++ b/plugins/onboard/onboarditem.cpp @@ -38,7 +38,6 @@ OnboardItem::OnboardItem(QWidget *parent) { setMouseTracking(true); setMinimumSize(PLUGIN_BACKGROUND_MIN_SIZE, PLUGIN_BACKGROUND_MIN_SIZE); - setMaximumSize(PLUGIN_BACKGROUND_MAX_SIZE, PLUGIN_BACKGROUND_MAX_SIZE); } QSize OnboardItem::sizeHint() const @@ -61,14 +60,6 @@ void OnboardItem::paintEvent(QPaintEvent *e) QPainter painter(this); if (std::min(width(), height()) > PLUGIN_BACKGROUND_MIN_SIZE) { - painter.setRenderHint(QPainter::Antialiasing, true); - painter.setOpacity(0.5); - - DStyleHelper dstyle(style()); - const int radius = dstyle.pixelMetric(DStyle::PM_FrameRadius); - - QPainterPath path; - path.addRoundedRect(rect(), radius, radius); QColor color = QColor::fromRgb(40, 40, 40);; @@ -80,6 +71,19 @@ void OnboardItem::paintEvent(QPaintEvent *e) color = QColor::fromRgb(20, 20, 20); } + painter.setRenderHint(QPainter::Antialiasing, true); + painter.setOpacity(0.5); + + DStyleHelper dstyle(style()); + const int radius = dstyle.pixelMetric(DStyle::PM_FrameRadius); + + QPainterPath path; + + int minSize = std::min(width(), height()); + QRect rc(0, 0, minSize, minSize); + rc.moveTo(rect().center() - rc.center()); + + path.addRoundedRect(rc, radius, radius); painter.fillPath(path, color); } else { iconName.append(PLUGIN_MIN_ICON_NAME); @@ -142,10 +146,10 @@ void OnboardItem::resizeEvent(QResizeEvent *event) // 保持横纵比 if (position == Dock::Bottom || position == Dock::Top) { setMaximumWidth(height()); - setMaximumHeight(PLUGIN_BACKGROUND_MAX_SIZE); + setMaximumHeight(QWIDGETSIZE_MAX); } else { setMaximumHeight(width()); - setMaximumWidth(PLUGIN_BACKGROUND_MAX_SIZE); + setMaximumWidth(QWIDGETSIZE_MAX); } QWidget::resizeEvent(event); diff --git a/plugins/shutdown/pluginwidget.cpp b/plugins/shutdown/pluginwidget.cpp index 839b726ab..69555c93a 100644 --- a/plugins/shutdown/pluginwidget.cpp +++ b/plugins/shutdown/pluginwidget.cpp @@ -37,13 +37,12 @@ PluginWidget::PluginWidget(QWidget *parent) , m_pressed(false) { setMouseTracking(true); - setMinimumSize(PLUGIN_ICON_MIN_SIZE, PLUGIN_ICON_MIN_SIZE); - setMaximumSize(PLUGIN_BACKGROUND_MAX_SIZE, PLUGIN_BACKGROUND_MAX_SIZE); + setMinimumSize(PLUGIN_BACKGROUND_MIN_SIZE, PLUGIN_BACKGROUND_MIN_SIZE); } QSize PluginWidget::sizeHint() const { - return QSize(PLUGIN_ICON_MIN_SIZE, PLUGIN_ICON_MIN_SIZE); + return QSize(PLUGIN_BACKGROUND_MAX_SIZE, PLUGIN_BACKGROUND_MAX_SIZE); } void PluginWidget::paintEvent(QPaintEvent *e) @@ -56,17 +55,18 @@ void PluginWidget::paintEvent(QPaintEvent *e) QPainter painter(this); - QColor color = QColor::fromRgb(40, 40, 40);; - - if (m_hover) { - color = QColor::fromRgb(60, 60, 60); - } - - if (m_pressed) { - color = QColor::fromRgb(20, 20, 20); - } - if (rect().height() > PLUGIN_BACKGROUND_MIN_SIZE) { + + QColor color = QColor::fromRgb(40, 40, 40);; + + if (m_hover) { + color = QColor::fromRgb(60, 60, 60); + } + + if (m_pressed) { + color = QColor::fromRgb(20, 20, 20); + } + painter.setRenderHint(QPainter::Antialiasing, true); painter.setOpacity(0.5); @@ -74,7 +74,12 @@ void PluginWidget::paintEvent(QPaintEvent *e) const int radius = dstyle.pixelMetric(DStyle::PM_FrameRadius); QPainterPath path; - path.addRoundedRect(rect(), radius, radius); + + int minSize = std::min(width(), height()); + QRect rc(0, 0, minSize, minSize); + rc.moveTo(rect().center() - rc.center()); + + path.addRoundedRect(rc, radius, radius); painter.fillPath(path, color); } else { // 最小尺寸时,不画背景,采用深色图标 @@ -137,11 +142,11 @@ void PluginWidget::resizeEvent(QResizeEvent *event) const Dock::Position position = qApp->property(PROP_POSITION).value(); // 保持横纵比 if (position == Dock::Bottom || position == Dock::Top) { - setMinimumWidth(height()); - setMinimumHeight(PLUGIN_ICON_MIN_SIZE); + setMaximumWidth(height()); + setMaximumHeight(QWIDGETSIZE_MAX); } else { - setMinimumWidth(PLUGIN_ICON_MIN_SIZE); - setMinimumHeight(width()); + setMaximumHeight(width()); + setMaximumWidth(QWIDGETSIZE_MAX); } QWidget::resizeEvent(event); diff --git a/plugins/trash/trashwidget.cpp b/plugins/trash/trashwidget.cpp index 35736494b..778ac9721 100644 --- a/plugins/trash/trashwidget.cpp +++ b/plugins/trash/trashwidget.cpp @@ -47,6 +47,8 @@ TrashWidget::TrashWidget(QWidget *parent) updateIcon(); setAcceptDrops(true); + + setMinimumSize(PLUGIN_ICON_MIN_SIZE, PLUGIN_ICON_MIN_SIZE); } QWidget *TrashWidget::popupApplet() @@ -56,7 +58,7 @@ QWidget *TrashWidget::popupApplet() QSize TrashWidget::sizeHint() const { - return QSize(26, 26); + return QSize(DOCK_MAX_SIZE, DOCK_MAX_SIZE); } const QString TrashWidget::contextMenu() const @@ -172,6 +174,16 @@ void TrashWidget::paintEvent(QPaintEvent *e) void TrashWidget::resizeEvent(QResizeEvent *e) { + const Dock::Position position = qApp->property(PROP_POSITION).value(); + // 保持横纵比 + if (position == Dock::Bottom || position == Dock::Top) { + setMaximumWidth(height()); + setMaximumHeight(QWIDGETSIZE_MAX); + } else { + setMaximumHeight(width()); + setMaximumWidth(QWIDGETSIZE_MAX); + } + QWidget::resizeEvent(e); updateIcon(); @@ -188,7 +200,7 @@ void TrashWidget::updateIcon() if (displayMode == Dock::Efficient) iconString.append("-symbolic"); - const int size = displayMode == Dock::Fashion ? std::min(width(), height()) * 0.8 : 16; + const int size = std::min(width(), height()) ; QIcon icon = QIcon::fromTheme(iconString); m_icon = icon.pixmap(size * devicePixelRatioF(), size * devicePixelRatioF()); m_icon.setDevicePixelRatio(devicePixelRatioF()); diff --git a/plugins/tray/abstracttraywidget.cpp b/plugins/tray/abstracttraywidget.cpp index 43d5c5495..03b33128d 100644 --- a/plugins/tray/abstracttraywidget.cpp +++ b/plugins/tray/abstracttraywidget.cpp @@ -19,6 +19,7 @@ * along with this program. If not, see . */ +#include "constants.h" #include "abstracttraywidget.h" #include @@ -26,8 +27,8 @@ #include AbstractTrayWidget::AbstractTrayWidget(QWidget *parent, Qt::WindowFlags f) - : QWidget(parent, f), - m_handleMouseReleaseTimer(new QTimer(this)) + : QWidget(parent, f) + , m_handleMouseReleaseTimer(new QTimer(this)) { m_handleMouseReleaseTimer->setSingleShot(true); m_handleMouseReleaseTimer->setInterval(100); @@ -70,8 +71,8 @@ void AbstractTrayWidget::mouseReleaseEvent(QMouseEvent *e) } -void AbstractTrayWidget::handleMouseRelease() { - +void AbstractTrayWidget::handleMouseRelease() +{ Q_ASSERT(sender() == m_handleMouseReleaseTimer); // do not dealwith all mouse event of SystemTray, class SystemTrayItem will handle it @@ -116,3 +117,18 @@ const QRect AbstractTrayWidget::perfectIconRect() const return iconRect; } + +void AbstractTrayWidget::resizeEvent(QResizeEvent *event) +{ + QWidget::resizeEvent(event); + + const Dock::Position position = qApp->property(PROP_POSITION).value(); + // 保持横纵比 + if (position == Dock::Bottom || position == Dock::Top) { + setMaximumWidth(height()); + setMaximumHeight(QWIDGETSIZE_MAX); + } else { + setMaximumHeight(width()); + setMaximumWidth(QWIDGETSIZE_MAX); + } +} diff --git a/plugins/tray/abstracttraywidget.h b/plugins/tray/abstracttraywidget.h index fbc4087e8..1ec80929e 100644 --- a/plugins/tray/abstracttraywidget.h +++ b/plugins/tray/abstracttraywidget.h @@ -58,6 +58,7 @@ protected: void handleMouseRelease(); const QRect perfectIconRect() const; + void resizeEvent(QResizeEvent *event) override; private: QTimer *m_handleMouseReleaseTimer;