mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
fix: wayland 插件右键菜单显示后点击桌面不会关闭
点击菜单区域以外关闭菜单的逻辑: 1. 有parent的kwin会关闭 2. 没有parent的Qt会在失去焦点时关闭 由于dock无焦点,wayland 菜单无焦点,无父对象的菜单就关闭不了。 规避方案给菜单加上parent,后续如果菜单的role改变应该可以彻底避免。 Bug: https://pms.uniontech.com/bug-view-124531.html Influence: wayland plugin menu close Log: Change-Id: Id9c80f5131f0171469a279e6c7c7b54a0a3e8791
This commit is contained in:
parent
1163836f16
commit
64d492cb3a
@ -249,6 +249,9 @@ void DockItem::showContextMenu()
|
|||||||
hidePopup();
|
hidePopup();
|
||||||
emit requestWindowAutoHide(false);
|
emit requestWindowAutoHide(false);
|
||||||
|
|
||||||
|
if (!m_contextMenu.parentWidget())
|
||||||
|
m_contextMenu.setParent(topLevelWidget(), Qt::Popup);
|
||||||
|
|
||||||
m_contextMenu.exec(QCursor::pos());
|
m_contextMenu.exec(QCursor::pos());
|
||||||
|
|
||||||
onContextMenuAccepted();
|
onContextMenuAccepted();
|
||||||
|
@ -284,6 +284,8 @@ void SNITrayWidget::initMenu()
|
|||||||
qDebug() << "generate the sni menu object";
|
qDebug() << "generate the sni menu object";
|
||||||
|
|
||||||
m_menu = m_dbusMenuImporter->menu();
|
m_menu = m_dbusMenuImporter->menu();
|
||||||
|
if (m_menu && !m_menu->parentWidget())
|
||||||
|
m_menu->setParent(topLevelWidget(), Qt::Popup);
|
||||||
|
|
||||||
qDebug() << "the sni menu obect is:" << m_menu;
|
qDebug() << "the sni menu obect is:" << m_menu;
|
||||||
}
|
}
|
||||||
|
@ -451,6 +451,9 @@ void SystemTrayItem::showContextMenu()
|
|||||||
hidePopup();
|
hidePopup();
|
||||||
emit requestWindowAutoHide(false);
|
emit requestWindowAutoHide(false);
|
||||||
|
|
||||||
|
if (!m_contextMenu.parentWidget())
|
||||||
|
m_contextMenu.setParent(topLevelWidget(), Qt::Popup);
|
||||||
|
|
||||||
m_contextMenu.exec(QCursor::pos());
|
m_contextMenu.exec(QCursor::pos());
|
||||||
|
|
||||||
onContextMenuAccepted();
|
onContextMenuAccepted();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user