diff --git a/plugins/tray/snitraywidget.cpp b/plugins/tray/snitraywidget.cpp index 192bc4784..cb919691a 100644 --- a/plugins/tray/snitraywidget.cpp +++ b/plugins/tray/snitraywidget.cpp @@ -108,6 +108,8 @@ SNITrayWidget::SNITrayWidget(const QString &sniServicePath, QWidget *parent) connect(m_sniInter, &StatusNotifierItem::OverlayIconPixmapChanged, this, &SNITrayWidget::onSNIOverlayIconPixmapChanged); connect(m_sniInter, &StatusNotifierItem::StatusChanged, this, &SNITrayWidget::onSNIStatusChanged); + connect(this, &SNITrayWidget::requestShowMenu, this, &SNITrayWidget::showContextMenu); + // the following signals can be emit automatically // need refresh cached properties in these slots connect(m_sniInter, &StatusNotifierItem::NewIcon, [ = ] { @@ -160,7 +162,7 @@ void SNITrayWidget::sendClick(uint8_t mouseButton, int x, int y) // primarily work for apps using libappindicator. reply.waitForFinished(); if (reply.isError()) { - showContextMenu(x,y); + Q_EMIT requestShowMenu(x, y); } }); } diff --git a/plugins/tray/snitraywidget.h b/plugins/tray/snitraywidget.h index 6d16a15d0..d4f6b5b88 100644 --- a/plugins/tray/snitraywidget.h +++ b/plugins/tray/snitraywidget.h @@ -60,6 +60,7 @@ public: Q_SIGNALS: void statusChanged(SNITrayWidget::ItemStatus status); + void requestShowMenu(int x, int y); private Q_SLOTS: void initSNIPropertys();