dbusmenu: Map showPopup method to ItemActivationRequested signal
This way the Qt accelerator shortcuts (i.e. Alt+F for the File menu) will cause the matching menu to be opened on the server side. Change-Id: I02a5b3c20c6eae130d0f133b33c9e247cff38d44 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>bb10
parent
9ae3c94690
commit
3e31b71b9c
|
|
@ -59,6 +59,8 @@ QDBusMenuBar::QDBusMenuBar()
|
|||
m_menuAdaptor, &QDBusMenuAdaptor::ItemsPropertiesUpdated);
|
||||
connect(m_menu, &QDBusPlatformMenu::updated,
|
||||
m_menuAdaptor, &QDBusMenuAdaptor::LayoutUpdated);
|
||||
connect(m_menu, &QDBusPlatformMenu::popupRequested,
|
||||
m_menuAdaptor, &QDBusMenuAdaptor::ItemActivationRequested);
|
||||
}
|
||||
|
||||
QDBusMenuBar::~QDBusMenuBar()
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
|
||||
#include "qdbusplatformmenu_p.h"
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QWindow>
|
||||
|
||||
|
|
@ -210,6 +211,8 @@ void QDBusPlatformMenu::removeMenuItem(QPlatformMenuItem *menuItem)
|
|||
this, &QDBusPlatformMenu::propertiesUpdated);
|
||||
disconnect(menu, &QDBusPlatformMenu::updated,
|
||||
this, &QDBusPlatformMenu::updated);
|
||||
disconnect(menu, &QDBusPlatformMenu::popupRequested,
|
||||
this, &QDBusPlatformMenu::popupRequested);
|
||||
}
|
||||
emitUpdated();
|
||||
}
|
||||
|
|
@ -222,6 +225,8 @@ void QDBusPlatformMenu::syncSubMenu(const QDBusPlatformMenu *menu)
|
|||
this, &QDBusPlatformMenu::propertiesUpdated, Qt::UniqueConnection);
|
||||
connect(menu, &QDBusPlatformMenu::updated,
|
||||
this, &QDBusPlatformMenu::updated, Qt::UniqueConnection);
|
||||
connect(menu, &QDBusPlatformMenu::popupRequested,
|
||||
this, &QDBusPlatformMenu::popupRequested, Qt::UniqueConnection);
|
||||
}
|
||||
|
||||
void QDBusPlatformMenu::syncMenuItem(QPlatformMenuItem *menuItem)
|
||||
|
|
@ -278,6 +283,15 @@ void QDBusPlatformMenu::setContainingMenuItem(QDBusPlatformMenuItem *item)
|
|||
m_containingMenuItem = item;
|
||||
}
|
||||
|
||||
void QDBusPlatformMenu::showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item)
|
||||
{
|
||||
Q_UNUSED(parentWindow);
|
||||
Q_UNUSED(targetRect);
|
||||
Q_UNUSED(item);
|
||||
setVisible(true);
|
||||
emit popupRequested(m_containingMenuItem->dbusID(), QDateTime::currentMSecsSinceEpoch());
|
||||
}
|
||||
|
||||
QPlatformMenuItem *QDBusPlatformMenu::menuItemAt(int position) const
|
||||
{
|
||||
return m_items.value(position);
|
||||
|
|
|
|||
|
|
@ -161,13 +161,7 @@ public:
|
|||
void setMenuType(MenuType type) Q_DECL_OVERRIDE { Q_UNUSED(type); }
|
||||
void setContainingMenuItem(QDBusPlatformMenuItem *item);
|
||||
|
||||
void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) Q_DECL_OVERRIDE
|
||||
{
|
||||
Q_UNUSED(parentWindow);
|
||||
Q_UNUSED(targetRect);
|
||||
Q_UNUSED(item);
|
||||
setVisible(true);
|
||||
}
|
||||
void showPopup(const QWindow *parentWindow, const QRect &targetRect, const QPlatformMenuItem *item) Q_DECL_OVERRIDE;
|
||||
|
||||
void dismiss() Q_DECL_OVERRIDE { } // Closes this and all its related menu popups
|
||||
|
||||
|
|
@ -187,6 +181,7 @@ public:
|
|||
signals:
|
||||
void updated(uint revision, int dbusId);
|
||||
void propertiesUpdated(QDBusMenuItemList updatedProps, QDBusMenuItemKeysList removedProps);
|
||||
void popupRequested(int id, uint timestamp);
|
||||
|
||||
private:
|
||||
quintptr m_tag;
|
||||
|
|
|
|||
Loading…
Reference in New Issue