From 5074454cc952ebaf8d624a50601731bf7bb932e5 Mon Sep 17 00:00:00 2001 From: Karl von Randow Date: Wed, 18 Mar 2026 05:40:04 +1300 Subject: [PATCH 1/4] Fix describeRaster printing transparentPixelCount instead of opaquePixelCount Copy-paste error in the opaque pixel count diagnostic message. --- src/org/violetlib/jnr/impl/JNRUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/violetlib/jnr/impl/JNRUtils.java b/src/org/violetlib/jnr/impl/JNRUtils.java index 6d3fe0e..53cce43 100644 --- a/src/org/violetlib/jnr/impl/JNRUtils.java +++ b/src/org/violetlib/jnr/impl/JNRUtils.java @@ -342,7 +342,7 @@ public static boolean describeRaster(@NotNull int[] buffer, int rw, int rh) } if (opaquePixelCount > 0) { int percent = Math.round(opaquePixelCount * 100f / pixelCount); - s += " " + transparentPixelCount + " opaque pixels (" + percent + "%)"; + s += " " + opaquePixelCount + " opaque pixels (" + percent + "%)"; } if (maximumAlpha > 0) { s += " maximum alpha: " + maximumAlpha + " at " + maximumAlphaCol + ", " + maximumAlphaRow; From 0257d618beafd51f965b9874723ab302adc15459 Mon Sep 17 00:00:00 2001 From: Karl von Randow Date: Wed, 18 Mar 2026 05:40:14 +1300 Subject: [PATCH 2/4] Fix bitwise OR operators that should be logical OR in popup button content insets --- src/org/violetlib/jnr/aqua/impl/LayoutInfo_11.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/violetlib/jnr/aqua/impl/LayoutInfo_11.java b/src/org/violetlib/jnr/aqua/impl/LayoutInfo_11.java index 2f29098..4108ca5 100644 --- a/src/org/violetlib/jnr/aqua/impl/LayoutInfo_11.java +++ b/src/org/violetlib/jnr/aqua/impl/LayoutInfo_11.java @@ -274,7 +274,7 @@ public LayoutInfo_11() public @NotNull Insetter getPopupButtonContentInsets(@NotNull PopupButtonLayoutConfiguration g) { PopupButtonWidget bw = g.getPopupButtonWidget(); - if (bw == BUTTON_POP_UP || bw == BUTTON_POP_DOWN | bw == BUTTON_POP_UP_TEXTURED | bw == BUTTON_POP_DOWN_TEXTURED) { + if (bw == BUTTON_POP_UP || bw == BUTTON_POP_DOWN || bw == BUTTON_POP_UP_TEXTURED || bw == BUTTON_POP_DOWN_TEXTURED) { Size sz = g.getSize(); float top = 1; float bottom = 1; From 11513dac5d5cb0574b746437bc20ae9450127280 Mon Sep 17 00:00:00 2001 From: Karl von Randow Date: Wed, 18 Mar 2026 05:40:43 +1300 Subject: [PATCH 3/4] Include thumbExtent in ScrollBarThumbLayoutConfiguration equals and hashCode The thumbExtent field was stored and returned via getThumbExtent() but was not included in equality or hash code checks, so configurations with different thumb extents would compare as equal. --- .../violetlib/jnr/aqua/ScrollBarThumbLayoutConfiguration.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/violetlib/jnr/aqua/ScrollBarThumbLayoutConfiguration.java b/src/org/violetlib/jnr/aqua/ScrollBarThumbLayoutConfiguration.java index b656745..fb8a18c 100644 --- a/src/org/violetlib/jnr/aqua/ScrollBarThumbLayoutConfiguration.java +++ b/src/org/violetlib/jnr/aqua/ScrollBarThumbLayoutConfiguration.java @@ -65,13 +65,13 @@ public boolean equals(@Nullable Object o) return false; } ScrollBarThumbLayoutConfiguration that = (ScrollBarThumbLayoutConfiguration) o; - return value == that.value; + return value == that.value && Float.compare(thumbExtent, that.thumbExtent) == 0; } @Override public int hashCode() { - return Objects.hash(super.hashCode(), value); + return Objects.hash(super.hashCode(), value, thumbExtent); } @Override From c20f958e0d993cd2c2424f7882edbffd564d6f8d Mon Sep 17 00:00:00 2001 From: Karl von Randow Date: Wed, 18 Mar 2026 05:42:29 +1300 Subject: [PATCH 4/4] Fix Arrays.asList result used with addAll in CoreUIPainter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a doozy… Arrays.asList() returns a fixed-size list, so addAll() would throw UnsupportedOperationException if extraParameters was ever non-null. When you go to look at the implementation of Arrays.asList and see the new ArrayList… it’s actually an inner class with the same name as the ubiquitous java.util version! --- src/org/violetlib/jnr/aqua/coreui/CoreUIPainter.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/org/violetlib/jnr/aqua/coreui/CoreUIPainter.java b/src/org/violetlib/jnr/aqua/coreui/CoreUIPainter.java index a2da84a..bf8f192 100644 --- a/src/org/violetlib/jnr/aqua/coreui/CoreUIPainter.java +++ b/src/org/violetlib/jnr/aqua/coreui/CoreUIPainter.java @@ -17,6 +17,7 @@ import java.awt.geom.Rectangle2D; import java.security.PrivilegedAction; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -778,11 +779,11 @@ STATE_KEY, toState(st), PRESENTATION_STATE_KEY, toPresentationState(st), USER_INTERFACE_LAYOUT_DIRECTION_KEY, toLayoutDirection(ld)); } else { - List parameters = Arrays.asList(WIDGET_KEY, widget, + List parameters = new ArrayList<>(Arrays.asList(WIDGET_KEY, widget, SIZE_KEY, toSize(sz), STATE_KEY, toState(st), PRESENTATION_STATE_KEY, toPresentationState(st), - USER_INTERFACE_LAYOUT_DIRECTION_KEY, toLayoutDirection(ld)); + USER_INTERFACE_LAYOUT_DIRECTION_KEY, toLayoutDirection(ld))); parameters.addAll(extraParameters); r = getRenderer(parameters.toArray()); }