Skip to content

Commit 1988a3e

Browse files
committed
fix: prevent autocomplete from highlighting items without mouse movement
- Added hasMouseMoved state to track actual mouse movement - Only allow hover highlighting after mouse has moved - Reset mouse movement tracking when menu changes (new search) - Fixes issue where autocomplete would highlight items under cursor on open Fixes #8615
1 parent 3a47c55 commit 1988a3e

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

webview-ui/src/components/chat/ContextMenu.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ const ContextMenu: React.FC<ContextMenuProps> = ({
4545
commands = [],
4646
}) => {
4747
const [materialIconsBaseUri, setMaterialIconsBaseUri] = useState("")
48+
const [hasMouseMoved, setHasMouseMoved] = useState(false)
4849
const menuRef = useRef<HTMLDivElement>(null)
4950

5051
const filteredOptions = useMemo(() => {
@@ -73,6 +74,11 @@ const ContextMenu: React.FC<ContextMenuProps> = ({
7374
setMaterialIconsBaseUri(w.MATERIAL_ICONS_BASE_URI)
7475
}, [])
7576

77+
// Reset mouse moved state when menu changes
78+
useEffect(() => {
79+
setHasMouseMoved(false)
80+
}, [searchQuery, selectedType])
81+
7682
const renderOptionContent = (option: ContextMenuQueryItem) => {
7783
switch (option.type) {
7884
case ContextMenuOptionType.SectionHeader:
@@ -265,6 +271,12 @@ const ContextMenu: React.FC<ContextMenuProps> = ({
265271
})
266272
}
267273

274+
const handleMouseMove = () => {
275+
if (!hasMouseMoved) {
276+
setHasMouseMoved(true)
277+
}
278+
}
279+
268280
return (
269281
<div
270282
style={{
@@ -274,7 +286,8 @@ const ContextMenu: React.FC<ContextMenuProps> = ({
274286
right: 15,
275287
overflowX: "hidden",
276288
}}
277-
onMouseDown={onMouseDown}>
289+
onMouseDown={onMouseDown}
290+
onMouseMove={handleMouseMove}>
278291
<div
279292
ref={menuRef}
280293
style={{
@@ -365,7 +378,7 @@ const ContextMenu: React.FC<ContextMenuProps> = ({
365378
}
366379
: {}),
367380
}}
368-
onMouseEnter={() => isOptionSelectable(option) && setSelectedIndex(index)}>
381+
onMouseEnter={() => hasMouseMoved && isOptionSelectable(option) && setSelectedIndex(index)}>
369382
<div
370383
style={{
371384
display: "flex",

0 commit comments

Comments
 (0)