Revert "列表区改分页:每页 12 行 + Prev/Next(复用同一个 ScrollPane 时高度不重算,滚轮失效;分页绕开滚动)"

This reverts commit 32e707d23a.
This commit is contained in:
tianmo committed 2026-10-16 16:09:11 +08:00
1 parent 32e707d23a
commit 94c467a40d
1 file changed
+3 -54
+3 -54
View File
@@ -47,8 +47,6 @@ public final class ObjectPanel {
java.lang.reflect.Field fieldTarget; // 被点选的字段(可写值)
Object fieldOwner;
java.util.List<Object[]> inspectFields = new ArrayList<Object[]>();
int page; // 当前页(每页 PAGE_SIZE 行)
Runnable lastRender; // 上一次渲染(翻页时重跑)
List<Object> objects = new ArrayList<Object>();
Object target;
}
@@ -102,12 +100,9 @@ public final class ObjectPanel {
Object rename = button(loader, skin, "Rename");
Object inspect = button(loader, skin, "Inspect");
Object setValue = button(loader, skin, "Set Value");
Object prev = button(loader, skin, "Prev");
Object next = button(loader, skin, "Next");
// 按钮直接放进根表格:两行按钮 + 一行滚动列表(与阶段四验证过的结构一致)
Object[] top = {refresh, newBone, newSlot, newBBox, newPath, delete, rename, inspect, setValue,
prev, next};
Object[] top = {refresh, newBone, newSlot, newBBox, newPath, delete, rename, inspect, setValue};
for (int i = 0; i < top.length; i++) {
Object cell = call(root, Obf.TABLE_ADD, new Class<?>[] {actorClass}, cellClass, top[i]);
layoutCell(cell, Obf.CELL_LEFT);
@@ -152,22 +147,6 @@ public final class ObjectPanel {
create(state, "Path");
}
});
wire(loader, prev, new Runnable() {
@Override
public void run() {
state.page--;
if (state.lastRender != null) state.lastRender.run();
setStatus(state, "page " + (state.page + 1));
}
});
wire(loader, next, new Runnable() {
@Override
public void run() {
state.page++;
if (state.lastRender != null) state.lastRender.run();
setStatus(state, "page " + (state.page + 1));
}
});
wire(loader, setValue, new Runnable() {
@Override
public void run() {
@@ -238,8 +217,6 @@ public final class ObjectPanel {
}
private static final String LOG_SEPARATOR = "---------- log ----------";
/** 每页显示多少行 —— 不再依赖 ScrollPane 滚动(复用它时高度不重算,滚不动),改成翻页。 */
private static final int PAGE_SIZE = 12;
/** 在内容表格末尾追加"日志块"(分隔行 + 最近几条消息)。 */
private static void appendLogRows(State state) {
@@ -264,16 +241,6 @@ public final class ObjectPanel {
}
}
/** 分页切片:只取当前页那一段。 */
private static int[] pageRange(int total, State state) {
int pages = Math.max(1, (total + PAGE_SIZE - 1) / PAGE_SIZE);
if (state.page >= pages) state.page = pages - 1;
if (state.page < 0) state.page = 0;
int from = state.page * PAGE_SIZE;
int to = Math.min(total, from + PAGE_SIZE);
return new int[] {from, to, pages};
}
/** 状态文字:作为列表区的第一行显示(这样不再单独占根表格的一行,布局更稳)。 */
private static void statusRow(final State state, final String text) {
try {
@@ -291,13 +258,6 @@ public final class ObjectPanel {
/** 重新读一遍树、重建对象列表(全部在编辑器渲染线程上做)。 */
private static void refreshList(final State state) {
final State st = state;
state.lastRender = new Runnable() {
@Override
public void run() {
refreshList(st);
}
};
SceneActions.onEditorThread(state.loader, new Runnable() {
@Override
public void run() {
@@ -316,8 +276,7 @@ public final class ObjectPanel {
state.logBlockStarted = false;
Class<?> cellClass = Class.forName(Obf.CELL, true, state.loader);
Class<?> actorClass = Class.forName(Obf.ACTOR, true, state.loader);
int[] range = pageRange(Math.min(objects.size(), 300), state);
for (int i = range[0]; i < range[1]; i++) {
for (int i = 0; i < objects.size() && i < 300; i++) {
final Object object = objects.get(i);
Object row = button(state.loader, state.skin,
SceneObjects.kind(object) + " " + SceneObjects.nameOf(object));
@@ -381,13 +340,6 @@ public final class ObjectPanel {
* 字段名是被混淆的(一堆 D/B/L),所以每行都带上类型;对象引用只显示类名。
*/
private static void inspect(final State state) {
final State st = state;
state.lastRender = new Runnable() {
@Override
public void run() {
inspect(st);
}
};
SceneActions.onEditorThread(state.loader, new Runnable() {
@Override
public void run() {
@@ -407,7 +359,6 @@ public final class ObjectPanel {
new java.util.HashMap<Integer, Object[]>();
lines.add("selected: " + SceneObjects.kind(object) + " \"" + SceneObjects.nameOf(object)
+ "\" (" + object.getClass().getName() + ")");
if (object != state.inspected) state.page = 0;
state.inspected = object;
state.fieldTarget = null;
lines.add("--- fields (" + countFields(object) + ") --- (点一行字段可改值)");
@@ -515,7 +466,6 @@ public final class ObjectPanel {
Object current = SceneObjects.selected(state.loader);
if (current != null && current != last) {
last = current;
state.page = 0;
inspect(state);
}
Thread.sleep(600);
@@ -582,8 +532,7 @@ public final class ObjectPanel {
state.logBlockStarted = false;
Class<?> cellClass = Class.forName(Obf.CELL, true, state.loader);
Class<?> actorClass = Class.forName(Obf.ACTOR, true, state.loader);
int[] range = pageRange(lines.size(), state);
for (int i = range[0]; i < range[1]; i++) {
for (int i = 0; i < lines.size(); i++) {
final Object[] target = clickable.get(Integer.valueOf(i));
Object row = button(state.loader, state.skin, lines.get(i));
Object cell = call(state.listTable, Obf.TABLE_ADD, new Class<?>[] {actorClass},