Skip to content

Commit 6e6c89d

Browse files
committed
small edits (dispose handlers)
1 parent 1efa5ad commit 6e6c89d

2 files changed

Lines changed: 24 additions & 7 deletions

File tree

frontend/app/view/term/termutil.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,3 +389,7 @@ export function bufferLinesToText(buffer: TermTypes.IBuffer, startIndex: number,
389389

390390
return lines;
391391
}
392+
393+
export function quoteForPosixShell(filePath: string): string {
394+
return "'" + filePath.replace(/'/g, "'\\''") + "'";
395+
}

frontend/app/view/term/termwrap.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

4147
const 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

Comments
 (0)