只在未被打包为 App 时设置 macOS Dock 栏图标 (#4698)
Co-authored-by: Glavo <zjx001202@gmail.com>
This commit is contained in:
@@ -21,6 +21,8 @@ import org.jackhuang.hmcl.util.FileSaver;
|
|||||||
import org.jackhuang.hmcl.util.SelfDependencyPatcher;
|
import org.jackhuang.hmcl.util.SelfDependencyPatcher;
|
||||||
import org.jackhuang.hmcl.util.SwingUtils;
|
import org.jackhuang.hmcl.util.SwingUtils;
|
||||||
import org.jackhuang.hmcl.java.JavaRuntime;
|
import org.jackhuang.hmcl.java.JavaRuntime;
|
||||||
|
import org.jackhuang.hmcl.util.io.FileUtils;
|
||||||
|
import org.jackhuang.hmcl.util.io.JarUtils;
|
||||||
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
import org.jackhuang.hmcl.util.platform.OperatingSystem;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -28,6 +30,7 @@ import java.lang.invoke.MethodHandle;
|
|||||||
import java.lang.invoke.MethodHandles;
|
import java.lang.invoke.MethodHandles;
|
||||||
import java.lang.invoke.MethodType;
|
import java.lang.invoke.MethodType;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.util.concurrent.CancellationException;
|
import java.util.concurrent.CancellationException;
|
||||||
|
|
||||||
import static org.jackhuang.hmcl.util.logging.Logger.LOG;
|
import static org.jackhuang.hmcl.util.logging.Logger.LOG;
|
||||||
@@ -49,7 +52,7 @@ public final class EntryPoint {
|
|||||||
setupJavaFXVMOptions();
|
setupJavaFXVMOptions();
|
||||||
checkDirectoryPath();
|
checkDirectoryPath();
|
||||||
|
|
||||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS)
|
if (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS && !isInsideMacAppBundle())
|
||||||
initIcon();
|
initIcon();
|
||||||
|
|
||||||
checkJavaFX();
|
checkJavaFX();
|
||||||
@@ -159,6 +162,25 @@ public final class EntryPoint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isInsideMacAppBundle() {
|
||||||
|
Path thisJar = JarUtils.thisJarPath();
|
||||||
|
if (thisJar == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (Path current = thisJar.getParent();
|
||||||
|
current != null && current.getParent() != null;
|
||||||
|
current = current.getParent()
|
||||||
|
) {
|
||||||
|
if ("Contents".equals(FileUtils.getName(current))
|
||||||
|
&& FileUtils.getName(current.getParent()).endsWith(".app")
|
||||||
|
&& Files.exists(current.resolve("Info.plist"))
|
||||||
|
) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private static void initIcon() {
|
private static void initIcon() {
|
||||||
try {
|
try {
|
||||||
if (java.awt.Taskbar.isTaskbarSupported()) {
|
if (java.awt.Taskbar.isTaskbarSupported()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user