mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
fix: mainwindow hide when popup opens
MainWindow should not hide when popup opens and the focus is still on dock even if HideMode is AlwaysHide. Let popup block hiding of mainwindow. Log: fix mainwindow hide when popup opens Issue: https://github.com/linuxdeepin/developer-center/issues/4970
This commit is contained in:
parent
107e7427d6
commit
cf909cd4d7
@ -50,6 +50,7 @@ TaskManager::TaskManager(QObject *parent)
|
|||||||
, m_hideState(HideState::Unknown)
|
, m_hideState(HideState::Unknown)
|
||||||
, m_ddeLauncherVisible(false)
|
, m_ddeLauncherVisible(false)
|
||||||
, m_trayGridWidgetVisible(false)
|
, m_trayGridWidgetVisible(false)
|
||||||
|
, m_popupVisible(false)
|
||||||
, m_entries(new Entries(this))
|
, m_entries(new Entries(this))
|
||||||
, m_windowIdentify(new WindowIdentify(this))
|
, m_windowIdentify(new WindowIdentify(this))
|
||||||
, m_dbusHandler(new DBusHandler(this))
|
, m_dbusHandler(new DBusHandler(this))
|
||||||
@ -248,7 +249,7 @@ bool TaskManager::shouldShowOnDock(WindowInfoBase *info)
|
|||||||
*/
|
*/
|
||||||
void TaskManager::setDdeLauncherVisible(bool visible)
|
void TaskManager::setDdeLauncherVisible(bool visible)
|
||||||
{
|
{
|
||||||
m_trayGridWidgetVisible = visible;
|
m_ddeLauncherVisible = visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -257,7 +258,12 @@ void TaskManager::setDdeLauncherVisible(bool visible)
|
|||||||
*/
|
*/
|
||||||
void TaskManager::setTrayGridWidgetVisible(bool visible)
|
void TaskManager::setTrayGridWidgetVisible(bool visible)
|
||||||
{
|
{
|
||||||
m_ddeLauncherVisible = visible;
|
m_trayGridWidgetVisible = visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskManager::setPopupVisible(bool visible)
|
||||||
|
{
|
||||||
|
m_popupVisible = visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -849,7 +855,7 @@ Entry *TaskManager::getDockedEntryByDesktopFile(const QString &desktopFile)
|
|||||||
*/
|
*/
|
||||||
bool TaskManager::shouldHideOnSmartHideMode()
|
bool TaskManager::shouldHideOnSmartHideMode()
|
||||||
{
|
{
|
||||||
if (!m_activeWindow || m_ddeLauncherVisible || m_trayGridWidgetVisible)
|
if (!m_activeWindow || m_ddeLauncherVisible || m_trayGridWidgetVisible || m_popupVisible)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!m_isWayland) {
|
if (!m_isWayland) {
|
||||||
@ -949,7 +955,7 @@ QVector<XWindow> TaskManager::getActiveWinGroup(XWindow xid)
|
|||||||
*/
|
*/
|
||||||
void TaskManager::updateHideState(bool delay)
|
void TaskManager::updateHideState(bool delay)
|
||||||
{
|
{
|
||||||
if (m_ddeLauncherVisible || m_trayGridWidgetVisible) {
|
if (m_ddeLauncherVisible || m_trayGridWidgetVisible || m_popupVisible) {
|
||||||
setPropHideState(HideState::Show);
|
setPropHideState(HideState::Show);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,7 @@ public:
|
|||||||
bool shouldShowOnDock(WindowInfoBase *info);
|
bool shouldShowOnDock(WindowInfoBase *info);
|
||||||
void setDdeLauncherVisible(bool visible);
|
void setDdeLauncherVisible(bool visible);
|
||||||
void setTrayGridWidgetVisible(bool visible);
|
void setTrayGridWidgetVisible(bool visible);
|
||||||
|
void setPopupVisible(bool visible);
|
||||||
QString getWMName();
|
QString getWMName();
|
||||||
void setWMName(QString name);
|
void setWMName(QString name);
|
||||||
void setPropHideState(HideState state);
|
void setPropHideState(HideState state);
|
||||||
@ -177,6 +178,7 @@ private:
|
|||||||
ForceQuitAppMode m_forceQuitAppStatus; // 强制退出应用状态
|
ForceQuitAppMode m_forceQuitAppStatus; // 强制退出应用状态
|
||||||
bool m_ddeLauncherVisible;
|
bool m_ddeLauncherVisible;
|
||||||
bool m_trayGridWidgetVisible;
|
bool m_trayGridWidgetVisible;
|
||||||
|
bool m_popupVisible;
|
||||||
|
|
||||||
Entries *m_entries; // 所有应用实例
|
Entries *m_entries; // 所有应用实例
|
||||||
X11Manager *m_x11Manager; // X11窗口管理
|
X11Manager *m_x11Manager; // X11窗口管理
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "dbusutil.h"
|
#include "dbusutil.h"
|
||||||
#include "dockscreen.h"
|
#include "dockscreen.h"
|
||||||
#include "displaymanager.h"
|
#include "displaymanager.h"
|
||||||
|
#include "taskmanager/taskmanager.h"
|
||||||
|
|
||||||
#include <QScreen>
|
#include <QScreen>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
@ -172,12 +173,14 @@ void DockPopupWindow::showEvent(QShowEvent *e)
|
|||||||
Utils::updateCursor(this);
|
Utils::updateCursor(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TaskManager::instance()->setPopupVisible(true);
|
||||||
QTimer::singleShot(1, this, &DockPopupWindow::ensureRaised);
|
QTimer::singleShot(1, this, &DockPopupWindow::ensureRaised);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockPopupWindow::hideEvent(QHideEvent *event)
|
void DockPopupWindow::hideEvent(QHideEvent *event)
|
||||||
{
|
{
|
||||||
m_extendWidget = nullptr;
|
m_extendWidget = nullptr;
|
||||||
|
TaskManager::instance()->setPopupVisible(false);
|
||||||
Dtk::Widget::DBlurEffectWidget::hideEvent(event);
|
Dtk::Widget::DBlurEffectWidget::hideEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user