@@ -36,7 +36,13 @@ import {
3636 isClaudeCodeCommand ,
3737 type ShellIntegrationStatus ,
3838} from "./osc-handlers" ;
39- import { bufferLinesToText , createTempFileFromBlob , extractAllClipboardData , normalizeCursorStyle } from "./termutil" ;
39+ import {
40+ bufferLinesToText ,
41+ createTempFileFromBlob ,
42+ extractAllClipboardData ,
43+ normalizeCursorStyle ,
44+ quoteForPosixShell ,
45+ } from "./termutil" ;
4046
4147const dlog = debug ( "wave:termwrap" ) ;
4248
@@ -276,13 +282,13 @@ export class TermWrap {
276282 this . handleResize_debounced = debounce ( 50 , this . handleResize . bind ( this ) ) ;
277283 this . terminal . open ( this . connectElem ) ;
278284
279- this . connectElem . addEventListener ( "dragover" , ( e : DragEvent ) => {
285+ const dragoverHandler = ( e : DragEvent ) => {
280286 e . preventDefault ( ) ;
281287 if ( e . dataTransfer ) {
282288 e . dataTransfer . dropEffect = "copy" ;
283289 }
284- } ) ;
285- this . connectElem . addEventListener ( "drop" , ( e : DragEvent ) => {
290+ } ;
291+ const dropHandler = ( e : DragEvent ) => {
286292 e . preventDefault ( ) ;
287293 if ( ! e . dataTransfer || e . dataTransfer . files . length === 0 ) {
288294 return ;
@@ -292,13 +298,20 @@ export class TermWrap {
292298 const file = e . dataTransfer . files [ i ] ;
293299 const filePath = getApi ( ) . getPathForFile ( file ) ;
294300 if ( filePath ) {
295- const quoted = "'" + filePath . replace ( / ' / g, "'\\''" ) + "'" ;
296- paths . push ( quoted ) ;
301+ paths . push ( quoteForPosixShell ( filePath ) ) ;
297302 }
298303 }
299304 if ( paths . length > 0 ) {
300- this . terminal . paste ( paths . join ( " " ) ) ;
305+ this . terminal . paste ( paths . join ( " " ) + " " ) ;
301306 }
307+ } ;
308+ this . connectElem . addEventListener ( "dragover" , dragoverHandler ) ;
309+ this . connectElem . addEventListener ( "drop" , dropHandler ) ;
310+ this . toDispose . push ( {
311+ dispose : ( ) => {
312+ this . connectElem . removeEventListener ( "dragover" , dragoverHandler ) ;
313+ this . connectElem . removeEventListener ( "drop" , dropHandler ) ;
314+ } ,
302315 } ) ;
303316 this . handleResize ( ) ;
304317 const pasteHandler = this . pasteHandler . bind ( this ) ;
0 commit comments