From b09a7e065907feabf272c15e3ac924dbe536c19b Mon Sep 17 00:00:00 2001 From: tianmo Date: Fri, 16 Oct 2026 17:55:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80'=E5=BD=93=E5=89=8D=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=AF=B9=E8=B1=A1'=EF=BC=9A=E4=BC=98=E5=85=88?= =?UTF-8?q?=E5=8F=96=E7=BC=96=E8=BE=91=E5=99=A8=E9=87=8C=E7=9A=84=E9=80=89?= =?UTF-8?q?=E6=8B=A9=EF=BC=88=E7=94=A8=E6=88=B7=E5=9C=A8=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E9=80=89=EF=BC=89=EF=BC=8CNew/Delete/Rename/?= =?UTF-8?q?+10=20=E5=85=A8=E9=83=A8=E6=94=B9=E7=94=A8=20currentTarget()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- viewpanel/src/com/spineview/ObjectPanel.java | 28 ++++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/viewpanel/src/com/spineview/ObjectPanel.java b/viewpanel/src/com/spineview/ObjectPanel.java index 327bfeb..3017241 100644 --- a/viewpanel/src/com/spineview/ObjectPanel.java +++ b/viewpanel/src/com/spineview/ObjectPanel.java @@ -197,11 +197,11 @@ public final class ObjectPanel { wire(loader, delete, new Runnable() { @Override public void run() { - if (state.target == null) { + if (currentTarget(state) == null) { setStatus(state, "Delete: select an object first."); return; } - Object victim = state.target; + Object victim = currentTarget(state); String what = SceneObjects.kind(victim) + " " + SceneObjects.nameOf(victim); state.target = null; boolean ok = SceneActions.delete(state.loader, victim); @@ -212,12 +212,13 @@ public final class ObjectPanel { wire(loader, rename, new Runnable() { @Override public void run() { - if (state.target == null) { + Object target = currentTarget(state); + if (target == null) { setStatus(state, "Rename: select an object first."); return; } String name = textFieldText(state.nameField); - boolean ok = SceneActions.rename(state.loader, state.target, name); + boolean ok = SceneActions.rename(state.loader, target, name); setStatus(state, (ok ? "Renamed to " : "Rename failed: ") + name); refreshList(state); } @@ -429,6 +430,17 @@ public final class ObjectPanel { }); } + /** 当前的"操作对象":优先取**编辑器里的选择**(用户走层级面板),取不到才用我们列表的 target。 */ + private static Object currentTarget(State state) { + try { + Object selected = SceneObjects.selected(state.loader); + if (selected != null) return selected; + } catch (Throwable error) { + System.err.println("[panel] 读当前选择失败: " + error); + } + return state.target; + } + /** 点列表里的某一行:在编辑器层级树里选中它,并把它记成"当前操作对象"。 */ private static void selectTarget(final State state, final Object object) { state.target = object; @@ -628,13 +640,7 @@ public final class ObjectPanel { @Override public void run() { // 父级取"编辑器里的当前选择"(用户是在层级面板里选的,不是点我们列表行) - Object parent = null; - try { - parent = SceneObjects.selected(state.loader); - } catch (Throwable error) { - System.err.println("[panel] 读当前选择失败: " + error); - } - if (parent == null) parent = state.target; + Object parent = currentTarget(state); if (parent == null) { setStatus(state, "+10 Red Bones: select a parent bone first."); return;