Skip to content

Jira/164#3077

Closed
kimorkim wants to merge 2 commits into
developfrom
jira/164
Closed

Jira/164#3077
kimorkim wants to merge 2 commits into
developfrom
jira/164

Conversation

@kimorkim

Copy link
Copy Markdown
Collaborator

작업 내용

작품 실행 중 묻고 기다리기(ask) 블록이 띄우는 텍스트 입력창이, 우하단 전체 화면 버튼으로 네이티브 전체화면에 진입하면 입력이 되지 않던 문제를 수정합니다.

원인

캔버스에 보이는 입력창(PIXICanvasInput / CanvasInput)은 시각적 표현만 캔버스에 그려지고, 실제 키보드 입력은 별도의 숨겨진 <input>(.entryCanvasHiddenInput)이 받습니다. 이 숨겨진 input은 document.body 바로 아래에 붙습니다.

전체 화면 버튼은 .entry.minimize 엘리먼트에 네이티브 Fullscreen API(requestFullscreen)를 적용하는데, Fullscreen API 규약상 전체화면 엘리먼트와 그 하위 요소만 top-layer에서 포커스/키 입력을 받을 수 있습니다. 숨겨진 input은 document.body의 직속 자식이라 전체화면 엘리먼트 바깥에 위치하게 되어:

  1. 입력창 클릭은 동작 (캔버스는 전체화면 엘리먼트 안에 있음)
  2. 이어서 호출되는 _hiddenInput.focus()가 조용히 무시됨 (top-layer 밖이라 포커스 불가)
  3. 결국 키 입력이 전달되지 않아 글자가 안 들어감

수정 방법

숨겨진 input(및 모바일 임시 form)이 항상 현재 전체화면 엘리먼트의 하위에 있도록 보장합니다. document.fullscreenElement || document.webkitFullscreenElement가 있으면 그쪽으로, 없으면 document.body로 이동시킵니다.

  • 포커스 시점 보정 (CanvasInput.js, PIXICanvasInput.js): _hiddenInput.focus() 호출 직전, input이 현재 전체화면 엘리먼트 하위가 아니면 그쪽으로 reparent. → "전체화면 상태에서 입력창을 띄우고 클릭"하는 흐름 커버
  • fullscreenchange 리스너 (stage.js): 전체화면 진입/이탈 시 현재 입력창의 숨겨진 input을 재배치하고, 포커스 상태였다면 다시 focus. → "입력창이 떠 있는 상태에서 전체화면을 토글"하는 케이스 커버

숨겨진 input은 position:absolute; opacity:0; pointerEvents:none이라 부모가 바뀌어도 화면상 영향이 없습니다.

변경 파일

  • extern/util/CanvasInput.js — 포커스 시점 reparent 가드 (비-WebGL)
  • src/class/pixi/etc/PIXICanvasInput.js — 포커스 시점 reparent 가드 (WebGL)
  • src/class/stage.jsfullscreenchange / webkitfullscreenchange 리스너 등록 및 재배치 로직

kim jeong yong and others added 2 commits June 15, 2026 18:03
모양/소리/장면 리스트에서 아이템 순서를 바꾸면 setData 리렌더 과정에서
내부 스크롤 컨테이너(.rcs-inner-container)의 스크롤이 맨 위로 초기화되던
문제를 수정. setData 호출 전후로 scrollTop/scrollLeft를 보존하는
Entry.Utils.runWithScrollPreserved 헬퍼를 추가하고 각 updateView에 적용.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
키 입력을 받는 숨겨진 input이 document.body에 위치해 네이티브 전체화면
진입 시 전체화면 엘리먼트의 top-layer 밖이 되어 포커스를 받지 못하던 문제.
포커스 시점과 fullscreenchange 시 input을 현재 fullscreenElement 하위로
이동시켜 해결.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kimorkim kimorkim requested review from Tnks2U, chanlee and prisml June 25, 2026 01:58
@kimorkim kimorkim closed this Jun 25, 2026
Comment thread src/util/utils.js
Comment on lines +489 to +490
const getScrollEl = () =>
containerEl && containerEl.querySelector('.rcs-inner-container');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [eslint] <prettier/prettier> reported by reviewdog 🐶
Delete ⏎·······

Suggested change
const getScrollEl = () =>
containerEl && containerEl.querySelector('.rcs-inner-container');
const getScrollEl = () => containerEl && containerEl.querySelector('.rcs-inner-container');

@kimorkim kimorkim deleted the jira/164 branch June 25, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant