From 4d0b4e0a88fc219f944a6301654f2b43b5ba272f Mon Sep 17 00:00:00 2001 From: yeshanshan Date: Tue, 28 Oct 2025 15:39:22 +0800 Subject: [PATCH] fix: improve text field focus behavior with context menu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Add contextMenuVisible property to TextField to track menu visibility 2. Update SearchEdit's editting property to include contextMenuVisible state 3. Modify EditPanel to show border when context menu is visible 4. Add onClosed handler to context menu to maintain text field focus Log: Fixed text field losing focus when context menu is closed Influence: 1. Test opening context menu in text fields and search inputs 2. Verify text field maintains focus after closing context menu 3. Check that search edit layout remains consistent during context menu usage 4. Test border visibility in text fields when context menu is open 5. Verify search icon positioning in SearchEdit during context menu operations fix: 改进带上下文菜单的文本框焦点行为 1. 为 TextField 添加 contextMenuVisible 属性以跟踪菜单可见性 2. 更新 SearchEdit 的 editting 属性以包含上下文菜单可见状态 3. 修改 EditPanel 在上下文菜单可见时显示边框 4. 添加上下文菜单关闭时的处理程序以保持文本框焦点 Log: 修复关闭上下文菜单时文本框失去焦点的问题 Influence: 1. 测试在文本框和搜索输入中打开上下文菜单 2. 验证关闭上下文菜单后文本框保持焦点 3. 检查搜索编辑布局在上下文菜单使用期间保持一致 4. 测试上下文菜单打开时文本框的边框可见性 5. 验证上下文菜单操作期间 SearchEdit 中搜索图标的位置 PMS: BUG-315333 --- qt6/src/qml/SearchEdit.qml | 2 +- qt6/src/qml/TextField.qml | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/qt6/src/qml/SearchEdit.qml b/qt6/src/qml/SearchEdit.qml index 240787c9..cca234f0 100644 --- a/qt6/src/qml/SearchEdit.qml +++ b/qt6/src/qml/SearchEdit.qml @@ -10,7 +10,7 @@ import org.deepin.dtk.style 1.0 as DS LineEdit { id: control property alias placeholder: centerIndicatorLabel.text - property bool editting: control.activeFocus || (text.length !== 0) + property bool editting: control.activeFocus || control.contextMenuVisible || (text.length !== 0) leftPadding: (editting) ? searchIcon.width + DS.Style.searchEdit.iconLeftMargin + DS.Style.searchEdit.iconRightMargin : 0 diff --git a/qt6/src/qml/TextField.qml b/qt6/src/qml/TextField.qml index 1d83fcfd..319ea335 100644 --- a/qt6/src/qml/TextField.qml +++ b/qt6/src/qml/TextField.qml @@ -18,6 +18,7 @@ T.TextField { property alias alertText: panel.alertText property alias alertDuration: panel.alertDuration property alias showAlert: panel.showAlert + property alias contextMenuVisible: contextMenu.visible implicitWidth: Math.max(DS.Style.control.implicitWidth(control), placeholderText ? placeholder.implicitWidth + leftPadding + rightPadding @@ -52,6 +53,7 @@ T.TextField { background: EditPanel { id: panel control: control + showBorder: control.activeFocus || control.contextMenuVisible implicitWidth: DS.Style.edit.width implicitHeight: DS.Style.edit.textFieldHeight } @@ -74,6 +76,8 @@ T.TextField { Menu { id: contextMenu + // Force the text field to keep focus when the context menu is closed + onClosed: control.forceActiveFocus() MenuItem {