mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +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->setAccessibleName("settingsmenu");
|
||||||
settingsMenu->setTitle("Settings Menu");
|
settingsMenu->setTitle("Settings Menu");
|
||||||
|
|
||||||
@ -169,7 +168,7 @@ void MenuWorker::onDockSettingsTriggered()
|
|||||||
.call();
|
.call();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuWorker::showDockSettingsMenu()
|
void MenuWorker::showDockSettingsMenu(QMenu *menu)
|
||||||
{
|
{
|
||||||
// 菜单功能被禁用
|
// 菜单功能被禁用
|
||||||
static const QGSettings *setting = Utils::ModuleSettingsPtr("menu", QByteArray(), this);
|
static const QGSettings *setting = Utils::ModuleSettingsPtr("menu", QByteArray(), this);
|
||||||
@ -180,7 +179,7 @@ void MenuWorker::showDockSettingsMenu()
|
|||||||
// 菜单将要被打开
|
// 菜单将要被打开
|
||||||
setAutoHide(false);
|
setAutoHide(false);
|
||||||
|
|
||||||
QMenu *menu = createMenu();
|
menu = createMenu(menu);
|
||||||
menu->exec(QCursor::pos());
|
menu->exec(QCursor::pos());
|
||||||
|
|
||||||
// 菜单已经关闭
|
// 菜单已经关闭
|
||||||
|
@ -38,7 +38,7 @@ class MenuWorker : public QObject
|
|||||||
public:
|
public:
|
||||||
explicit MenuWorker(DBusDock *dockInter,QWidget *parent = nullptr);
|
explicit MenuWorker(DBusDock *dockInter,QWidget *parent = nullptr);
|
||||||
|
|
||||||
void showDockSettingsMenu();
|
void showDockSettingsMenu(QMenu *menu);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void autoHideChanged(const bool autoHide) const;
|
void autoHideChanged(const bool autoHide) const;
|
||||||
@ -47,7 +47,7 @@ public slots:
|
|||||||
void setAutoHide(const bool autoHide);
|
void setAutoHide(const bool autoHide);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QMenu *createMenu();
|
QMenu *createMenu(QMenu *settingsMenu);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onDockSettingsTriggered();
|
void onDockSettingsTriggered();
|
||||||
|
@ -203,7 +203,8 @@ void MainWindow::mousePressEvent(QMouseEvent *e)
|
|||||||
e->ignore();
|
e->ignore();
|
||||||
if (e->button() == Qt::RightButton) {
|
if (e->button() == Qt::RightButton) {
|
||||||
QTimer::singleShot(10, this, [this]{
|
QTimer::singleShot(10, this, [this]{
|
||||||
m_menuWorker->showDockSettingsMenu();
|
QMenu *menu = new QMenu(this);
|
||||||
|
m_menuWorker->showDockSettingsMenu(menu);
|
||||||
});
|
});
|
||||||
return;
|
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()));
|
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();
|
DockItemManager::instance()->m_pluginsInter->m_pluginsMap.clear();
|
||||||
QMenu *menu = worker->createMenu();
|
QMenu *menu = new QMenu();
|
||||||
|
menu = worker->createMenu(menu);
|
||||||
ASSERT_FALSE(menu->isEmpty());
|
ASSERT_FALSE(menu->isEmpty());
|
||||||
|
|
||||||
// worker->showDockSettingsMenu();
|
// worker->showDockSettingsMenu();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user