From 7f0e1b2ba22c8e4edbbee7f5fe7d4de1237470d2 Mon Sep 17 00:00:00 2001 From: arlyon Date: Wed, 28 Feb 2018 17:40:35 -0500 Subject: [PATCH] runelite-client: enable fullscreen on osx --- .../java/net/runelite/client/ui/ClientUI.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java index d2434c84a7..10b6a8b5e7 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java @@ -37,12 +37,14 @@ import java.awt.LayoutManager; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; +import java.awt.Window; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; import java.util.Enumeration; import javax.imageio.ImageIO; import javax.swing.BoxLayout; @@ -65,6 +67,7 @@ import net.runelite.api.GameState; import net.runelite.api.events.ConfigChanged; import net.runelite.client.RuneLite; import net.runelite.client.RuneLiteProperties; +import net.runelite.client.util.OSType; import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel; import org.pushingpixels.substance.internal.utils.SubstanceCoreUtilities; import org.pushingpixels.substance.internal.utils.SubstanceTitlePaneUtilities; @@ -133,7 +136,9 @@ public class ClientUI extends JFrame // Use custom UI font setUIFont(new FontUIResource(FontManager.getRunescapeFont())); - return new ClientUI(runelite, properties, client); + ClientUI gui = new ClientUI(runelite, properties, client); + tryEnableOSXFullscreen(gui); + return gui; } private ClientUI(RuneLite runelite, RuneLiteProperties properties, Applet client) @@ -455,4 +460,27 @@ public class ClientUI extends JFrame { return pluginToolbar; } + + /** + * Enables the osx native fullscreen if running on a mac. + * + * @param gui The gui to enable the fullscreen on. + */ + private static void tryEnableOSXFullscreen(ClientUI gui) + { + if (OSType.getOSType() == OSType.MacOS) + { + try + { + Class.forName("com.apple.eawt.FullScreenUtilities") + .getMethod("setWindowCanFullScreen", Window.class, boolean.class) + .invoke(null, gui, true); + log.debug("macOS fullscreen enabled"); + } + catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) + { + // not running macOS, ignore + } + } + } }