mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
feat: 添加配置 hover 显示桌面的时间
不影响默认行为,默认该配置为 0 即立刻显示或恢复 如果需要可以进行 dconfig 配置 Log: 添加配置显示桌面的悬浮时间 Change-Id: I0b394bf02717b6ba1abe1e5c86fab82d314f39fc
This commit is contained in:
parent
81e6eb87d3
commit
a2be08acf0
@ -26,6 +26,17 @@
|
||||
"description":"ture: Dock is hidden all the time, false: Depend on other settings of dock",
|
||||
"permissions":"readwrite",
|
||||
"visibility":"private"
|
||||
},
|
||||
"toggleDesktopInterval":{
|
||||
"value": 0,
|
||||
"serial": 0,
|
||||
"flags":[],
|
||||
"name":"toggleDesktopInterval",
|
||||
"name[zh_CN]":"显示(或恢复)桌面的悬浮时间间隔",
|
||||
"description[zh_CN]":"显示(或恢复)桌面将在悬停间隔后切换(以毫秒为单位)",
|
||||
"description":"show(or restore) desktop will toggle after the hover interval (in milliseconds)",
|
||||
"permissions":"readwrite",
|
||||
"visibility":"private"
|
||||
}
|
||||
}
|
||||
}
|
@ -13,8 +13,12 @@ DesktopWidget::DesktopWidget(QWidget *parent)
|
||||
: QWidget (parent)
|
||||
, m_isHover(false)
|
||||
, m_needRecoveryWin(false)
|
||||
,m_timer(new QTimer(this))
|
||||
{
|
||||
setMouseTracking(true);
|
||||
m_timer->setInterval(0);
|
||||
m_timer->setSingleShot(true);
|
||||
connect(m_timer, &QTimer::timeout, this, &DesktopWidget::toggleDesktop);
|
||||
}
|
||||
|
||||
void DesktopWidget::paintEvent(QPaintEvent *event)
|
||||
@ -41,7 +45,9 @@ void DesktopWidget::enterEvent(QEvent *event)
|
||||
{
|
||||
if (checkNeedShowDesktop()) {
|
||||
m_needRecoveryWin = true;
|
||||
QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle");
|
||||
// QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle");
|
||||
if (m_timer)
|
||||
m_timer->start();
|
||||
}
|
||||
|
||||
m_isHover = true;
|
||||
@ -54,7 +60,10 @@ void DesktopWidget::leaveEvent(QEvent *event)
|
||||
{
|
||||
// 鼠标移入时隐藏了窗口,移出时恢复
|
||||
if (m_needRecoveryWin) {
|
||||
QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle");
|
||||
if (m_timer->isActive())
|
||||
m_timer->stop();
|
||||
else
|
||||
toggleDesktop();
|
||||
}
|
||||
|
||||
m_isHover = false;
|
||||
@ -71,13 +80,25 @@ void DesktopWidget::mousePressEvent(QMouseEvent *event)
|
||||
m_needRecoveryWin = false;
|
||||
} else {
|
||||
// 需求调整,鼠标移入,预览桌面时再点击显示桌面保持显示桌面状态,再点击才切换桌面显、隐状态
|
||||
QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle");
|
||||
toggleDesktop();
|
||||
}
|
||||
}
|
||||
|
||||
QWidget::mousePressEvent(event);
|
||||
}
|
||||
|
||||
void DesktopWidget::toggleDesktop()
|
||||
{
|
||||
QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle");
|
||||
}
|
||||
|
||||
void DesktopWidget::setToggleDesktopInterval(int ms)
|
||||
{
|
||||
if (m_timer) {
|
||||
m_timer->setInterval(ms);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ShowDesktopWidget::checkNeedShowDesktop 根据窗管提供接口(当前是否显示的桌面),提供鼠标
|
||||
* 移入 显示桌面窗口 区域时,是否需要显示桌面判断依据
|
||||
|
@ -8,12 +8,14 @@
|
||||
#include <QWidget>
|
||||
#include <QPaintEvent>
|
||||
#include <QEnterEvent>
|
||||
#include <QTimer>
|
||||
|
||||
class DesktopWidget : public QWidget
|
||||
{
|
||||
public:
|
||||
explicit DesktopWidget(QWidget *parent = nullptr);
|
||||
|
||||
void setToggleDesktopInterval(int ms);
|
||||
private:
|
||||
bool checkNeedShowDesktop();
|
||||
|
||||
@ -22,10 +24,12 @@ protected:
|
||||
void enterEvent(QEvent *event) override;
|
||||
void leaveEvent(QEvent *event) override;
|
||||
void mousePressEvent(QMouseEvent *event) override;
|
||||
void toggleDesktop();
|
||||
|
||||
private:
|
||||
bool m_isHover; // 判断鼠标是否移到desktop区域
|
||||
bool m_needRecoveryWin;
|
||||
QTimer *m_timer;
|
||||
};
|
||||
|
||||
#endif // DESKTOP_WIDGET_H
|
||||
|
@ -944,6 +944,12 @@ void MainPanelControl::updatePluginsLayout()
|
||||
}
|
||||
}
|
||||
|
||||
void MainPanelControl::setToggleDesktopInterval(int ms)
|
||||
{
|
||||
if (m_desktopWidget)
|
||||
m_desktopWidget->setToggleDesktopInterval(ms);
|
||||
}
|
||||
|
||||
void MainPanelControl::itemUpdated(DockItem *item)
|
||||
{
|
||||
item->updateGeometry();
|
||||
|
@ -31,6 +31,7 @@ public:
|
||||
void setDisplayMode(DisplayMode dislayMode);
|
||||
void resizeDockIcon();
|
||||
void updatePluginsLayout();
|
||||
void setToggleDesktopInterval(int ms);
|
||||
|
||||
public slots:
|
||||
void insertItem(const int index, DockItem *item);
|
||||
|
@ -141,8 +141,11 @@ void MainWindow::launch()
|
||||
m_shadowMaskOptimizeTimer->start();
|
||||
QTimer::singleShot(0, this, [ this ] {
|
||||
bool showDock = true;
|
||||
if (m_dconfig.data()->isValid())
|
||||
if (m_dconfig.data()->isValid()) {
|
||||
showDock = !m_dconfig.data()->value("alwaysHideDock", false).toBool();
|
||||
const int ms = m_dconfig.data()->value("toggleDesktopInterval", 0).toInt();
|
||||
m_mainPanel->setToggleDesktopInterval(ms);
|
||||
}
|
||||
qApp->setProperty("ALWAYS_HIDE_DOCK", !showDock);
|
||||
setVisible(showDock);
|
||||
if (!showDock && m_multiScreenWorker->dockInter()) {
|
||||
@ -304,6 +307,9 @@ void MainWindow::initComponents()
|
||||
if (!showDock && m_multiScreenWorker->dockInter()) {
|
||||
m_multiScreenWorker->dockInter()->setHideMode(KeepHidden);
|
||||
}
|
||||
} else if ("toggleDesktopInterval") {
|
||||
const int ms = m_dconfig.data()->value(key, 0).toInt();
|
||||
m_mainPanel->setToggleDesktopInterval(ms);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user