캐릭터 창은 현재 캔버스의 불투명 픽셀에서만 클릭과 드래그를 받는다. 말풍선은 둥근 본체와 삼각형 꼬리 안에서만 입력을 받는다. 투명한 여백의 클릭은 뒤쪽 창으로 통과한다. 네이티브 마우스 전달이 중단되어도 screen API의 커서 좌표를 창 콘텐츠의 DIP 좌표 및 페이지 확대율로 변환해 입력을 복구한다. 말풍선을 드래그해도 캐릭터와 함께 이동한다.
드래그 중에는 포인터를 캡처하고 화면 가장자리 스냅을 보류한다. 버튼 해제·캡처 취소·포커스 상실 시 드래그를 종료한다. 말풍선은 최신 배치 계산을 적용하며, 이동할 때마다 설정된 크기와 위치를 함께 지정한다. setPosition()의 네이티브 크기 읽기·쓰기 과정에서 소수 배율 반올림이 누적되는 경로를 사용하지 않는다. 캐릭터 배율은 네이티브 창 크기 대신 Character Size 설정을 따른다.
pnpm lint, pnpm test:coverage --runInBand를 실행한다.pnpm test:overlays는 격리된 Electron 테스트 창에서 2D·3D 및 Character Size 30/40/50/75/100%의 픽셀 판정·30회 왕복 이동을 검증한다. Windows에서는 OS 마우스 입력을 보내 불투명 영역의 앱 클릭, 투명 영역 뒤의 수신 창 클릭, 실제 드래그를 확인한다. 실행 중 테스트 창과 마우스를 조작하지 않는다.--force-device-scale-factor=1.25, 1.5, 2도 확인한다. 강제 배율 검사는 서로 다른 배율의 물리 모니터 사이 이동을 대체하지 않는다. 결과와 캡처는 out/overlay-tests/ 및 CI artifact에 저장한다.이미지의 투명한 부분은 클릭 통과 영역이다. 입력 전달과 반복 이동은 정적 캡처 외에 위 검증 항목으로 확인한다.
| 2D | 3D | 말풍선 |
|---|---|---|
![]() |
![]() |
![]() |