Skip to content

Commit d105954

Browse files
committed
Maybe working MacOS icon
1 parent b630bd0 commit d105954

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

src/main/kotlin/com/lambda/util/WindowIcons.kt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,16 @@
1818
package com.lambda.util
1919

2020
import com.lambda.Lambda.mc
21+
import net.minecraft.client.util.MacWindowUtil
2122
import org.lwjgl.glfw.GLFW
2223
import org.lwjgl.glfw.GLFWImage
2324
import org.lwjgl.system.MemoryStack
2425
import org.lwjgl.system.MemoryUtil
2526
import java.awt.image.BufferedImage
27+
import java.io.ByteArrayInputStream
28+
import java.io.ByteArrayOutputStream
2629
import java.nio.ByteBuffer
30+
import javax.imageio.ImageIO
2731

2832
object WindowIcons {
2933
/**
@@ -86,19 +90,15 @@ object WindowIcons {
8690
}
8791

8892
GLFW.GLFW_PLATFORM_COCOA -> {
89-
// On macOS glfwSetWindowIcon is ignored; set dock icon instead if possible.
90-
try {
91-
val largest = iconPaths
92-
.mapNotNull { runCatching { it.readImage() }.getOrNull() }
93-
.maxByOrNull { it.width * it.height }
94-
?: return
93+
val largest = iconPaths
94+
.mapNotNull { runCatching { it.readImage() }.getOrNull() }
95+
.maxByOrNull { it.width * it.height }
96+
?: return
9597

96-
// Try Minecraft's MacWindowUtil if present
97-
val klass = Class.forName("net.minecraft.client.util.MacWindowUtil")
98-
val method = klass.getMethod("setApplicationIconImage", BufferedImage::class.java)
99-
method.invoke(null, largest)
100-
} catch (_: Throwable) {
101-
// Silently ignore if class isn't available; no safe fallback on macOS via GLFW.
98+
MacWindowUtil.setApplicationIconImage {
99+
val baos = ByteArrayOutputStream()
100+
ImageIO.write(largest, "PNG", baos)
101+
ByteArrayInputStream(baos.toByteArray())
102102
}
103103
}
104104

0 commit comments

Comments
 (0)