From 694f58fb73195632a9c641b884525bc1eee7a661 Mon Sep 17 00:00:00 2001 From: re2zero Date: Tue, 28 Apr 2026 13:57:38 +0800 Subject: [PATCH] fix(discovery): delay init to prevent focus stealing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move DiscoverController::init() call to after dMain->show() with 500ms delay via QTimer::singleShot, ensuring main window is visible before any discovery/auth dialogs appear. 延迟发现服务初始化至主窗口显示之后,避免主窗口抢占授权框焦点。 Log: 延迟发现服务弹框,修复焦点抢占 PMS: BUG-355969 Influence: 打开跨端协同时密码输入框默认可输入,不再被主窗口抢焦点 --- .../cooperation/core/cooperationcoreplugin.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/lib/cooperation/core/cooperationcoreplugin.cpp b/src/lib/cooperation/core/cooperationcoreplugin.cpp index eb44bb298..232a4f8ed 100644 --- a/src/lib/cooperation/core/cooperationcoreplugin.cpp +++ b/src/lib/cooperation/core/cooperationcoreplugin.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023 - 2024 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2023 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -24,6 +24,7 @@ #include #include #include +#include #ifdef __linux__ # include "base/reportlog/reportlogmanager.h" # include @@ -164,9 +165,6 @@ bool CooperaionCorePlugin::start() connect(HistoryManager::instance(), &HistoryManager::connectHistoryUpdated, DiscoverController::instance(), &DiscoverController::onConnectHistoryUpdated); DLOG << "Connected history update signals"; - DiscoverController::instance()->init(); // init zeroconf and regist - DLOG << "Discover controller initialized"; - // start network status listen after all ready CooperationUtil::instance()->initNetworkListener(); DLOG << "Network listener initialized"; @@ -199,6 +197,15 @@ bool CooperaionCorePlugin::start() dMain->show(); } + if (!onlyTransfer) { + // Delay discovery init to ensure main window is visible first, + // preventing focus stealing from the discovery/auth dialog + QTimer::singleShot(500, this, []() { + DiscoverController::instance()->init(); + DLOG << "Discover controller initialized (delayed)"; + }); + } + return true; }