feat:add com.deepin.dde.dock.module.menu control menu show/hide

添加 com.deepin.dde.dock.module.menu 服务控制dock右键菜单不弹出(task:13652)
This commit is contained in:
chenzhe 2020-01-19 18:21:26 +08:00
parent 96050d849c
commit c305f89037
3 changed files with 26 additions and 1 deletions

View File

@ -25,6 +25,7 @@
#include <QDebug>
#include <QX11Info>
#include <QGSettings>
#include <DApplication>
#include <QScreen>
@ -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;

View File

@ -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();

View File

@ -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;
}