feat: 표 셀 높이/너비 균등화 커맨드 구현#758
Conversation
table:cell-height-equal (H) — 모든 행의 높이를 평균으로 균등화 table:cell-width-equal (W) — 모든 열의 너비를 평균으로 균등화 getCellProperties로 HWPUNIT 단위 크기 조회 후 resizeTableCells로 delta 적용. rowSpan/colSpan > 1 셀은 건너뛰어 병합 셀과 충돌 방지. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
표 편집 기능에서 기존 스텁으로 남아 있던 셀 높이/너비 균등화 커맨드(table:cell-height-equal, table:cell-width-equal)를 WASM API를 이용해 실제로 동작하도록 구현한 PR입니다.
Changes:
table:cell-height-equal커맨드 구현: 표의 셀 높이를 평균값 기준으로 균등화(병합 셀rowSpan > 1제외)table:cell-width-equal커맨드 구현: 표의 셀 너비를 평균값 기준으로 균등화(병합 셀colSpan > 1제외)getTableDimensions/getCellInfo/getCellProperties로 현 상태를 수집하고resizeTableCells배치 API로 일괄 적용 후document-changed이벤트 발생
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| for (let i = 0; i < dims.cellCount; i++) { | ||
| const info = services.wasm.getCellInfo(sec, ppi, ci, i); | ||
| if (info.rowSpan > 1) continue; | ||
| const props = services.wasm.getCellProperties(sec, ppi, ci, i); | ||
| const delta = avgHeight - props.height; |
| for (let i = 0; i < dims.cellCount; i++) { | ||
| const info = services.wasm.getCellInfo(sec, ppi, ci, i); | ||
| if (info.colSpan > 1) continue; | ||
| const props = services.wasm.getCellProperties(sec, ppi, ci, i); | ||
| const delta = avgWidth - props.width; |
첫 번째 패스에서 cellIdx/row(col)/height(width)를 캐시하여 두 번째 패스에서 WASM API 재호출 없이 delta를 계산. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Copilot 리뷰 피드백 반영 (e88bd05): 첫 번째 순회에서 |
2 stub 활성화 — getTableDimensions + getCellInfo + getCellProperties + resizeTableCells 인프라 재사용: - table:cell-height-equal — 셀 높이 균등화 (행별 평균 → 전체 평균 → delta resize) - table:cell-width-equal — 셀 너비 균등화 (열별 평균 → 전체 평균 → delta resize) - 병합 셀 (rowSpan>1 / colSpan>1) 영역 영역 균등화 미포함 Copilot 리뷰 반영: 셀 정보 캐싱 영역 영역 이중 순회 제거. 검증: - tsc --noEmit ✅ - cargo test --release ALL GREEN - 광범위 sweep 170/170 same - WASM 4.68 MB 재빌드 - 웹 에디터 인터랙션 검증 ✅ 통과 (커맨드 본질) 후속 분리: - shortcutLabel 'H' / 'W' 영역 영역 shortcut-map 등록 부재 영역 영역 단축키 미동작 → 메뉴 hotkey 인프라 + H/W 단축키 활성 영역 별 task
|
@oksure 검토 완료했습니다. 감사합니다. 처리 결과Merge commit: 본질표 메뉴 2 stub 활성화 — 인프라 재사용
검증
후속 분리 — Issue #792
본 PR 영역 영역 5/10 사이클 24번째 PR — 수고하셨습니다. |
@oksure — Issue #792 (PR #758 5/10 머지 영역 H/W shortcutLabel 도입 후 단축키 미동작 발견): 한컴 메뉴 hotkey (메뉴 열린 상태 영역 단일 키 영역 항목 활성) 인프라 정합. 본질 (2 commits, menu-bar.ts +26/-2): - setupKeyboardClose 영역 hotkey 매칭 추가 — 메뉴 열린 상태 영역 modifier 없는 단일 키 영역 .md-shortcut 텍스트 매칭 → 해당 .md-item dispatch + 메뉴 닫기 - Copilot 리뷰 반영 (3cdf7a6): hotkey 경로 영역 data-* params 전달 — 메뉴 클릭 경로 영역 동일 params 일관성 영역 좁힘 가드: - modifier 키 동반 시 무시 (전역 shortcut-map 충돌 방지) - 단일 문자 키만 (e.key.length === 1) - disabled 항목 제외 (:not(.disabled)) - 대소문자 무시 (.toUpperCase()) - 메뉴 닫힌 상태 early return (일반 텍스트 입력 영향 부재) - Escape 기존 동작 보존 자기 검증: tsc + cargo test ALL GREEN, WASM 재빌드 불필요 (TypeScript 단일) 시각 판정: 작업지시자 인터랙션 검증 ✅ 통과 (표 메뉴 H/W + 전역 단축키 회귀 부재) CI: ✅ Build & Test + CodeQL (js-ts/python/rust) + Canvas visual diff
변경 내용
table:cell-height-equal(단축키 H)과table:cell-width-equal(단축키 W) 스텁 커맨드를 실제 동작하도록 구현했습니다.table:cell-height-equal (셀 높이를 같게)
getCellProperties로 각 셀의 HWPUNIT 높이를 조회resizeTableCells로 delta 값을 전달하여 리사이즈rowSpan > 1인 병합 셀은 건너뜀table:cell-width-equal (셀 너비를 같게)
getCellProperties+resizeTableCells사용colSpan > 1인 병합 셀은 건너뜀구현 방식
getTableDimensions로 셀 개수 조회getCellInfo로 행/열 위치,getCellProperties로 현재 크기 조회resizeTableCellsAPI로 일괄 적용테스트
cargo test전체 통과cargo clippy -- -D warnings경고 없음감사합니다.