diff --git a/webview-ui/src/components/chat/ChatTextArea.tsx b/webview-ui/src/components/chat/ChatTextArea.tsx index 369ae5e721..9cfeddd5ea 100644 --- a/webview-ui/src/components/chat/ChatTextArea.tsx +++ b/webview-ui/src/components/chat/ChatTextArea.tsx @@ -614,7 +614,10 @@ const ChatTextArea = forwardRef( e.preventDefault() setIsDraggingOver(false) - const text = e.dataTransfer.getData("application/vnd.code.uri-list") + const textFieldList = e.dataTransfer.getData("text") + const textUriList = e.dataTransfer.getData("application/vnd.code.uri-list") + // When textFieldList is empty, it may attempt to use textUriList obtained from drag-and-drop tabs; if not empty, it will use textFieldList. + const text = textFieldList || textUriList if (text) { // Split text on newlines to handle multiple files const lines = text.split(/\r?\n/).filter((line) => line.trim() !== "") diff --git a/webview-ui/src/utils/path-mentions.ts b/webview-ui/src/utils/path-mentions.ts index 1afa76156a..3a499688d6 100644 --- a/webview-ui/src/utils/path-mentions.ts +++ b/webview-ui/src/utils/path-mentions.ts @@ -12,8 +12,20 @@ * @returns A mention-friendly path */ export function convertToMentionPath(path: string, cwd?: string): string { - // Strip file:// protocol if present - let pathWithoutProtocol = path.startsWith("file://") ? path.substring(7) : path + // Strip file:// or vscode-remote:// protocol if present + let pathWithoutProtocol = path + + if (path.startsWith("file://")) { + pathWithoutProtocol = path.substring(7) + } else if (path.startsWith("vscode-remote://")) { + const protocolStripped = path.substring("vscode-remote://".length) + const firstSlashIndex = protocolStripped.indexOf("/") + if (firstSlashIndex !== -1) { + pathWithoutProtocol = protocolStripped.substring(firstSlashIndex + 1) + } else { + pathWithoutProtocol = "" + } + } try { pathWithoutProtocol = decodeURIComponent(pathWithoutProtocol)