From 9cc9a5093d5808ce754846ed6535a01482d24fff Mon Sep 17 00:00:00 2001 From: arcade_kappa Date: Wed, 18 Dec 2024 15:42:39 +0800 Subject: [PATCH] Try to use the GLFW ime status --- .../client/ForgeClientHandler.java | 25 +++++++++++++++++++ src/main/java/org/lwjglx/opengl/Display.java | 11 ++++---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/minecraftforge/client/ForgeClientHandler.java b/src/main/java/net/minecraftforge/client/ForgeClientHandler.java index 92deaf19f..926906714 100644 --- a/src/main/java/net/minecraftforge/client/ForgeClientHandler.java +++ b/src/main/java/net/minecraftforge/client/ForgeClientHandler.java @@ -19,12 +19,17 @@ package net.minecraftforge.client; +import net.minecraft.client.gui.GuiChat; +import net.minecraft.client.gui.GuiScreenBook; +import net.minecraft.client.gui.inventory.GuiEditSign; import net.minecraftforge.client.event.ColorHandlerEvent; +import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.ForgeModContainer; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.lwjglx.opengl.Display; public class ForgeClientHandler { @@ -46,4 +51,24 @@ public static void registerItemHandlers(ColorHandlerEvent.Item event) event.getItemColors().registerItemColorHandler(new FluidContainerColorer(), ForgeModContainer.getInstance().universalBucket); } } + + @SubscribeEvent + public static void didChangeGui(GuiOpenEvent event) { + boolean canInput; + if (event.getGui() == null) { + // Ignore null GuiScreens + canInput = false; + } else if (event.getGui() instanceof GuiChat) { + // Skip, this should be handled by Focus + return; + } else { + // Vanilla GuiScreens + canInput = event.getGui() instanceof GuiScreenBook + || event.getGui() instanceof GuiEditSign; + + // TODO: Force enable map + } + + Display.setIME(canInput); + } } diff --git a/src/main/java/org/lwjglx/opengl/Display.java b/src/main/java/org/lwjglx/opengl/Display.java index 3700a364d..bb52e38c0 100644 --- a/src/main/java/org/lwjglx/opengl/Display.java +++ b/src/main/java/org/lwjglx/opengl/Display.java @@ -112,12 +112,7 @@ public static void create(PixelFormat pixel_format, ContextAttribs attribs) { public static void create(PixelFormat pixel_format) { System.out.println("TODO: Implement Display.create(PixelFormat)"); // TODO - try { - create(); - } catch (Throwable t) { - FMLLog.log.info(t.getCause().getMessage()); - Arrays.stream(t.getStackTrace()).forEach(FMLLog.log::info); - } + create(); } public static void create() { @@ -797,6 +792,10 @@ public static Drawable getDrawable() { return drawable; } + public static void setIME(boolean active) { + org.lwjgl.glfw.GLFW.glfwSetInputMode(Window.handle, GLFW_IME, active ? GLFW_TRUE : GLFW_FALSE); + } + static DisplayImplementation getImplementation() { return null; }