D-Bus system tray: emit activated on middle and right click

The ActivationReason provides the type of click.  If the icon has a
D-Bus menu, then QStatusNotifierItemAdaptor::ContextMenu will not be
called: the tray is responsible for opening the context menu.  But
an application can alternatively do something different with a
right-click by not providing a menu, and instead handling the
QSystemTrayIcon::activated signal with the Context reason.
Simplified the code by emitting the signal directly in
QStatusNotifierItemAdaptor.

Task-number: QTBUG-44929
Change-Id: Ia062a9a2fd99554418d58a1ff6ecd4e862035198
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
This commit is contained in:
Shawn Rutledge 2015-03-30 15:28:26 +02:00
parent 0e55d8dfad
commit be242ed094
3 changed files with 10 additions and 20 deletions

View File

@ -115,12 +115,6 @@ void QDBusTrayIcon::cleanup()
m_registered = false;
}
void QDBusTrayIcon::activate(int x, int y)
{
qCDebug(qLcTray) << x << y;
emit activated(Trigger);
}
void QDBusTrayIcon::attentionTimerExpired()
{
m_messageTitle = QString();
@ -213,11 +207,6 @@ void QDBusTrayIcon::updateMenu(QPlatformMenu * menu)
m_menu->emitUpdated();
}
void QDBusTrayIcon::contextMenu(int x, int y)
{
qCDebug(qLcTray) << x << y;
}
void QDBusTrayIcon::showMessage(const QString &title, const QString &msg, const QIcon &icon,
QPlatformSystemTrayIcon::MessageIcon iconType, int msecs)
{

View File

@ -113,10 +113,6 @@ public:
QDBusPlatformMenu *menu() { return m_menu; }
public Q_SLOTS:
void activate(int x, int y);
void contextMenu(int x, int y);
signals:
void categoryChanged();
void statusChanged(QString arg);

View File

@ -50,6 +50,7 @@
QT_BEGIN_NAMESPACE
Q_DECLARE_LOGGING_CATEGORY(qLcMenu)
Q_DECLARE_LOGGING_CATEGORY(qLcTray)
QStatusNotifierItemAdaptor::QStatusNotifierItemAdaptor(QDBusTrayIcon *parent)
: QDBusAbstractAdaptor(parent), m_trayIcon(parent)
@ -151,22 +152,26 @@ QXdgDBusToolTipStruct QStatusNotifierItemAdaptor::toolTip() const
void QStatusNotifierItemAdaptor::Activate(int x, int y)
{
m_trayIcon->activate(x, y);
qCDebug(qLcTray) << x << y;
emit m_trayIcon->activated(QPlatformSystemTrayIcon::Trigger);
}
void QStatusNotifierItemAdaptor::ContextMenu(int x, int y)
{
m_trayIcon->contextMenu(x, y);
qCDebug(qLcTray) << x << y;
emit m_trayIcon->activated(QPlatformSystemTrayIcon::Context);
}
void QStatusNotifierItemAdaptor::Scroll(int, const QString &)
void QStatusNotifierItemAdaptor::Scroll(int w, const QString &s)
{
qCDebug(qLcTray) << w << s;
// unsupported
}
void QStatusNotifierItemAdaptor::SecondaryActivate(int, int)
void QStatusNotifierItemAdaptor::SecondaryActivate(int x, int y)
{
// unsupported
qCDebug(qLcTray) << x << y;
emit m_trayIcon->activated(QPlatformSystemTrayIcon::MiddleClick);
}
QT_END_NAMESPACE