Revert "列表区改分页:每页 12 行 + Prev/Next(复用同一个 ScrollPane 时高度不重算,滚轮失效;分页绕开滚动)"
This reverts commit 32e707d23a.
This commit is contained in:
1 parent
32e707d23a
commit
94c467a40d
1 file changed
+3
-54
@@ -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},
|
||||
|
||||
Reference in new issue
Block a user