对照表:补 WidgetGroup 尺寸读取(min/pref/maxW/H) + 对话框显示不全/闪左下角的两个修正

- 弹窗建出来默认 150x150,正文和按钮被裁 → 显式设 width/height=max(pref,min,下限) 再 invalidate
- '先左下角再跳中间' = addActor 后过一帧才居中;改成尺寸+居中在同一次渲染回调里做完
names.tsv 338 条,payload-named.zip 已重产(5617 处引用)
This commit is contained in:
tianmo committed 2026-10-16 19:31:04 +08:00
1 parent 42b40f6f65
commit f40979f965
3 files changed
+27

No files matched your search

+12
View File
@@ -338,3 +338,15 @@ com.spineview.ObjectPanel wire (Ljava/lang/ClassLoader;Ljava/lang/Object;Ljava/l
com.spineview.SceneObjects listAllNodes (Ljava/lang/ClassLoader;)Ljava/util/List; listAllNodes
com.spineview.SceneActions delete (Ljava/lang/ClassLoader;Ljava/lang/Object;)Z delete
# ^ 面板自己的"罗列场景对象 / 删除对象"(走编辑器删除流程,自带撤销)——清理误建对象时用它
# ---- WidgetGroup 的尺寸读取(本次用来把对话框撑到合适大小)----
eX LineNumberTable ()F getMinWidth
eX String ()F getMinHeight
eX StackMapTable ()F getPrefWidth
eX init ()F getPrefHeight
eX Ljava ()F getMaxWidth
eX Class ()F getMaxHeight
# ^ 六个 Layout 方法按 eX 声明顺序对应 minWidth/minHeight/prefWidth/prefHeight/maxWidth/maxHeight
# (面板日志里一直用的 `init` 读出来就是 prefHeight;本次实测对话框 pref=399x166)
# ^ ⚠️ 窗口刚建出来时的尺寸是默认的 150x150(所以正文/按钮会被裁),
# 要显式 `Actor.width/height = max(pref, min, 下限)` + `eX.b_()V`(invalidate) 才会按 pref 撑开
Can't render this file because it contains an unexpected character in line 41 and column 97.
+6
View File
@@ -262,11 +262,17 @@ eM D ()Z hasChildren
eM D (Ljava/lang/Object;)LeM; findNode
eM I ()V collapseAll
eM S ()V expandAll
eX Class ()F getMaxHeight
eX D (LJ;F)V draw
eX LineNumberTable ()F getMinWidth
eX Ljava ()F getMaxWidth
eX Object ()Z needsLayout
eX StackMapTable ()F getPrefWidth
eX StackMapTable ()V layout
eX String ()F getMinHeight
eX V (Z)V setFillParent
eX b_ ()V invalidate
eX init ()F getPrefHeight
et B (Lca;)V drawDebugBounds
et B (LeN;)Let; padTop
et B (Z)V setDebug
1 # 合并后的名字映射表:确定(=)指纹 + 手动/实测锚点
262 eM
263 eM
264 eM
265 eX
266 eX
267 eX
268 eX
269 eX
270 eX
271 eX
272 eX
273 eX
274 eX
275 eX
276 et
277 et
278 et
+9
View File
@@ -522,3 +522,12 @@ macOS 文件系统大小写不敏感,解到目录里会互相覆盖 —— 所
> 另外踩到两个**跟 API 无关但会浪费半天**的坑,记在这里:
> 1) **HotSpot 同名 agent 类只加载一次** —— 改了 agent 代码再 attach 同一个类名,跑的还是旧代码;每次改代码都要换类名。
> 2) 编辑器字体**没有中文字形**,对话框/按钮文字写中文会显示成乱码 —— 一律用英文。
### 对话框"显示不全 / 先闪左下角"的两个修正(2026-10-16 实测)
| 载荷签名 | 真名 | 依据 / 坑 |
| --- | --- | --- |
| `eX.StackMapTable()F` / `eX.init()F` | **getPrefWidth / getPrefHeight** | `eX`(WidgetGroup) 六个 Layout 方法按声明顺序 = minW/minH/prefW/prefH/maxW/maxH。实测对话框 pref=**399x166**,但窗口刚建出来时是默认 **150x150** → 正文和按钮被裁。修法:`Actor.width/height = max(pref, min, 下限)` 再 `eX.b_()V`(invalidate) |
| `eX.LineNumberTable()F` / `eX.String()F` | **getMinWidth / getMinHeight** | 同上(对话框 min=302x166) |
| `eX.b_()V` | **invalidate** | 让内容按新尺寸重新布局(和 `dl.b_()Z`=remove 同名不同描述符) |
| `dl.D(FFI)V` | **setPosition(x,y,alignment)** | **align=0 → 以 (x,y) 为中心**。"先出现在左下角、再跳到中间"的原因就是:先 `addActor`(默认 (0,0))渲染了一帧,350ms 后才居中。修法:**尺寸 + 居中都在同一次渲染回调里做完**(本次实测 399x170 @ (1665.5,937) → 中心正好 (1865,1022) = 3730x2044 的正中) |