Skip to content

Commit d90aa74

Browse files
committed
fix: fix search result grid scroll interaction
1. Changed GridViewContainer to be wrapped in an Item container for better structure 2. Set GridViewContainer interactive property to false to prevent click- through issues that prevented closing 3. Added custom MouseArea to handle wheel scrolling when scrollbar is visible 4. Implemented manual scroll position control with proper bounds checking 5. Maintained all original GridViewContainer functionality and appearance fix: 修复搜索结果网格滚动交互问题 1. 将 GridViewContainer 包装在 Item 容器中以获得更好的结构 2. 设置 GridViewContainer 的 interactive 属性为 false,防止点击穿透问题 导致无法关闭 3. 添加自定义 MouseArea 处理滚动条可见时的滚轮滚动 4. 实现手动滚动位置控制,包含适当的边界检查 5. 保持所有原始 GridViewContainer 功能和外观 PMS: BUG-324421
1 parent 80d6f79 commit d90aa74

1 file changed

Lines changed: 44 additions & 19 deletions

File tree

qml/FullscreenFrame.qml

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -604,27 +604,52 @@ InputEventItem {
604604
}
605605
}
606606

607-
GridViewContainer {
608-
id: searchResultGridViewContainer
609-
607+
Item {
610608
anchors.fill: parent
611609
visible: searchEdit.text !== ""
612-
activeFocusOnTab: visible && gridViewFocus
613-
focus: true
614-
alwaysShowHighlighted: true
615-
616-
rows: 4
617-
columns: 8
618-
paddingColumns: 0.5
619-
placeholderIcon: "search_no_result"
620-
placeholderText: qsTranslate("SearchResultView", "No search results")
621-
placeholderIconSize: 256
622-
model: delegateSearchResultModel
623-
padding: 10
624-
interactive: true
625-
vScrollBar: ScrollBar {
626-
visible: parent.model.count > 4 * 8
627-
active: parent.model.count > 4 * 8
610+
611+
GridViewContainer {
612+
id: searchResultGridViewContainer
613+
614+
anchors.fill: parent
615+
activeFocusOnTab: visible && gridViewFocus
616+
focus: true
617+
alwaysShowHighlighted: true
618+
619+
rows: 4
620+
columns: 8
621+
paddingColumns: 0.5
622+
placeholderIcon: "search_no_result"
623+
placeholderText: qsTranslate("SearchResultView", "No search results")
624+
placeholderIconSize: 256
625+
model: delegateSearchResultModel
626+
padding: 10
627+
//由于采用interactive:true会导致点击GridViewContainer区域无法关闭,
628+
//设为false后滚动条无法响应,所以写一个mousearea控制滚动条
629+
interactive: false
630+
vScrollBar: ScrollBar {
631+
id: searchScrollBar
632+
visible: parent.model.count > 4 * 8
633+
active: parent.model.count > 4 * 8
634+
}
635+
}
636+
637+
MouseArea {
638+
anchors.fill: parent
639+
acceptedButtons: Qt.NoButton
640+
onWheel: function(wheel) {
641+
if (!searchResultGridViewContainer.vScrollBar.visible) return
642+
643+
let delta = wheel.angleDelta.y
644+
let scrollStep = 0.1
645+
646+
if (delta > 0) {
647+
searchScrollBar.position = Math.max(0, searchScrollBar.position - scrollStep)
648+
} else if (delta < 0) {
649+
let maxPosition = 1.0 - searchScrollBar.size
650+
searchScrollBar.position = Math.min(maxPosition, searchScrollBar.position + scrollStep)
651+
}
652+
}
628653
}
629654
}
630655
}

0 commit comments

Comments
 (0)