mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
fix: 处理任务栏右键菜单没有指定父对象,造成无法关闭wayland任务栏菜单
创建QMenu时,指定父对象 Bug: https://pms.uniontech.com/zentao/bug-view-109963.html Log: 任务栏右键菜单后移动到任一子菜单,然后点击桌面空白处,不能隐藏右键菜单 Influence: 任务栏-wayland右键菜单 Change-Id: I4300755bf73f5fc235d047539881f58f84ef0edf
This commit is contained in:
parent
9b140528be
commit
d755c0352a
@ -40,9 +40,8 @@ MenuWorker::MenuWorker(DBusDock *dockInter,QWidget *parent)
|
||||
|
||||
}
|
||||
|
||||
QMenu *MenuWorker::createMenu()
|
||||
QMenu *MenuWorker::createMenu(QMenu *settingsMenu)
|
||||
{
|
||||
QMenu *settingsMenu = new QMenu;
|
||||
settingsMenu->setAccessibleName("settingsmenu");
|
||||
settingsMenu->setTitle("Settings Menu");
|
||||
|
||||
@ -169,7 +168,7 @@ void MenuWorker::onDockSettingsTriggered()
|
||||
.call();
|
||||
}
|
||||
|
||||
void MenuWorker::showDockSettingsMenu()
|
||||
void MenuWorker::showDockSettingsMenu(QMenu *menu)
|
||||
{
|
||||
// 菜单功能被禁用
|
||||
static const QGSettings *setting = Utils::ModuleSettingsPtr("menu", QByteArray(), this);
|
||||
@ -180,7 +179,7 @@ void MenuWorker::showDockSettingsMenu()
|
||||
// 菜单将要被打开
|
||||
setAutoHide(false);
|
||||
|
||||
QMenu *menu = createMenu();
|
||||
menu = createMenu(menu);
|
||||
menu->exec(QCursor::pos());
|
||||
|
||||
// 菜单已经关闭
|
||||
|
@ -38,7 +38,7 @@ class MenuWorker : public QObject
|
||||
public:
|
||||
explicit MenuWorker(DBusDock *dockInter,QWidget *parent = nullptr);
|
||||
|
||||
void showDockSettingsMenu();
|
||||
void showDockSettingsMenu(QMenu *menu);
|
||||
|
||||
signals:
|
||||
void autoHideChanged(const bool autoHide) const;
|
||||
@ -47,7 +47,7 @@ public slots:
|
||||
void setAutoHide(const bool autoHide);
|
||||
|
||||
private:
|
||||
QMenu *createMenu();
|
||||
QMenu *createMenu(QMenu *settingsMenu);
|
||||
|
||||
private slots:
|
||||
void onDockSettingsTriggered();
|
||||
|
@ -203,7 +203,8 @@ void MainWindow::mousePressEvent(QMouseEvent *e)
|
||||
e->ignore();
|
||||
if (e->button() == Qt::RightButton) {
|
||||
QTimer::singleShot(10, this, [this]{
|
||||
m_menuWorker->showDockSettingsMenu();
|
||||
QMenu *menu = new QMenu(this);
|
||||
m_menuWorker->showDockSettingsMenu(menu);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -36,7 +36,8 @@ TEST_F(Test_MenuWorker, coverage_test)
|
||||
{
|
||||
MenuWorker *worker = new MenuWorker(new DBusDock("com.deepin.dde.daemon.Dock", "/com/deepin/dde/daemon/Dock", QDBusConnection::sessionBus()));
|
||||
DockItemManager::instance()->m_pluginsInter->m_pluginsMap.clear();
|
||||
QMenu *menu = worker->createMenu();
|
||||
QMenu *menu = new QMenu();
|
||||
menu = worker->createMenu(menu);
|
||||
ASSERT_FALSE(menu->isEmpty());
|
||||
|
||||
// worker->showDockSettingsMenu();
|
||||
|
Loading…
x
Reference in New Issue
Block a user