From 0e4b7a5a753d7e9b54022c70aa5da0427513f6d4 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Wed, 8 Dec 2021 23:16:53 +0000 Subject: [PATCH] Prevent terminal buttons stealing focus I have shutdown my computer by accident far too many times now. --- .../computercraft/client/gui/ComputerScreenBase.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/dan200/computercraft/client/gui/ComputerScreenBase.java b/src/main/java/dan200/computercraft/client/gui/ComputerScreenBase.java index 95dea7f96..90329531f 100644 --- a/src/main/java/dan200/computercraft/client/gui/ComputerScreenBase.java +++ b/src/main/java/dan200/computercraft/client/gui/ComputerScreenBase.java @@ -8,6 +8,7 @@ import com.mojang.blaze3d.matrix.MatrixStack; import dan200.computercraft.ComputerCraft; import dan200.computercraft.client.gui.widgets.ComputerSidebar; +import dan200.computercraft.client.gui.widgets.DynamicImageButton; import dan200.computercraft.client.gui.widgets.WidgetTerminal; import dan200.computercraft.shared.computer.core.ClientComputer; import dan200.computercraft.shared.computer.core.ComputerFamily; @@ -102,6 +103,16 @@ public final void render( @Nonnull MatrixStack stack, int mouseX, int mouseY, fl renderTooltip( stack, mouseX, mouseY ); } + @Override + public boolean mouseClicked( double x, double y, int button ) + { + boolean changed = super.mouseClicked( x, y, button ); + // Clicking the terminate/shutdown button steals focus, which means then pressing "enter" will click the button + // again. Restore the focus to the terminal in these cases. + if( getFocused() instanceof DynamicImageButton ) setFocused( terminal ); + return changed; + } + @Override public final boolean mouseDragged( double x, double y, int button, double deltaX, double deltaY ) {