mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
fixed (dde-dock): dde-dock can not hide really for task 14309
This commit is contained in:
parent
d8fc8b08f3
commit
5422441836
@ -511,7 +511,7 @@ void DockSettings::onOpacityChanged(const double value)
|
||||
|
||||
void DockSettings::trayVisableCountChanged(const int &count)
|
||||
{
|
||||
emit windowGeometryChanged();
|
||||
emit trayCountChanged();
|
||||
}
|
||||
|
||||
void DockSettings::calculateWindowConfig()
|
||||
|
@ -85,6 +85,7 @@ signals:
|
||||
void windowHideModeChanged() const;
|
||||
void windowGeometryChanged() const;
|
||||
void opacityChanged(const quint8 value) const;
|
||||
void trayCountChanged() const;
|
||||
|
||||
public slots:
|
||||
void updateGeometry();
|
||||
|
@ -134,6 +134,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
m_platformWindowHandle(this),
|
||||
m_wmHelper(DWindowManagerHelper::instance()),
|
||||
m_regionMonitor(new DRegionMonitor(this)),
|
||||
|
||||
m_positionUpdateTimer(new QTimer(this)),
|
||||
m_expandDelayTimer(new QTimer(this)),
|
||||
@ -217,8 +218,10 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
if (m_curDockPos == Dock::Top || m_curDockPos == Dock::Bottom) {
|
||||
QWidget::setFixedHeight(val);
|
||||
m_mainPanel->setFixedHeight(val);
|
||||
} else {
|
||||
QWidget::setFixedWidth(val);
|
||||
m_mainPanel->setFixedWidth(val);
|
||||
}
|
||||
|
||||
m_mainPanel->setFixedSize(windowRect.width(), windowRect.height());
|
||||
@ -282,10 +285,13 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
QWidget::move(windowRect.left(), windowRect.top());
|
||||
QWidget::setFixedSize(windowRect.size());
|
||||
|
||||
m_mainPanel->move(QPoint(0, 0));
|
||||
m_mainPanel->setFixedSize(QWidget::size());
|
||||
if (m_settings->hideMode() != KeepShowing)
|
||||
this->setVisible(false);
|
||||
});
|
||||
|
||||
updateRegionMonitorWatch();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -505,6 +511,7 @@ void MainWindow::initConnections()
|
||||
connect(m_settings, &DockSettings::positionChanged, this, &MainWindow::positionChanged);
|
||||
connect(m_settings, &DockSettings::autoHideChanged, m_leaveDelayTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||
connect(m_settings, &DockSettings::windowGeometryChanged, this, &MainWindow::updateGeometry, Qt::DirectConnection);
|
||||
connect(m_settings, &DockSettings::trayCountChanged, this, &MainWindow::getTrayVisableItemCount, Qt::DirectConnection);
|
||||
connect(m_settings, &DockSettings::windowHideModeChanged, this, &MainWindow::setStrutPartial, Qt::QueuedConnection);
|
||||
connect(m_settings, &DockSettings::windowHideModeChanged, [this] { resetPanelEnvironment(true); });
|
||||
connect(m_settings, &DockSettings::windowHideModeChanged, m_leaveDelayTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||
@ -536,6 +543,7 @@ void MainWindow::initConnections()
|
||||
connect(m_dragWidget, &DragWidget::dragPointOffset, this, &MainWindow::onMainWindowSizeChanged);
|
||||
connect(m_dragWidget, &DragWidget::dragFinished, this, &MainWindow::onDragFinished);
|
||||
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &MainWindow::themeTypeChanged);
|
||||
connect(m_regionMonitor, &DRegionMonitor::cursorMove, this, &MainWindow::onRegionMonitorChanged);
|
||||
}
|
||||
|
||||
const QPoint MainWindow::x11GetWindowPos()
|
||||
@ -595,6 +603,7 @@ void MainWindow::positionChanged(const Position prevPos, const Position nextPos)
|
||||
}
|
||||
|
||||
updatePanelVisible();
|
||||
updateRegionMonitorWatch();
|
||||
});
|
||||
}
|
||||
|
||||
@ -622,12 +631,16 @@ void MainWindow::updateGeometry()
|
||||
internalMove(windowRect.topLeft());
|
||||
|
||||
QWidget::move(windowRect.topLeft());
|
||||
QWidget::setFixedSize(windowRect.size());
|
||||
QWidget::setFixedSize(m_settings->m_mainWindowSize);
|
||||
|
||||
resizeMainPanelWindow();
|
||||
|
||||
m_mainPanel->update();
|
||||
m_mainPanel->getTrayVisableItemCount();
|
||||
}
|
||||
|
||||
void MainWindow::getTrayVisableItemCount()
|
||||
{
|
||||
m_mainPanel->getTrayVisableItemCount();
|
||||
}
|
||||
|
||||
void MainWindow::clearStrutPartial()
|
||||
@ -724,6 +737,7 @@ void MainWindow::setStrutPartial()
|
||||
void MainWindow::expand()
|
||||
{
|
||||
qApp->processEvents();
|
||||
setVisible(true);
|
||||
|
||||
if (m_panelHideAni->state() == QPropertyAnimation::Running)
|
||||
return;
|
||||
@ -794,6 +808,7 @@ void MainWindow::resetPanelEnvironment(const bool visible, const bool resetPosit
|
||||
return;
|
||||
|
||||
resizeMainPanelWindow();
|
||||
updateRegionMonitorWatch();
|
||||
if (m_size != m_settings->m_mainWindowSize) {
|
||||
m_size = m_settings->m_mainWindowSize;
|
||||
setStrutPartial();
|
||||
@ -941,6 +956,7 @@ void MainWindow::updateDisplayMode()
|
||||
m_mainPanel->setDisplayMode(m_settings->displayMode());
|
||||
setStrutPartial();
|
||||
adjustShadowMask();
|
||||
updateRegionMonitorWatch();
|
||||
}
|
||||
|
||||
void MainWindow::onMainWindowSizeChanged(QPoint offset)
|
||||
@ -1003,4 +1019,36 @@ void MainWindow::themeTypeChanged(DGuiApplicationHelper::ColorType themeType)
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onRegionMonitorChanged()
|
||||
{
|
||||
if (m_settings->hideMode() == KeepShowing)
|
||||
return;
|
||||
|
||||
if (!isVisible())
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
void MainWindow::updateRegionMonitorWatch()
|
||||
{
|
||||
if (m_settings->hideMode() == KeepShowing)
|
||||
return;
|
||||
|
||||
int val = 2;
|
||||
const int margin = m_settings->dockMargin();
|
||||
if (Dock::Top == m_curDockPos) {
|
||||
m_regionMonitor->setWatchedRegion(QRegion(margin, 0, m_settings->primaryRect().width() - margin*2, val));
|
||||
} else if (Dock::Bottom == m_curDockPos) {
|
||||
m_regionMonitor->setWatchedRegion(QRegion(margin, m_settings->primaryRect().height() - val, m_settings->primaryRect().width() - margin*2, val));
|
||||
} else if (Dock::Left == m_curDockPos) {
|
||||
m_regionMonitor->setWatchedRegion(QRegion(0, margin, val,m_settings->primaryRect().height() - margin*2));
|
||||
} else {
|
||||
m_regionMonitor->setWatchedRegion(QRegion(m_settings->primaryRect().width() - val, margin, val,m_settings->primaryRect().height()- margin*2));
|
||||
}
|
||||
|
||||
if (!m_regionMonitor->registered()){
|
||||
m_regionMonitor->registerRegion();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "mainwindow.moc"
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include <DWindowManagerHelper>
|
||||
#include <DBlurEffectWidget>
|
||||
#include <DGuiApplicationHelper>
|
||||
#include <DRegionMonitor>
|
||||
|
||||
DWIDGET_USE_NAMESPACE
|
||||
|
||||
@ -81,6 +82,9 @@ private:
|
||||
void x11MoveWindow(const int x, const int y);
|
||||
void x11MoveResizeWindow(const int x, const int y, const int w, const int h);
|
||||
bool appIsOnDock(const QString &appDesktop);
|
||||
void onRegionMonitorChanged();
|
||||
void updateRegionMonitorWatch();
|
||||
void getTrayVisableItemCount();
|
||||
|
||||
signals:
|
||||
void panelGeometryChanged();
|
||||
@ -114,6 +118,7 @@ private:
|
||||
|
||||
DPlatformWindowHandle m_platformWindowHandle;
|
||||
DWindowManagerHelper *m_wmHelper;
|
||||
DRegionMonitor *m_regionMonitor;
|
||||
|
||||
QTimer *m_positionUpdateTimer;
|
||||
QTimer *m_expandDelayTimer;
|
||||
|
Loading…
x
Reference in New Issue
Block a user