mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
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:
parent
96050d849c
commit
c305f89037
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user