summaryrefslogtreecommitdiff
path: root/apps/web
diff options
context:
space:
mode:
authorMaze Winther <mazewinther@gmail.com>2025-07-09 23:25:08 +0200
committerMaze Winther <mazewinther@gmail.com>2025-07-09 23:25:08 +0200
commitb6aa8e10d69ccf547f3cb0051d10fda014a2d01e (patch)
tree9ebae9d0aa3278683e53083f748dfad7693b3487 /apps/web
parent6ba10211496559172a121d423622883cd7677bca (diff)
downloadopencut-b6aa8e10d69ccf547f3cb0051d10fda014a2d01e.tar.gz
fix: improve keyboard event handling in timeline component
Diffstat (limited to 'apps/web')
-rw-r--r--apps/web/src/components/editor/timeline.tsx23
1 files changed, 22 insertions, 1 deletions
diff --git a/apps/web/src/components/editor/timeline.tsx b/apps/web/src/components/editor/timeline.tsx
index 01f84d71..f2d24ffc 100644
--- a/apps/web/src/components/editor/timeline.tsx
+++ b/apps/web/src/components/editor/timeline.tsx
@@ -139,6 +139,22 @@ export function Timeline() {
// Keyboard event for deleting selected elements
useEffect(() => {
const handleKeyDown = (e: KeyboardEvent) => {
+ // Don't trigger when typing in input fields or textareas
+ if (
+ e.target instanceof HTMLInputElement ||
+ e.target instanceof HTMLTextAreaElement
+ ) {
+ return;
+ }
+
+ // Only trigger when timeline is focused or mouse is over timeline
+ if (
+ !isInTimeline &&
+ !timelineRef.current?.contains(document.activeElement)
+ ) {
+ return;
+ }
+
if (
(e.key === "Delete" || e.key === "Backspace") &&
selectedElements.length > 0
@@ -151,7 +167,12 @@ export function Timeline() {
};
window.addEventListener("keydown", handleKeyDown);
return () => window.removeEventListener("keydown", handleKeyDown);
- }, [selectedElements, removeElementFromTrack, clearSelectedElements]);
+ }, [
+ selectedElements,
+ removeElementFromTrack,
+ clearSelectedElements,
+ isInTimeline,
+ ]);
// Keyboard event for undo (Cmd+Z)
useEffect(() => {