증상
본문 텍스트를 마우스 드래그로 블럭 선택한 후, 상태표시줄(또는 도구 모음)의 폰트 크기 증가 마커 클릭 시 폰트 크기 증가 동작 부재.
대조 (정상 동작):
- 본문 커서 위치에서 Shift+키로 블럭 선택 후 동일 마커 클릭 시 정상 동작 ✅
재현 절차
- rhwp-studio dev server 실행
- 문서 열기
- 마우스 드래그로 본문 텍스트 블럭 선택
- 상태표시줄/도구 모음의 폰트 크기 증가 마커 클릭
- 결과: 폰트 크기 변경 부재 ❌
대조:
1-2. 동일
3. 본문 커서 위치 → Shift+화살표 또는 Shift+End 등으로 블럭 선택
4. 동일 마커 클릭
5. 결과: 폰트 크기 정상 증가 ✅
본 환경 점검 결과
본질 진단 — cursor.hasSelection() 가드
rhwp-studio/src/engine/input-handler.ts::adjustFontSize:
adjustFontSize(delta: number): void {
if (!this.cursor.hasSelection()) return; // ← 가드
const current = this.getCharPropertiesAtCursor();
const newSize = Math.max(100, (current.fontSize ?? 1000) + delta);
this.applyCharFormat({ fontSize: newSize });
}
진단 가설
- 마우스 드래그 선택:
mouseup 이벤트 → cursor selection 등록
- 상태표시줄/도구 모음 클릭: 마우스 클릭 시 focus 영역 영역 textarea/contenteditable 영역 영역 → 상태표시줄 버튼 영역 영역 이동 → selection 손실 가능성
adjustFontSize 호출 시 cursor.hasSelection() === false → 조기 return
점검 영역
- 상태표시줄/도구 모음 버튼 영역 영역
mousedown 영역 영역 event.preventDefault() 또는 unselectable 속성 영역 영역 점검
- 또는 selection 영역 영역 click 시점 영역 영역 보존 영역 영역 영역 의 mechanism 점검 필요
영향 범위
format:font-size-increase (Alt+Shift+E, Ctrl+])
format:font-size-decrease (Alt+Shift+R, Ctrl+[)
- 동일
adjustFontSize 호출 영역 영역 다른 명령어 영역 영역 영향 가능성
처리 방향 (제안)
옵션 A — 상태표시줄/도구 모음 버튼 영역 영역 mousedown 시 event.preventDefault()
버튼 영역 영역 mousedown 핸들러 영역 영역 event.preventDefault() 호출 — focus 이동 차단 영역 영역 cursor selection 보존.
옵션 B — selection 영역 영역 click 시점 영역 영역 cache 영역 영역 의 보존
adjustFontSize 호출 직전 영역 영역 cursor selection 영역 영역 cache 영역 영역 → 호출 영역 영역 cache 영역 영역 우선 사용.
관련
증상
본문 텍스트를 마우스 드래그로 블럭 선택한 후, 상태표시줄(또는 도구 모음)의 폰트 크기 증가 마커 클릭 시 폰트 크기 증가 동작 부재.
대조 (정상 동작):
재현 절차
대조:
1-2. 동일
3. 본문 커서 위치 → Shift+화살표 또는 Shift+End 등으로 블럭 선택
4. 동일 마커 클릭
5. 결과: 폰트 크기 정상 증가 ✅
본 환경 점검 결과
본질 진단 —
cursor.hasSelection()가드rhwp-studio/src/engine/input-handler.ts::adjustFontSize:진단 가설
mouseup이벤트 → cursor selection 등록adjustFontSize호출 시cursor.hasSelection() === false→ 조기 return점검 영역
mousedown영역 영역event.preventDefault()또는unselectable속성 영역 영역 점검영향 범위
format:font-size-increase(Alt+Shift+E, Ctrl+])format:font-size-decrease(Alt+Shift+R, Ctrl+[)adjustFontSize호출 영역 영역 다른 명령어 영역 영역 영향 가능성처리 방향 (제안)
옵션 A — 상태표시줄/도구 모음 버튼 영역 영역
mousedown시event.preventDefault()버튼 영역 영역
mousedown핸들러 영역 영역event.preventDefault()호출 — focus 이동 차단 영역 영역 cursor selection 보존.옵션 B — selection 영역 영역 click 시점 영역 영역 cache 영역 영역 의 보존
adjustFontSize호출 직전 영역 영역 cursor selection 영역 영역 cache 영역 영역 → 호출 영역 영역 cache 영역 영역 우선 사용.관련