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;