diff --git a/default/quickshell/omarchy-shell/plugins/emoji-picker/EmojiPicker.qml b/default/quickshell/omarchy-shell/plugins/emoji-picker/EmojiPicker.qml index 61ce2361..ec6da781 100644 --- a/default/quickshell/omarchy-shell/plugins/emoji-picker/EmojiPicker.qml +++ b/default/quickshell/omarchy-shell/plugins/emoji-picker/EmojiPicker.qml @@ -75,7 +75,7 @@ Item { var item = root.emojis[i] if (!query || item.k.indexOf(query) >= 0) { out.push(item) - if (out.length >= 200) break // limit to keep it fast + if (out.length >= 1000) break // limit to keep it fast } } root.filteredEmojis = out @@ -109,6 +109,16 @@ Item { resultGrid.positionViewAtIndex(selectedIndex, GridView.Contain) } + function selectPage(delta) { + if (displayModel.count === 0) return + var visibleRows = Math.max(1, Math.floor(resultGrid.height / cellHeight)) + var newIndex = selectedIndex + delta * columns * visibleRows + if (newIndex < 0) newIndex = 0 + if (newIndex >= displayModel.count) newIndex = displayModel.count - 1 + selectedIndex = newIndex + resultGrid.positionViewAtIndex(selectedIndex, GridView.Contain) + } + function setFilter(nextFilter) { root.filterText = nextFilter root.selectedIndex = 0 @@ -215,6 +225,12 @@ Item { } else if (event.key === Qt.Key_Down) { root.selectRow(1) event.accepted = true + } else if (event.key === Qt.Key_PageUp) { + root.selectPage(-1) + event.accepted = true + } else if (event.key === Qt.Key_PageDown) { + root.selectPage(1) + event.accepted = true } else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { root.activateIndex(root.selectedIndex) event.accepted = true