Browse Source

Fix selection expansion by retaining focused input selections during global key events (#20205)

Luke Parker 4 tháng trước cách đây
mục cha
commit
fa96cb9c6e
1 tập tin đã thay đổi với 7 bổ sung1 xóa
  1. 7 1
      packages/opencode/src/cli/cmd/tui/app.tsx

+ 7 - 1
packages/opencode/src/cli/cmd/tui/app.tsx

@@ -299,7 +299,8 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
 
   useKeyboard((evt) => {
     if (!Flag.OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT) return
-    if (!renderer.getSelection()) return
+    const sel = renderer.getSelection()
+    if (!sel) return
 
     // Windows Terminal-like behavior:
     // - Ctrl+C copies and dismisses selection
@@ -323,6 +324,11 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
       return
     }
 
+    const focus = renderer.currentFocusedRenderable
+    if (focus?.hasSelection() && sel.selectedRenderables.includes(focus)) {
+      return
+    }
+
     renderer.clearSelection()
   })