Skip to content

rhwp-studio: 스크롤바 드래그 후 마우스 release 시 이전 페이지로 자동 복귀 #779

@jangster77

Description

@jangster77

결함 영역

rhwp-studio: 스크롤바로 페이지 스크롤 후 마우스 release 시 이전 페이지로 자동 복귀.

재현 절차

  1. 문서 로드 (예: 다중 페이지 HWP/HWPX 문서, hwp3-sample10.hwp 763 페이지)
  2. 임의 페이지 (예: 페이지 1) 에서 caret 위치 placement (클릭)
  3. 우측 scrollbar drag → 페이지 2 (또는 그 이상) 로 스크롤
  4. 마우스 release → 페이지 1 (caret 의 원본 위치) 로 자동 복귀

기대 동작

마우스 release 후 사용자가 스크롤한 위치 (페이지 2) 보존.

실제 동작

마우스 release 시점에 caret 의 원본 페이지 (페이지 1) 로 자동 scroll back.

가설 (본질 추정)

`rhwp-studio/src/engine/input-handler.ts:1609` `updateCaret()` 내 `scrollCaretIntoView(rect)` 호출 추정:

```typescript
private updateCaret(): void {
const rect = this.cursor.getRect();
if (rect) {
...
this.scrollCaretIntoView(rect); // ← 본 결함 후보
}
...
}
```

`scrollCaretIntoView` (line 1940) 가 caret 위치 (page X) 가 viewport 밖이면 강제 scroll. 사용자가 scrollbar 로 page Y 로 이동했지만 caret 은 여전히 page X → 어떤 trigger 로 `updateCaret` 호출 시 `scrollCaretIntoView` 가 page X 로 다시 scroll back.

Trigger 후보 (조사 필요)

본 시나리오는 PR #718 (Task #661, 드래그 selection 영역) 의 정정 패턴과 유사하나 순수 scrollbar 사용 영역 까지 영향 미치는지 추가 조사 필요.

환경

  • rhwp-studio (web Canvas viewer)
  • 다중 페이지 문서 (다수 paragraph + 명확한 페이지 구분)
  • 본 결함은 ALL formats (HWP/HWP5/HWPX/HWP3 native) 영향 추정

후속

  • 본질 영역 정밀 진단 (scrollbar release 영역 의 어떤 핸들러 chain 이 `updateCaret` trigger?)
  • 정정 영역: `scrollCaretIntoView` 가드 (사용자 의도적 scroll 영역 의 caret-out-of-view 허용) — PR Task #661: 드래그 선택 중 커서/스크롤 튐 정정 (closes #661) #718 의 `updateCaretNoScroll` 패턴 확장 가능성
  • 회귀 가드 e2e 영역 (드래그 selection 회귀 가드 `drag-selection-autoscroll.test.mjs` 패턴 정합)

우선순위

사용자 (작업지시자) 가 다중 페이지 문서를 일상적으로 사용 시 본 결함 으로 정상 스크롤 사용 자체 차단 영역 — UX 차단 결함, 우선순위 높음.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions