From 49aa696e6713a1d6de427b2ddfdac47b8c307634 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 16 Aug 2022 22:29:49 +0200 Subject: [PATCH] [Feature] Container with absolute layer placement --- .../ui/layout/components/Container.java | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/betterx/ui/layout/components/Container.java b/src/main/java/org/betterx/ui/layout/components/Container.java index 809afe6b..40d25a0f 100644 --- a/src/main/java/org/betterx/ui/layout/components/Container.java +++ b/src/main/java/org/betterx/ui/layout/components/Container.java @@ -42,7 +42,17 @@ public class Container extends LayoutComponent> children = new LinkedList<>(); + record Positional(int left, int top, LayoutComponent component) { + public int getMaxX() { + return left + component().getContentWidth(); + } + + public int getMaxY() { + return top + component().getContentHeight(); + } + } + + private final List children = new LinkedList<>(); boolean dragging = false; GuiEventListener focused = null; boolean visible = true; @@ -61,7 +71,12 @@ public class Container extends LayoutComponent child) { - children.add(child); + children.add(new Positional(0, 0, child)); + return this; + } + + public Container addChild(int left, int top, LayoutComponent child) { + children.add(new Positional(left, top, child)); return this; } @@ -107,14 +122,14 @@ public class Container extends LayoutComponent children() { - return children; + return children.stream().map(p -> p.component).toList(); } @Override @@ -153,8 +168,8 @@ public class Container extends LayoutComponent c : children) { - c.updateScreenBounds(screenBounds.left, screenBounds.top); + for (Positional p : children) { + p.component.updateScreenBounds(p.left + screenBounds.left, p.top + screenBounds.top); } } @@ -256,7 +271,7 @@ public class Container extends LayoutComponent