Skip to content

General UI Improvements & Fixes#15

Merged
EastArctica merged 11 commits intomainfrom
ui-fixes
Mar 7, 2026
Merged

General UI Improvements & Fixes#15
EastArctica merged 11 commits intomainfrom
ui-fixes

Conversation

@EastArctica
Copy link
Collaborator

@EastArctica EastArctica commented Mar 1, 2026

  • Checkboxes now have distinct visual states when hovered checked/unchecked
  • Save hover color now properly displays when file is opened -> edited -> saved, previously while hovered it would consistently display the unsaved darker yellow color. This now properly displays the saved hover color.
  • Previously the editor's redo functionality would trigger any time Y was pressed instead of requiring Ctrl+Y
  • Fixes a bug where hovering between two elements would trigger display the hover on both elements
  • Add padding to ui elements in settings dialogue
  • Add hover colors to enabled/disabled & running/stopped buttons
  • Editor scrolling + line rendering fixes
  • Fix 1.21.5 background rendering

Fixes #9

Summary by CodeRabbit

  • New Features

    • Buttons now update highlight color to reflect enabled/running state.
    • Editor adds a visible line-number gutter, improved scroll-wheel sensitivity, and pixel-accurate scrolling/centering.
  • Bug Fixes

    • Tighter hover detection and more consistent checkbox/button hover visuals.
    • Overlay/background rendering behavior improved for screens and overlays.
  • Improvements

    • Slight spacing and horizontal alignment tweaks across settings fields.
    • Added convenient constructors for 2D/3D position types.

@coderabbitai
Copy link

coderabbitai bot commented Mar 1, 2026

📝 Walkthrough

Walkthrough

Adds state-aware highlight colors for container buttons, implements a line-number gutter with pixel-based scrolling and gutter-aware rendering/input in the editor, increments spacing and horizontal offsets for many GUI fields/elements, adjusts checkbox/button hover and screen background/overlay render paths, and adds copy/Vec2 constructors for Pos2D/Pos3D.

Changes

Cohort / File(s) Summary
Container Button State Colors
common/src/main/java/com/jsmacrosce/jsmacros/client/gui/containers/MacroContainer.java, common/src/main/java/com/jsmacrosce/jsmacros/client/gui/containers/ServiceContainer.java
Button highlight colors are made conditional on enabled/running state; constructors, click handlers, and render paths update highlight colors dynamically to reflect state changes.
EditorScreen: Gutter & Pixel Scrolling
common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java
Introduces SCROLL_WHEEL_SENSITIVITY and lineNumWidth; switches to pixel-based scrolling, computes visible lines from pixel scroll, offsets all rendering/input by gutter width, applies scissor for content, updates cursor-centering/scrolling/page navigation, and repositions dropdown/autocomplete accordingly.
Settings Fields Layout
common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/CategoryTreeContainer.java, common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/BooleanField.java, .../DoubleField.java, .../FileField.java, .../FloatField.java, .../IntField.java, .../LongField.java, .../OptionsField.java, .../StringField.java
Incremented vertical allocation from lineHeight+2 → lineHeight+3 for multiple setting fields and CategoryTreeContainer; many field renderers shift label text right by +2 px.
Basic GUI Element Rendering
common/src/main/java/com/jsmacrosce/wagyourgui/elements/AnnotatedCheckBox.java, common/src/main/java/com/jsmacrosce/wagyourgui/elements/Button.java
Non-centered button text left padding increased (+1 → +2 px); button hover edge checks tightened; checkbox hover/fill/outline logic unified and hover-aware.
Screen Background & Overlay Rendering
common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/CancelScreen.java, common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/MacroScreen.java, common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java
Background rendering calls wrapped/relocated with a version guard; MacroScreen now conditionally renders overlays (overlay.render(...) used when present) instead of always delegating to super.
Math API: Convenience Constructors
common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos2D.java, common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos3D.java
Added constructors: Pos2D(Vec2) and Pos2D(Pos2D); added copy constructor Pos3D(Pos3D) for easier construction from Vec2 or same-type instances.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Editor as EditorScreen
    participant Cursor
    participant Render as RenderEngine
    participant Dropdown as AutocompleteDropdown

    User->>Editor: scroll / click / type
    Editor->>Editor: compute contentHeight, viewportHeight, maxScroll (pixel-based)
    Editor->>Cursor: update cursor position (line, col) and requested pixel position
    Editor->>Editor: scrollToCursor() (center using pixel scroll & lineSpread)
    Editor->>Render: set scissor(region excluding gutter) and render content at offset (lineNumWidth)
    Render->>Dropdown: position dropdown at (x + lineNumWidth, y) and render if visible
    Render-->>User: updated frame (gutter + content)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 I nudged the gutter, nudged the scroll,
Buttons now shimmer when states take hold.
A pixel or two, labels moved just right,
Hover and highlight behaving polite.
Hooray — I hopped through code and fixed the light!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 1.79% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed The PR addresses the primary objective from issue #9 by fixing the save button's hover color to properly reflect saved state, along with related UI improvements for hover colors and visual feedback.
Out of Scope Changes check ✅ Passed While the PR includes changes beyond the core save button hover fix (scrolling fixes, checkbox hover states, button padding, redo key binding), these appear to be related UI fixes that enhance the overall quality described in the PR objectives.
Title check ✅ Passed The title 'General UI Improvements & Fixes' is broad and relates to multiple aspects of the changeset (buttons, editor, checkboxes, padding) but is not specific about the primary changes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java (1)

738-739: Wheel-scroll comment no longer matches implementation.

Line [738] says “~40px per click”, but SCROLL_WHEEL_SENSITIVITY is 50.0. Update the comment to prevent future confusion during tuning.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java`
around lines 738 - 739, Update the inline comment above the viewportHeight
calculation to reflect the actual scroll wheel tuning: replace “~40px per click”
with the correct value that matches SCROLL_WHEEL_SENSITIVITY (50.0) so the
comment aligns with the implemented behavior; locate the comment near the
viewportHeight calculation and reference SCROLL_WHEEL_SENSITIVITY and the
viewportHeight computation in your update.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java`:
- Around line 219-224: The computed lastLine can exceed the actual content for
short files causing lineNumWidth to be too large; clamp lastLine to the real
final line index before measuring width. After computing lastLine from
scroll/viewportHeight, set lastLine = Math.min(lastLine, <actualLastIndex>)
where <actualLastIndex> is the actual last line index for the document (e.g.
totalLines - 1 or getLineCount() - 1), then compute lineNumWidth using
font.width(...). Update the EditorScreen variables (firstLine, lastLine,
lineSpread, viewportHeight, lineNumWidth) accordingly so the gutter width
reflects content, not the viewport.
- Around line 803-806: In EditorScreen where text is trimmed (uses contentWidth,
ellipsesWidth, minecraft.font.substrByWidth,
Language.getInstance().getVisualOrder, and FormattedCharSequence.composite),
guard the computed trim width so it cannot be non-positive: compute int
trimWidth = contentWidth - 10 - ellipsesWidth, then if (trimWidth <= 0) return
ellipses (or the ellipses FormattedCharSequence) immediately; otherwise call
substrByWidth(trimWidth) and proceed with getVisualOrder and composite. This
prevents passing non-positive widths to substrByWidth and avoids unstable
trimming on narrow viewports.

---

Nitpick comments:
In
`@common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java`:
- Around line 738-739: Update the inline comment above the viewportHeight
calculation to reflect the actual scroll wheel tuning: replace “~40px per click”
with the correct value that matches SCROLL_WHEEL_SENSITIVITY (50.0) so the
comment aligns with the implemented behavior; locate the comment near the
viewportHeight calculation and reference SCROLL_WHEEL_SENSITIVITY and the
viewportHeight computation in your update.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 95527aa and 38c981b.

📒 Files selected for processing (14)
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/containers/MacroContainer.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/containers/ServiceContainer.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/CategoryTreeContainer.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/BooleanField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/DoubleField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/FileField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/FloatField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/IntField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/LongField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/OptionsField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/StringField.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/elements/AnnotatedCheckBox.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/elements/Button.java

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/MacroScreen.java`:
- Around line 229-231: MacroScreen.render currently calls
overlay.render(drawContext, mouseX, mouseY, delta) but skips the background;
update MacroScreen.render to either call super.render(drawContext, mouseX,
mouseY, delta) at the start or explicitly invoke
this.renderBackground(drawContext) before calling overlay.render to restore the
BaseScreen background behavior and ensure the overlay renders on top.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 38c981b and a1d483c.

📒 Files selected for processing (4)
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/CancelScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/MacroScreen.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (2)
common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java (2)

809-812: ⚠️ Potential issue | 🟡 Minor

Guard against negative trim width.

On narrow viewports, contentWidth - 10 - ellipsesWidth can become zero or negative, potentially causing undefined behavior in substrByWidth.

💡 Proposed fix
     private FormattedCharSequence trim(Component text) {
         assert minecraft != null;
         int contentWidth = width - 10 - (lineNumWidth + 2); // total minus scrollbar minus gutter
-        if (minecraft.font.width(text) > contentWidth) {
-            FormattedCharSequence trimmed = Language.getInstance().getVisualOrder(minecraft.font.substrByWidth(text, contentWidth - 10 - ellipsesWidth));
+        int trimWidth = contentWidth - 10 - ellipsesWidth;
+        if (minecraft.font.width(text) > contentWidth && trimWidth > 0) {
+            FormattedCharSequence trimmed = Language.getInstance().getVisualOrder(minecraft.font.substrByWidth(text, trimWidth));
             return FormattedCharSequence.composite(trimmed, ellipses);
+        } else if (trimWidth <= 0 && contentWidth < minecraft.font.width(text)) {
+            return ellipses;
         } else {
             return text.getVisualOrderText();
         }
     }

,

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java`
around lines 809 - 812, The trimming logic in EditorScreen can call
minecraft.font.substrByWidth with a non-positive width; clamp the computed trim
width used in minecraft.font.substrByWidth (contentWidth - 10 - ellipsesWidth)
to a safe positive value (e.g., Math.max(0, ...)) and handle the zero/negative
case by returning only the ellipses FormattedCharSequence instead of attempting
to trim; update the block around variables contentWidth, ellipsesWidth and the
call to minecraft.font.substrByWidth accordingly so substrByWidth never receives
a negative width.

219-224: ⚠️ Potential issue | 🟡 Minor

Clamp lastLine to actual content line count.

The calculation of lastLine can exceed the real last line index when the viewport is taller than the content. This causes lineNumWidth to be computed based on a line number that doesn't exist, making the gutter unnecessarily wide for short files.

💡 Proposed fix
         firstLine = scroll / lineSpread; // floor: include partially-visible top line
         lastLine = (int) Math.ceil((scroll + viewportHeight) / lineSpread) - 1; // include partially-visible bottom line
+        lastLine = Math.min(lastLine, totalLines - 1);
         // Gutter width: measure the widest line number visible (lastLine+1, 1-indexed) plus 4px padding.
         if (lineSpread > 0) {
             lineNumWidth = font.width(Component.literal((lastLine + 1) + ".").withStyle(defaultStyle)) + 4;
         }

,

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java`
around lines 219 - 224, Clamp the computed lastLine to the actual document line
count before using it to compute gutter width: after calculating lastLine from
scroll/viewportHeight, set lastLine = Math.min(lastLine, <actual total lines> -
1) (where <actual total lines> is your document line count e.g., lines.size() or
totalLines) and ensure it’s not negative; then compute lineNumWidth from the
clamped lastLine using font.width(...). This prevents using a non-existent line
number when computing lineNumWidth in EditorScreen (variables: firstLine,
lastLine, lineSpread, viewportHeight, lineNumWidth; methods: font.width(...),
defaultStyle).
🧹 Nitpick comments (1)
common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos2D.java (1)

21-23: Note: Subclass slicing when called with Pos3D.

Due to polymorphism, this constructor accepts Pos3D instances (since Pos3D extends Pos2D), but only x and y are copied—the z coordinate is silently dropped. This may be intentional (2D projection), but could surprise callers.

Since Pos3D has its own copy constructor that preserves all coordinates, this is likely fine. However, if unintended slicing is a concern, consider making the parameter type more explicit via documentation or a factory method pattern.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos2D.java` around
lines 21 - 23, The Pos2D(Pos2D pos) constructor silently drops a z coordinate
when passed a Pos3D (subclass) causing slicing; update the code by adding a
clear Javadoc to Pos2D(Pos2D) stating it intentionally copies only x/y (2D
projection) and that Pos3D should use its own copy constructor, and if you want
to prevent accidental slicing instead implement one of two options: add an
explicit overload Pos2D(Pos3D pos3d) that documents/handles projection or change
Pos2D(Pos2D) to check `if (pos instanceof Pos3D)` and throw
IllegalArgumentException (or log/warn) to avoid silent loss—refer to the Pos2D
constructor and the Pos3D class when making the change.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In
`@common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java`:
- Around line 809-812: The trimming logic in EditorScreen can call
minecraft.font.substrByWidth with a non-positive width; clamp the computed trim
width used in minecraft.font.substrByWidth (contentWidth - 10 - ellipsesWidth)
to a safe positive value (e.g., Math.max(0, ...)) and handle the zero/negative
case by returning only the ellipses FormattedCharSequence instead of attempting
to trim; update the block around variables contentWidth, ellipsesWidth and the
call to minecraft.font.substrByWidth accordingly so substrByWidth never receives
a negative width.
- Around line 219-224: Clamp the computed lastLine to the actual document line
count before using it to compute gutter width: after calculating lastLine from
scroll/viewportHeight, set lastLine = Math.min(lastLine, <actual total lines> -
1) (where <actual total lines> is your document line count e.g., lines.size() or
totalLines) and ensure it’s not negative; then compute lineNumWidth from the
clamped lastLine using font.width(...). This prevents using a non-existent line
number when computing lineNumWidth in EditorScreen (variables: firstLine,
lastLine, lineSpread, viewportHeight, lineNumWidth; methods: font.width(...),
defaultStyle).

---

Nitpick comments:
In `@common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos2D.java`:
- Around line 21-23: The Pos2D(Pos2D pos) constructor silently drops a z
coordinate when passed a Pos3D (subclass) causing slicing; update the code by
adding a clear Javadoc to Pos2D(Pos2D) stating it intentionally copies only x/y
(2D projection) and that Pos3D should use its own copy constructor, and if you
want to prevent accidental slicing instead implement one of two options: add an
explicit overload Pos2D(Pos3D pos3d) that documents/handles projection or change
Pos2D(Pos2D) to check `if (pos instanceof Pos3D)` and throw
IllegalArgumentException (or log/warn) to avoid silent loss—refer to the Pos2D
constructor and the Pos3D class when making the change.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6d67543c-1cc6-49c5-a031-2119e5e7cd2d

📥 Commits

Reviewing files that changed from the base of the PR and between a1d483c and cb8aace.

📒 Files selected for processing (5)
  • common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos2D.java
  • common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos3D.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/MacroScreen.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java
🚧 Files skipped from review as they are similar to previous changes (1)
  • common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java (1)

196-203: ⚠️ Potential issue | 🔴 Critical

CancelScreen will lose background rendering in versions > 1.21.5 — this change needs to be revised.

While ScriptScreen handles its own background with renderMenuBackground() before calling super.render(), CancelScreen calls super.render() without any background handling. After this change, CancelScreen will have no background in versions > 1.21.5, breaking its visual rendering. Either:

  1. Add version-gated background rendering to CancelScreen.render(), or
  2. Keep renderBackground() in BaseScreen.render() for all versions
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java` around lines
196 - 203, BaseScreen.render removed renderBackground causing CancelScreen to
lose its background; fix by restoring background rendering for CancelScreen:
update CancelScreen.render to call renderMenuBackground() or renderBackground()
before calling super.render(...) for versions > 1.21.5 (i.e., add a
version-gated call to renderMenuBackground()/renderBackground() at the top of
CancelScreen.render), or alternatively revert and re-enable
renderBackground(...) in BaseScreen.render so all subclasses keep the
background; locate the relevant methods by their names BaseScreen.render,
CancelScreen.render, renderBackground, and renderMenuBackground and implement
one of these two fixes.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java`:
- Around line 196-203: BaseScreen.render removed renderBackground causing
CancelScreen to lose its background; fix by restoring background rendering for
CancelScreen: update CancelScreen.render to call renderMenuBackground() or
renderBackground() before calling super.render(...) for versions > 1.21.5 (i.e.,
add a version-gated call to renderMenuBackground()/renderBackground() at the top
of CancelScreen.render), or alternatively revert and re-enable
renderBackground(...) in BaseScreen.render so all subclasses keep the
background; locate the relevant methods by their names BaseScreen.render,
CancelScreen.render, renderBackground, and renderMenuBackground and implement
one of these two fixes.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4f0ffd50-3a02-4ddd-a643-952cf518e703

📥 Commits

Reviewing files that changed from the base of the PR and between cb8aace and 8d72c8d.

📒 Files selected for processing (19)
  • common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos2D.java
  • common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos3D.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/containers/MacroContainer.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/containers/ServiceContainer.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/CancelScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/EditorScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/MacroScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/CategoryTreeContainer.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/BooleanField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/DoubleField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/FileField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/FloatField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/IntField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/LongField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/OptionsField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/StringField.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/BaseScreen.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/elements/AnnotatedCheckBox.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/elements/Button.java
🚧 Files skipped from review as they are similar to previous changes (12)
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/StringField.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/elements/Button.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/LongField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos2D.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/IntField.java
  • common/src/main/java/com/jsmacrosce/wagyourgui/elements/AnnotatedCheckBox.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/FileField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/MacroScreen.java
  • common/src/main/java/com/jsmacrosce/jsmacros/api/math/Pos3D.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/settings/settingfields/DoubleField.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/containers/ServiceContainer.java
  • common/src/main/java/com/jsmacrosce/jsmacros/client/gui/screens/CancelScreen.java

@EastArctica EastArctica changed the title UI Fixes General UI Improvements & Fixes Mar 7, 2026
@EastArctica EastArctica merged commit a7527db into main Mar 7, 2026
1 check passed
@EastArctica EastArctica deleted the ui-fixes branch March 7, 2026 17:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect 'Save' button hover color in builtin editor after any changes

1 participant