fix(frontend):修改索引弹窗和搜索框之间的交互逻辑
索引弹窗出现不影响搜索框功能,无论如何搜索框都会失焦退出,除非焦点被索引弹窗夺走;快捷键和任务栏按钮触发无论如何都会开关搜索框,不受弹窗影响;
This commit is contained in:
parent
06ff2eac5b
commit
5aeb21ec45
|
@ -167,5 +167,10 @@ bool CreateIndexAskDialog::eventFilter(QObject *watched, QEvent *event)
|
||||||
this->hide();
|
this->hide();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (event->type() == QEvent::ActivationChange) {
|
||||||
|
if (QApplication::activeWindow() != this) {
|
||||||
|
Q_EMIT this->focusChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
return QDialog::eventFilter(watched, event);
|
return QDialog::eventFilter(watched, event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,7 @@ protected:
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void closed();
|
void closed();
|
||||||
void btnClicked(const bool&, const bool&);
|
void btnClicked(const bool&, const bool&);
|
||||||
|
void focusChanged();
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,6 +155,11 @@ void MainWindow::initConnections()
|
||||||
connect(m_askDialog, &CreateIndexAskDialog::btnClicked, this, [ = ](const bool &isCreateIndex, const bool &isAskAgain) {
|
connect(m_askDialog, &CreateIndexAskDialog::btnClicked, this, [ = ](const bool &isCreateIndex, const bool &isAskAgain) {
|
||||||
setSearchMethodConfig(isCreateIndex, isAskAgain);
|
setSearchMethodConfig(isCreateIndex, isAskAgain);
|
||||||
});
|
});
|
||||||
|
connect(m_askDialog, &CreateIndexAskDialog::focusChanged, this, [ & ] {
|
||||||
|
if (QApplication::activeWindow() != this) {
|
||||||
|
this->tryHideMainwindow();
|
||||||
|
}
|
||||||
|
});
|
||||||
// connect(m_settingsBtn, &QPushButton::clicked, this, &MainWindow::settingsBtnClickedSlot);
|
// connect(m_settingsBtn, &QPushButton::clicked, this, &MainWindow::settingsBtnClickedSlot);
|
||||||
//主题改变时,更新自定义标题栏的图标
|
//主题改变时,更新自定义标题栏的图标
|
||||||
// connect(qApp, &QApplication::paletteChanged, this, [ = ]() {
|
// connect(qApp, &QApplication::paletteChanged, this, [ = ]() {
|
||||||
|
@ -178,6 +183,7 @@ void MainWindow::bootOptionsFilter(QString opt) {
|
||||||
this->m_searchBarWidget->setFocus();
|
this->m_searchBarWidget->setFocus();
|
||||||
}
|
}
|
||||||
this->activateWindow();
|
this->activateWindow();
|
||||||
|
this->raise();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,8 +206,8 @@ void MainWindow::trayIconActivatedSlot(QSystemTrayIcon::ActivationReason reason)
|
||||||
clearSearchResult();
|
clearSearchResult();
|
||||||
centerToScreen(this);
|
centerToScreen(this);
|
||||||
// this->m_searchLineEdit->focusIn(); //打开主界面时输入框夺焦,可直接输入
|
// this->m_searchLineEdit->focusIn(); //打开主界面时输入框夺焦,可直接输入
|
||||||
this->raise();
|
|
||||||
this->activateWindow();
|
this->activateWindow();
|
||||||
|
this->raise();
|
||||||
} else {
|
} else {
|
||||||
tryHideMainwindow();
|
tryHideMainwindow();
|
||||||
}
|
}
|
||||||
|
@ -377,7 +383,7 @@ void MainWindow::initTimer() {
|
||||||
*/
|
*/
|
||||||
bool MainWindow::tryHideMainwindow()
|
bool MainWindow::tryHideMainwindow()
|
||||||
{
|
{
|
||||||
if (!m_isAskDialogVisible && QApplication::activeModalWidget() == nullptr) {
|
if (QApplication::activeModalWidget() == nullptr) {
|
||||||
qDebug()<<"Mainwindow will be hidden";
|
qDebug()<<"Mainwindow will be hidden";
|
||||||
m_currentSearchAsked = false;
|
m_currentSearchAsked = false;
|
||||||
m_askTimer->stop();
|
m_askTimer->stop();
|
||||||
|
@ -454,7 +460,7 @@ bool MainWindow::eventFilter(QObject *watched, QEvent *event)
|
||||||
if (watched == this) {
|
if (watched == this) {
|
||||||
//失焦退出
|
//失焦退出
|
||||||
if (event->type() == QEvent::ActivationChange) {
|
if (event->type() == QEvent::ActivationChange) {
|
||||||
if (QApplication::activeWindow() != this) {
|
if (QApplication::activeWindow() != this && QApplication::activeWindow() != m_askDialog) {
|
||||||
tryHideMainwindow();
|
tryHideMainwindow();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,7 +151,7 @@ void UkuiSearchDbusServices::onSearchKeyword(const QString &display, const QStri
|
||||||
void UkuiSearchDbusServices::onMainWindowSwitch(const QString &display)
|
void UkuiSearchDbusServices::onMainWindowSwitch(const QString &display)
|
||||||
{
|
{
|
||||||
if(m_display == display) {
|
if(m_display == display) {
|
||||||
if (m_mainWindow->isActiveWindow()) {
|
if (m_mainWindow->isVisible()) {
|
||||||
m_mainWindow->tryHide();
|
m_mainWindow->tryHide();
|
||||||
} else {
|
} else {
|
||||||
m_mainWindow->bootOptionsFilter("-s");
|
m_mainWindow->bootOptionsFilter("-s");
|
||||||
|
|
Loading…
Reference in New Issue