Skip to content

Commit 8e6e8b3

Browse files
committed
fix: 将鼠标操作进行页面切换时,重新处理焦点给到第一个应用
1. 将属性从 `scrolledByWheel` 重命名为 `changedByNonKeyboard` 以更好地反 映其用途 2. 更新了整个代码中对重命名属性的所有引用 3. 添加了当页面指示器更改当前索引时设置 `changedByNonKeyboard` 的逻辑 4. 该属性现在跟踪任何非键盘导航发起的页面更改,包括鼠标滚轮滚动和指示器 点击 Log: 改进了页面导航跟踪以实现更好的焦点管理 Influence: 1. 测试使用鼠标滚轮进行页面导航 - 焦点应转到新页面的第一个应用 2. 测试点击页面指示器 - 焦点应转到新页面的第一个应用 3. 测试键盘页面导航 - 焦点应遵循键盘导航规则 4. 验证在不同导航方法之间切换时的焦点行为 5. 测试边缘情况,如从最后一页循环到第一页 PMS: BUG-339605
1 parent dde8f4c commit 8e6e8b3

1 file changed

Lines changed: 11 additions & 6 deletions

File tree

qml/FullscreenFrame.qml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -252,14 +252,14 @@ InputEventItem {
252252
if (!searchEdit.focus) { // reset keyboard focus when using mouse to flip page, but keep searchEdit focus
253253
baseLayer.focus = true
254254
}
255-
listviewPage.scrolledByWheel = true
255+
listviewPage.changedByNonKeyboard = true
256256
decrementPageIndex(listviewPage)
257257
} else if (toPage > 0) {
258258
flipPageDelay.start()
259259
if (!searchEdit.focus) { // reset keyboard focus when using mouse to flip page, but keep searchEdit focus
260260
baseLayer.focus = true
261261
}
262-
listviewPage.scrolledByWheel = true
262+
listviewPage.changedByNonKeyboard = true
263263
incrementPageIndex(listviewPage)
264264
}
265265
}
@@ -323,6 +323,11 @@ InputEventItem {
323323
color: Qt.rgba(0, 0, 0, 0.1)
324324
}
325325
}
326+
onCurrentIndexChanged: {
327+
if (listviewPage.currentIndex !== currentIndex) {
328+
listviewPage.changedByNonKeyboard = true
329+
}
330+
}
326331
}
327332
}
328333
}
@@ -377,7 +382,7 @@ InputEventItem {
377382
}
378383

379384
property int previousIndex: -1
380-
property bool scrolledByWheel: false
385+
property bool changedByNonKeyboard: false
381386
model: itemPageModel
382387

383388
delegate: FocusScope {
@@ -434,10 +439,10 @@ InputEventItem {
434439
listviewPage.previousIndex = listviewPage.currentIndex
435440
return
436441
}
437-
// 如果是通过滚轮翻页,始终将焦点设置到第一个应用
438-
if (listviewPage.scrolledByWheel) {
442+
// 如果是通过非键盘方式(滚轮/indicator)翻页,始终将焦点设置到第一个应用
443+
if (listviewPage.changedByNonKeyboard) {
439444
gridViewContainer.setPreviousPageSwitch(false)
440-
listviewPage.scrolledByWheel = false
445+
listviewPage.changedByNonKeyboard = false
441446
} else if (listviewPage.currentIndex + 1 === listviewPage.previousIndex || (listviewPage.previousIndex === 0 && listviewPage.currentIndex === listviewPage.count - 1)) {
442447
gridViewContainer.setPreviousPageSwitch(true)
443448
} else {

0 commit comments

Comments
 (0)