fix: 표 셀 내부 드래그 선택 시 셀 컨텍스트 이탈 방지 (#669)#795
Conversation
드래그 중 hitTest 결과가 anchor와 다른 셀(또는 본문)을 가리키면 커서 이동을 무시하여 셀 내부 선택이 유지되도록 수정. 원인: 셀 내부의 빈 영역(텍스트 라인 아래)을 드래그하면 hitTest가 본문 레벨 위치를 반환하여 셀↔본문 혼합 선택이 발생하고, updateSelection에서 렌더링이 생략되는 문제.
There was a problem hiding this comment.
Pull request overview
표 셀 내부에서 드래그 선택 중 hitTest가 셀 밖(본문 레벨) 위치를 반환해 선택 하이라이트가 사라지는 문제를 방지하기 위해, 드래그 중 커서 이동을 “anchor와 동일한 셀 컨텍스트”로 제한합니다.
Changes:
- 드래그 중(
onMouseMove) selection anchor가 셀 컨텍스트를 가지는 경우, hitTest 결과가 동일한 셀 컨텍스트가 아니면 커서 이동을 무시하도록 가드 로직 추가 - 셀↔본문(또는 다른 셀)로 인한 “혼합 선택”이 생성되지 않게 하여 선택 렌더링이 지속되도록 동작 보정
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
표 셀 내부 텍스트 드래그 선택 시 선택 하이라이트 미렌더링 결함 정정 (Issue #669). 본질: 드래그 중 hitTest 가 셀 내부 빈 영역에서 본문 레벨 위치 반환 → anchor(셀) ↔ focus(본문) 혼합 → updateSelection() 영역 영역 selectionRenderer.clear() 호출 → 선택 미렌더링. 정정 (input-handler.ts:1014 updateTextSelectionDragFromPointer 래퍼 안 +14): - anchor 셀 내부일 때 hit 가 같은 셀 컨텍스트 (parentParaIndex/controlIndex/cellIndex 모두 일치) 가 아니면 cursor.moveTo 건너뜀 - 셀 내 선택 유지 본 환경 충돌 수동 해결: HEAD (devel) 영역 영역 PR #718 (Task #661) updateTextSelectionDragFromPointer 래퍼 사용 영역 영역 incoming 의 onMouseMove 영역 영역 직접 hit + moveTo 영역 영역 비대칭. 본 환경 영역 영역 셀 가드 영역 영역 input-handler.ts 의 래퍼 안 적용 (PR #718 정합성 보존). 검증: - tsc --noEmit ✅ - cargo test --release ALL GREEN - 광범위 sweep 170/170 same - WASM 4.68 MB 재빌드 - 작업지시자 웹 에디터 시각 검증 ✅ 통과 closes #669
|
@oksure 검토 완료했습니다. 감사합니다. 처리 결과Merge commit: 본질표 셀 내부 텍스트 드래그 선택 시 hitTest 영역 영역 셀 빈 영역 영역 본문 레벨 반환 → anchor(셀) ↔ focus(본문) 혼합 → selectionRenderer.clear 호출 → 선택 미렌더링. 본 정정 영역 영역 anchor 셀 내부 영역 영역 hit 가 같은 셀 컨텍스트 아니면 cursor.moveTo 건너뜀 (셀 내 선택 유지). 본 환경 충돌 수동 해결HEAD (devel) 영역 영역 PR #718 (Task #661) updateTextSelectionDragFromPointer 래퍼 사용 영역 영역 incoming 의 onMouseMove 직접 hit + moveTo 영역 영역 비대칭. 본 환경 영역 영역 셀 가드 영역 영역 input-handler.ts 래퍼 안 적용 영역 영역 PR #718 정합성 보존. 검증
closes #669. 5/11 사이클 5번째 PR — 수고하셨습니다. |
|
Merged. Merge commit: 58176ed |
문제
표 셀 내부에서 텍스트를 드래그 선택하면 선택이 보이지 않고 커서만 이동하는 현상.
원인 분석
드래그 중
hitTest가 셀 내부의 빈 영역(텍스트 라인 외부)에서 본문 레벨 위치를 반환하면:parentParaIndex있음)parentParaIndex없음)updateSelection()에서 이 조합은 "셀↔본문 혼합 선택"으로 판별되어selectionRenderer.clear()가 호출됨. 결과적으로 선택 하이라이트가 렌더링되지 않음.수정
드래그 핸들러(
onMouseMove)에서 anchor가 셀 내부일 때, hitTest 결과가 같은 셀 컨텍스트(parentParaIndex/controlIndex/cellIndex일치)가 아니면 커서 이동을 건너뜀.이로써 셀 내부 드래그 시 커서가 항상 같은 셀 내에 머물러 선택 렌더링이 정상 동작함.
테스트
cargo test+cargo clippy통과감사합니다.