From 88fe53b9071e7c84b62d5f745211d8e27c81421c Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sat, 21 Feb 2026 19:57:40 +0100 Subject: [PATCH] Fixed sidebar with abstractions --- .../saturnclient/config/Theme.java | 8 ++++ .../saturnclient/ui2/components/Sidebar.java | 40 ++++++++----------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/saturnclient/saturnclient/config/Theme.java b/src/main/java/org/saturnclient/saturnclient/config/Theme.java index c10a139..8c702df 100644 --- a/src/main/java/org/saturnclient/saturnclient/config/Theme.java +++ b/src/main/java/org/saturnclient/saturnclient/config/Theme.java @@ -44,4 +44,12 @@ public class Theme { config.property("Font", WIDGET_RADIUS); } + + public static int getBg(boolean hover) { + return hover ? ACCENT.value : PRIMARY.value; + } + + public static int getFg(boolean hover) { + return hover ? ACCENT_FG.value : PRIMARY_FG.value; + } } diff --git a/src/main/java/org/saturnclient/ui2/components/Sidebar.java b/src/main/java/org/saturnclient/ui2/components/Sidebar.java index aa47d99..7d6e002 100644 --- a/src/main/java/org/saturnclient/ui2/components/Sidebar.java +++ b/src/main/java/org/saturnclient/ui2/components/Sidebar.java @@ -77,21 +77,17 @@ public class Sidebar extends Element { int i = 0; for (SidebarComponent component : components) { + int y = component.end ? ((height - (sp * bottomRow)) - (s * 2)) : (padding + (sp * topRow)); + boolean selected = ctx.isHovering(0, y - (padding / 2), s2, s2) || active == i; + + renderScope.drawRoundedRectangle(padding / 2, y - (padding / 2), s + padding, + s + padding, Theme.WIDGET_RADIUS.value, Theme.getBg(selected)); + + renderScope.drawTexture(component.sprite, padding, y, 0, 0, s, s, Theme.getFg(selected)); + if (component.end) { - int y = (height - (sp * bottomRow)) - (s * 2); - if (ctx.isHovering(0, y - (padding / 2), s2, s2) || active == i) { - } - renderScope.drawRoundedRectangle(padding / 2, y - (padding / 2), s + padding, - s + padding, Theme.WIDGET_RADIUS.value, Theme.PRIMARY.value); - renderScope.drawTexture(component.sprite, padding, y, 0, 0, s, s, Theme.PRIMARY_FG.value); bottomRow += 1; } else { - int y = padding + (sp * topRow); - if (ctx.isHovering(0, y - (padding / 2), s2, s2) || active == i) { - } - renderScope.drawRoundedRectangle(padding / 2, y - (padding / 2), s + padding, - s + padding, Theme.WIDGET_RADIUS.value, Theme.PRIMARY.value); - renderScope.drawTexture(component.sprite, padding, y, 0, 0, s, s, Theme.PRIMARY_FG.value); topRow += 1; } @@ -104,26 +100,24 @@ public class Sidebar extends Element { int topRow = 0; int bottomRow = 0; - int gap = 5; // same 5px gap here + int gap = 5; int padding = 10; int sp = 30 - padding + gap; int s = 30 - (padding * 2); int s2 = s + padding; for (SidebarComponent component : components) { + int y = component.end ? ((height - (sp * bottomRow)) - (s * 2)) : (padding + (sp * topRow)); + boolean hovering = Utils.isHovering(mouseX - (padding / 2), mouseY - (y - (padding / 2)), s2, s2, scale); + + if (hovering) { + component.onClick.run(); + break; + } + if (component.end) { - int y = (height - (sp * bottomRow)) - (s * 2); - if (Utils.isHovering(mouseX - (padding / 2), mouseY - (y - (padding / 2)), s2, s2, scale)) { - component.onClick.run(); - break; - } bottomRow += 1; } else { - int y = padding + (sp * topRow); - if (Utils.isHovering(mouseX - (padding / 2), mouseY - (y - (padding / 2)), s2, s2, scale)) { - component.onClick.run(); - break; - } topRow += 1; } }