From ca3c908620aaa9cf934565736e62206ed7deb178 Mon Sep 17 00:00:00 2001 From: extio-de Date: Sat, 3 Jan 2026 17:47:13 +0100 Subject: [PATCH] fix(renderer): reset caption and last text on enter action in G2DTextfieldControlImpl2 --- .../g2d/control/impl/G2DTextfieldControlImpl2.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java index bb0463b..3e94b90 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DTextfieldControlImpl2.java @@ -130,8 +130,12 @@ public class G2DTextfieldControlImpl2 extends G2DBaseControlImpl implements Text else { this.textComponent = new CustomJTextField(); ((JTextField) this.textComponent).addActionListener(event -> { - // Simulate pressing enter + // Simulate pressing enter and reset caption this.rendererData.getEventService().fire(new UiControlEvent(this.id, (this.lastText == null ? "" : this.lastText) + "\n")); + this.caption = null; + this.lastCaption = ""; + this.lastText = ""; + this.textComponent.setText(""); }); } this.textComponent.setName(this.id); @@ -163,7 +167,7 @@ public class G2DTextfieldControlImpl2 extends G2DBaseControlImpl implements Text @Override public void render() { final var curComponentText = this.textComponent.getText(); - if (!curComponentText.equals(this.lastText) && !(this.lastText == null || this.lastText.isEmpty() || curComponentText == null || curComponentText.isEmpty())) { + if (!curComponentText.equals(this.lastText)) { this.lastText = curComponentText; this.rendererData.getEventService().fire(new UiControlEvent(this.id, this.lastText)); } @@ -233,6 +237,10 @@ public class G2DTextfieldControlImpl2 extends G2DBaseControlImpl implements Text } private void initControl() { + if (this.multiLine && !this.readonly) { + throw new UnsupportedOperationException("Multiline property can only be set for readonly textfields"); + } + final ThemeManager themeManager = (G2DThemeManager) this.rendererData.getThemeManager(); final Color bgColor; if (this.backgroundColor != null) {