diff --git a/webview-ui/src/components/chat/ContextMenu.tsx b/webview-ui/src/components/chat/ContextMenu.tsx index cf4b10a981d..67ffbc5385e 100644 --- a/webview-ui/src/components/chat/ContextMenu.tsx +++ b/webview-ui/src/components/chat/ContextMenu.tsx @@ -45,6 +45,7 @@ const ContextMenu: React.FC = ({ commands = [], }) => { const [materialIconsBaseUri, setMaterialIconsBaseUri] = useState("") + const [hasMouseMoved, setHasMouseMoved] = useState(false) const menuRef = useRef(null) const filteredOptions = useMemo(() => { @@ -73,6 +74,11 @@ const ContextMenu: React.FC = ({ setMaterialIconsBaseUri(w.MATERIAL_ICONS_BASE_URI) }, []) + // Reset mouse moved state when menu changes + useEffect(() => { + setHasMouseMoved(false) + }, [searchQuery, selectedType]) + const renderOptionContent = (option: ContextMenuQueryItem) => { switch (option.type) { case ContextMenuOptionType.SectionHeader: @@ -265,6 +271,12 @@ const ContextMenu: React.FC = ({ }) } + const handleMouseMove = () => { + if (!hasMouseMoved) { + setHasMouseMoved(true) + } + } + return (
= ({ right: 15, overflowX: "hidden", }} - onMouseDown={onMouseDown}> + onMouseDown={onMouseDown} + onMouseMove={handleMouseMove}>
= ({ } : {}), }} - onMouseEnter={() => isOptionSelectable(option) && setSelectedIndex(index)}> + onMouseEnter={() => hasMouseMoved && isOptionSelectable(option) && setSelectedIndex(index)}>