From c305f89037d38d5cc4f03bca308812c7de169e9e Mon Sep 17 00:00:00 2001 From: chenzhe Date: Sun, 19 Jan 2020 18:21:26 +0800 Subject: [PATCH] feat:add com.deepin.dde.dock.module.menu control menu show/hide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 com.deepin.dde.dock.module.menu 服务控制dock右键菜单不弹出(task:13652) --- frame/util/docksettings.cpp | 23 +++++++++++++++++++++++ frame/util/docksettings.h | 2 ++ frame/window/mainwindow.cpp | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index 66c16ce35..7f7561d98 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -41,9 +42,16 @@ DWIDGET_USE_NAMESPACE extern const QPoint rawXPosition(const QPoint &scaledPos); +static QGSettings *GSettingsByMenu() +{ + static QGSettings settings("com.deepin.dde.dock.module.menu"); + return &settings; +} + DockSettings::DockSettings(QWidget *parent) : QObject(parent) , m_dockInter(new DBusDock("com.deepin.dde.daemon.Dock", "/com/deepin/dde/daemon/Dock", QDBusConnection::sessionBus(), this)) + , m_menuVisible(true) , m_autoHide(true) , m_opacity(0.4) , m_fashionModeAct(tr("Fashion Mode"), this) @@ -114,6 +122,7 @@ DockSettings::DockSettings(QWidget *parent) m_settingsMenu.setTitle("Settings Menu"); connect(&m_settingsMenu, &QMenu::triggered, this, &DockSettings::menuActionClicked); + connect(GSettingsByMenu(), &QGSettings::changed, this, &DockSettings::onGSettingsChanged); connect(m_dockInter, &DBusDock::PositionChanged, this, &DockSettings::onPositionChanged); connect(m_dockInter, &DBusDock::DisplayModeChanged, this, &DockSettings::onDisplayModeChanged); connect(m_dockInter, &DBusDock::HideModeChanged, this, &DockSettings::hideModeChanged, Qt::QueuedConnection); @@ -314,6 +323,20 @@ void DockSettings::menuActionClicked(QAction *action) } } +void DockSettings::onGSettingsChanged(const QString &key) +{ + if (key != "enable") { + return; + } + + QGSettings *setting = GSettingsByMenu(); + + if (setting->keys().contains("enable")) { + const bool isEnable = GSettingsByMenu()->keys().contains("enable") && GSettingsByMenu()->get("enable").toBool(); + m_menuVisible=isEnable && setting->get("enable").toBool(); + } +} + void DockSettings::onPositionChanged() { const Position prevPos = m_position; diff --git a/frame/util/docksettings.h b/frame/util/docksettings.h index 929088ce5..315b1ccc9 100644 --- a/frame/util/docksettings.h +++ b/frame/util/docksettings.h @@ -74,6 +74,7 @@ public: QSize m_mainWindowSize; DBusDock *m_dockInter; + bool m_menuVisible; signals: void dataChanged() const; @@ -91,6 +92,7 @@ public slots: private slots: void menuActionClicked(QAction *action); + void onGSettingsChanged(const QString &key); void onPositionChanged(); void onDisplayModeChanged(); void hideModeChanged(); diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 33d061afb..d4b49924b 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -347,7 +347,7 @@ void MainWindow::showEvent(QShowEvent *e) void MainWindow::mousePressEvent(QMouseEvent *e) { e->ignore(); - if (e->button() == Qt::RightButton) { + if (e->button() == Qt::RightButton && m_settings->m_menuVisible) { m_settings->showDockSettingsMenu(); return; }