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",
|
"description":"ture: Dock is hidden all the time, false: Depend on other settings of dock",
|
||||||
"permissions":"readwrite",
|
"permissions":"readwrite",
|
||||||
"visibility":"private"
|
"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)
|
: QWidget (parent)
|
||||||
, m_isHover(false)
|
, m_isHover(false)
|
||||||
, m_needRecoveryWin(false)
|
, m_needRecoveryWin(false)
|
||||||
|
,m_timer(new QTimer(this))
|
||||||
{
|
{
|
||||||
setMouseTracking(true);
|
setMouseTracking(true);
|
||||||
|
m_timer->setInterval(0);
|
||||||
|
m_timer->setSingleShot(true);
|
||||||
|
connect(m_timer, &QTimer::timeout, this, &DesktopWidget::toggleDesktop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesktopWidget::paintEvent(QPaintEvent *event)
|
void DesktopWidget::paintEvent(QPaintEvent *event)
|
||||||
@ -41,7 +45,9 @@ void DesktopWidget::enterEvent(QEvent *event)
|
|||||||
{
|
{
|
||||||
if (checkNeedShowDesktop()) {
|
if (checkNeedShowDesktop()) {
|
||||||
m_needRecoveryWin = true;
|
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;
|
m_isHover = true;
|
||||||
@ -54,7 +60,10 @@ void DesktopWidget::leaveEvent(QEvent *event)
|
|||||||
{
|
{
|
||||||
// 鼠标移入时隐藏了窗口,移出时恢复
|
// 鼠标移入时隐藏了窗口,移出时恢复
|
||||||
if (m_needRecoveryWin) {
|
if (m_needRecoveryWin) {
|
||||||
QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle");
|
if (m_timer->isActive())
|
||||||
|
m_timer->stop();
|
||||||
|
else
|
||||||
|
toggleDesktop();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_isHover = false;
|
m_isHover = false;
|
||||||
@ -71,13 +80,25 @@ void DesktopWidget::mousePressEvent(QMouseEvent *event)
|
|||||||
m_needRecoveryWin = false;
|
m_needRecoveryWin = false;
|
||||||
} else {
|
} else {
|
||||||
// 需求调整,鼠标移入,预览桌面时再点击显示桌面保持显示桌面状态,再点击才切换桌面显、隐状态
|
// 需求调整,鼠标移入,预览桌面时再点击显示桌面保持显示桌面状态,再点击才切换桌面显、隐状态
|
||||||
QProcess::startDetached("/usr/lib/deepin-daemon/desktop-toggle");
|
toggleDesktop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget::mousePressEvent(event);
|
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 根据窗管提供接口(当前是否显示的桌面),提供鼠标
|
* @brief ShowDesktopWidget::checkNeedShowDesktop 根据窗管提供接口(当前是否显示的桌面),提供鼠标
|
||||||
* 移入 显示桌面窗口 区域时,是否需要显示桌面判断依据
|
* 移入 显示桌面窗口 区域时,是否需要显示桌面判断依据
|
||||||
|
@ -8,12 +8,14 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QPaintEvent>
|
#include <QPaintEvent>
|
||||||
#include <QEnterEvent>
|
#include <QEnterEvent>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
class DesktopWidget : public QWidget
|
class DesktopWidget : public QWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit DesktopWidget(QWidget *parent = nullptr);
|
explicit DesktopWidget(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
void setToggleDesktopInterval(int ms);
|
||||||
private:
|
private:
|
||||||
bool checkNeedShowDesktop();
|
bool checkNeedShowDesktop();
|
||||||
|
|
||||||
@ -22,10 +24,12 @@ protected:
|
|||||||
void enterEvent(QEvent *event) override;
|
void enterEvent(QEvent *event) override;
|
||||||
void leaveEvent(QEvent *event) override;
|
void leaveEvent(QEvent *event) override;
|
||||||
void mousePressEvent(QMouseEvent *event) override;
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
|
void toggleDesktop();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_isHover; // 判断鼠标是否移到desktop区域
|
bool m_isHover; // 判断鼠标是否移到desktop区域
|
||||||
bool m_needRecoveryWin;
|
bool m_needRecoveryWin;
|
||||||
|
QTimer *m_timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DESKTOP_WIDGET_H
|
#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)
|
void MainPanelControl::itemUpdated(DockItem *item)
|
||||||
{
|
{
|
||||||
item->updateGeometry();
|
item->updateGeometry();
|
||||||
|
@ -31,6 +31,7 @@ public:
|
|||||||
void setDisplayMode(DisplayMode dislayMode);
|
void setDisplayMode(DisplayMode dislayMode);
|
||||||
void resizeDockIcon();
|
void resizeDockIcon();
|
||||||
void updatePluginsLayout();
|
void updatePluginsLayout();
|
||||||
|
void setToggleDesktopInterval(int ms);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void insertItem(const int index, DockItem *item);
|
void insertItem(const int index, DockItem *item);
|
||||||
|
@ -141,8 +141,11 @@ void MainWindow::launch()
|
|||||||
m_shadowMaskOptimizeTimer->start();
|
m_shadowMaskOptimizeTimer->start();
|
||||||
QTimer::singleShot(0, this, [ this ] {
|
QTimer::singleShot(0, this, [ this ] {
|
||||||
bool showDock = true;
|
bool showDock = true;
|
||||||
if (m_dconfig.data()->isValid())
|
if (m_dconfig.data()->isValid()) {
|
||||||
showDock = !m_dconfig.data()->value("alwaysHideDock", false).toBool();
|
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);
|
qApp->setProperty("ALWAYS_HIDE_DOCK", !showDock);
|
||||||
setVisible(showDock);
|
setVisible(showDock);
|
||||||
if (!showDock && m_multiScreenWorker->dockInter()) {
|
if (!showDock && m_multiScreenWorker->dockInter()) {
|
||||||
@ -304,6 +307,9 @@ void MainWindow::initComponents()
|
|||||||
if (!showDock && m_multiScreenWorker->dockInter()) {
|
if (!showDock && m_multiScreenWorker->dockInter()) {
|
||||||
m_multiScreenWorker->dockInter()->setHideMode(KeepHidden);
|
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