Skip to content

rhwp-studio: 마우스 드래그 텍스트 블럭 선택 후 상태표시줄 폰트 크기 증가 마커 클릭 시 동작 부재 #780

@edwardkim

Description

@edwardkim

증상

본문 텍스트를 마우스 드래그로 블럭 선택한 후, 상태표시줄(또는 도구 모음)의 폰트 크기 증가 마커 클릭 시 폰트 크기 증가 동작 부재.

대조 (정상 동작):

  • 본문 커서 위치에서 Shift+키로 블럭 선택 후 동일 마커 클릭 시 정상 동작 ✅

재현 절차

  1. rhwp-studio dev server 실행
  2. 문서 열기
  3. 마우스 드래그로 본문 텍스트 블럭 선택
  4. 상태표시줄/도구 모음의 폰트 크기 증가 마커 클릭
  5. 결과: 폰트 크기 변경 부재 ❌

대조:
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 });
}

진단 가설

  1. 마우스 드래그 선택: mouseup 이벤트 → cursor selection 등록
  2. 상태표시줄/도구 모음 클릭: 마우스 클릭 시 focus 영역 영역 textarea/contenteditable 영역 영역 → 상태표시줄 버튼 영역 영역 이동 → selection 손실 가능성
  3. 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 — 상태표시줄/도구 모음 버튼 영역 영역 mousedownevent.preventDefault()

버튼 영역 영역 mousedown 핸들러 영역 영역 event.preventDefault() 호출 — focus 이동 차단 영역 영역 cursor selection 보존.

옵션 B — selection 영역 영역 click 시점 영역 영역 cache 영역 영역 의 보존

adjustFontSize 호출 직전 영역 영역 cursor selection 영역 영역 cache 영역 영역 → 호출 영역 영역 cache 영역 영역 우선 사용.

관련

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions