Skip to content

fix: 窗口 chrome 按钮 stopPropagation 改 snake_case——Opal 下 camelCase 直接 raise - #4

Merged
ShiningRay merged 1 commit into
mainfrom
fix/stop-propagation-snake
Sep 15, 2026
Merged

ShiningRay merged 1 commit into
mainfrom
fix/stop-propagation-snake

Conversation

@ShiningRay

Copy link
Copy Markdown
Owner

问题

Citrine::Event 只暴露 snake_case stop_propagation(citrine event.rb),beryl 四处调用 camelCase e.stopPropagation:

  • window.rb 最小化/最大化/关闭三颗 chrome 按钮
  • dialog.rb 对话框体(拦截背景点击穿透)

浏览器(Opal)下点击即 NoMethodError,on_minimize\&./on_maximize\&./on_close\&.call 在 raise 之后永不到达——窗口 chrome 全灭、ZUI 形态态机的 morph 最小化入口被完全阻断。CRuby 单测不可见(Event 视图层不参与 StringRenderer 派发),浏览器打点实证定位。

修复

4 处 camelCase → snake_case 调用点(不改 citrine 加别名——DSL 全域 snake_case 红线)。beryl 82 项全绿;下游 emerald-zui 114 项全绿。

顺带发现(不在本 PR 范围)

beryl setup_dblclick 与 citrine EVENT_DEFS[:on_dblclick] 双绑导致一次双击触发两次处理器——PR #2 合并后单独提删。

…aise

Citrine::Event 只有 snake_case stop_propagation(event.rb);beryl 窗口
最小化/最大化/关闭钮与对话框体四处调用 camelCase e.stopPropagation,
浏览器端点击即 NoMethodError,on_minimize/on_close 等回调永不到达
(ZUI 形态态机的 morph 入口即被此阻断)。CRuby 下单测不可见
(Event 视图层不参与 StringRenderer 派发),浏览器实证定位。
@ShiningRay
ShiningRay merged commit adc4266 into main Sep 15, 2026
5 checks passed
@ShiningRay
ShiningRay deleted the fix/stop-propagation-snake branch September 16, 2026 16:35
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