diff --git a/core/assets/sprites/uiskin.json b/core/assets/sprites/uiskin.json index 30e049a889..b929cf8457 100644 --- a/core/assets/sprites/uiskin.json +++ b/core/assets/sprites/uiskin.json @@ -188,7 +188,8 @@ up: button, over: button-over, imageDisabledColor: gray, - imageUpColor: white + imageUpColor: white, + disabled: button-disabled }, node: { up: button-over, diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java index d5ddbb1233..e81c312347 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FileChooser.java @@ -31,7 +31,6 @@ public class FileChooser extends FloatingDialog{ private Predicate filter; private Consumer selectListener; private boolean open; - private int lastWidth = Core.graphics.getWidth(), lastHeight = Core.graphics.getHeight(); public static final Predicate pngFiles = str -> str.equals("png"); public static final Predicate anyMapFiles = str -> str.equals(oldMapExtension) || str.equals(mapExtension); @@ -44,12 +43,14 @@ public class FileChooser extends FloatingDialog{ this.filter = filter; this.selectListener = result; - update(() -> { - if(Core.graphics.getWidth() != lastWidth || Core.graphics.getHeight() != lastHeight){ - updateFiles(false); - lastHeight = Core.graphics.getHeight(); - lastWidth = Core.graphics.getWidth(); - } + onResize(() -> { + cont.clear(); + setupWidgets(); + }); + + shown(() -> { + cont.clear(); + setupWidgets(); }); } @@ -121,8 +122,9 @@ public class FileChooser extends FloatingDialog{ forward.resizeImage(isize); forward.clicked(() -> stack.forward()); - back.clicked(() -> stack.back()); + forward.setDisabled(() -> !stack.canForward()); + back.setDisabled(() -> !stack.canBack()); ImageButton home = new ImageButton("icon-home"); home.resizeImage(isize); @@ -206,7 +208,7 @@ public class FileChooser extends FloatingDialog{ //macs are confined to the Downloads/ directory if(!OS.isMac){ - Image upimage = new Image("icon-folder-parent"); + Image upimage = new Image("icon-folder-parent-small"); TextButton upbutton = new TextButton(".." + directory.toString(), "clear-toggle"); upbutton.clicked(() -> { directory = directory.parent(); @@ -214,7 +216,7 @@ public class FileChooser extends FloatingDialog{ updateFiles(true); }); - upbutton.left().add(upimage).padRight(4f).size(iconsize); + upbutton.left().add(upimage).padRight(4f).size(iconsizesmall).padLeft(4); upbutton.getLabel().setAlignment(Align.left); upbutton.getCells().reverse(); @@ -248,9 +250,9 @@ public class FileChooser extends FloatingDialog{ button.setChecked(filename.equals(filefield.getText())); }); - Image image = new Image(file.isDirectory() ? "icon-folder" : "icon-file-text"); + Image image = new Image(file.isDirectory() ? "icon-folder-small" : "icon-file-text-small"); - button.add(image).padRight(4f).size(iconsize); + button.add(image).padRight(4f).padLeft(4).size(iconsizesmall); button.getCells().reverse(); files.top().left().add(button).align(Align.topLeft).fillX().expandX() .height(50).pad(2).padTop(0).padBottom(0).colspan(2); @@ -273,17 +275,6 @@ public class FileChooser extends FloatingDialog{ } } - @Override - public Dialog show(){ - Time.runTask(2f, () -> { - cont.clear(); - setupWidgets(); - super.show(); - Core.scene.setScrollFocus(pane); - }); - return this; - } - public class FileHistory{ private Array history = new Array<>(); private int index; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java index 748d0e93a6..54a502627e 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/FloatingDialog.java @@ -39,18 +39,6 @@ public class FloatingDialog extends Dialog{ state.set(State.paused); } }); - - boolean[] done = {false}; - - shown(() -> Core.app.post(() -> - forEach(child -> { - if(done[0]) return; - - if(child instanceof ScrollPane){ - Core.scene.setScrollFocus(child); - done[0] = true; - } - }))); } public FloatingDialog(String title){ @@ -59,8 +47,9 @@ public class FloatingDialog extends Dialog{ protected void onResize(Runnable run){ Events.on(ResizeEvent.class, event -> { - if(isShown()){ + if(isShown() && Core.scene.getDialog() == this){ run.run(); + updateScrollFocus(); } }); }