!8 解决wayland窗口状态错误导致开始菜单单例显示隐藏失败问题

This commit is contained in:
lixueman 2022-07-12 08:54:54 +00:00 committed by handsome_feng
parent fd51a285e0
commit fc64d52106
5 changed files with 33 additions and 16 deletions

7
debian/changelog vendored
View File

@ -1,3 +1,10 @@
ukui-menu (3.1.1-ok4~0712) yangtze; urgency=medium
* close-cd #128498
修复【wayland】【开始菜单】多次点击tab键和回车键后开始菜单点不开问题
-- lixueman <lixueman@kylinos.cn> Tue, 12 Jul 2022 16:11:49 +0800
ukui-menu (3.1.1-ok4~0708) yangtze; urgency=medium
* 调整全屏窗口初始化代码结构

View File

@ -350,19 +350,17 @@ void QtSingleApplication::activateWindow()
myDebug() << "单例触发activateWindow";
if (!g_projectCodeName.contains("V10SP1-edu")) {
MainWindow *w = qobject_cast<MainWindow *>(actWin);
w->windowOption();
if (this->applicationState() & Qt::ApplicationInactive) {
myDebug() << "单例内触发开始菜单显示";
actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
// actWin->raise();
// actWin->showNormal();
// actWin->activateWindow();
w->showWindow();
} else {
myDebug() << "单例内触发开始菜单隐藏";
actWin->setWindowState(actWin->windowState() & Qt::WindowMinimized);
w->hideWindow();
}
// if (this->applicationState() & Qt::ApplicationInactive) {
// myDebug() << "单例内触发开始菜单显示";
// actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
// w->showWindow();
// } else {
// myDebug() << "单例内触发开始菜单隐藏";
// actWin->setWindowState(actWin->windowState() & Qt::WindowMinimized);
// w->hideWindow();
// }
} else {
TabletWindow *w = qobject_cast<TabletWindow *>(actWin);
w->showPCMenu();

View File

@ -63,6 +63,7 @@ void KListView::paintEvent(QPaintEvent *e)
void KListView::mouseMoveEvent(QMouseEvent *e)
{
this->clearFocus();
return QListView::mouseMoveEvent(e);
}
void KListView::mousePressEvent(QMouseEvent *event)

View File

@ -181,7 +181,7 @@ void MainWindow::registDbusServer()
} else {
m_fullWindow->show();
setMaxWindowPos();
// fullWindow->raise();
m_fullWindow->raise();
m_fullWindow->activateWindow();
}
}
@ -506,6 +506,15 @@ void MainWindow::initTabOrder()
setTabOrder(m_minMaxChangeButton, m_powerOffButton);
}
void MainWindow::windowOption()
{
if (this->isVisible() || m_fullWindow->isVisible()) {
hideWindow();
} else {
showWindow();
}
}
void MainWindow::initUi()
{
qDebug() << "init UI";
@ -684,6 +693,7 @@ bool MainWindow::event(QEvent *event)
if (QEvent::WindowDeactivate == event->type()) { //窗口停用
if (QApplication::activeWindow() != this) {
qDebug() << " * 鼠标点击窗口外部事件";
this->setWindowState(this->windowState() & Qt::WindowMinimized);
this->hide();
m_topStackedWidget->setCurrentIndex(0);
m_lineEdit->clear();
@ -1340,6 +1350,7 @@ void MainWindow::repaintWidget()
m_fullWindow->setFixedSize(width, height);
m_fullWindow->repaintWidget();
}
void MainWindow::showNormalWindowSlot()
{
myDebug() << "Style::m_availableScreenWidth" << Style::m_availableScreenWidth << "Style::m_availableScreenHeight" << Style::m_availableScreenHeight;

View File

@ -65,9 +65,7 @@ public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void showWindow();
void hideWindow();
void windowOption();
protected:
void initSearchUi();
@ -81,6 +79,8 @@ protected:
void registDbusServer();
void setTabletModeFlag();
void initUi();
void showWindow();
void hideWindow();
/**
* @brief
* @param event