diff --git a/pom.xml b/pom.xml index ff50d75..7dd0da6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.extio game-engine - 1.0.4 + 1.0.5 25 diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java index 1d8f67c..6b63995 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomMultiLineTextArea.java @@ -24,6 +24,7 @@ import java.util.function.Consumer; import de.extio.game_engine.renderer.ThemeManager; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.renderer.model.Theme; +import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; @SuppressWarnings("serial") @@ -72,6 +73,8 @@ public class CustomMultiLineTextArea extends Component { private int scrollbarThumbHeight = 0; private boolean scrollbarDragging = false; + + private CoordI2 lastMousePosition; private int scrollbarDragStartY = 0; @@ -150,6 +153,10 @@ public class CustomMultiLineTextArea extends Component { public void setDirty(final boolean dirty) { this.dirty = dirty; } + + public CoordI2 getLastMousePosition() { + return this.lastMousePosition; + } public CustomMultiLineTextArea(final ThemeManager themeManager, final Consumer onTextChanged) { this.themeManager = themeManager; @@ -295,9 +302,16 @@ public class CustomMultiLineTextArea extends Component { }); this.addMouseListener(new MouseAdapter() { + + @Override + public void mouseEntered(final MouseEvent e) { + CustomMultiLineTextArea.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); + e.consume(); + } @Override public void mousePressed(final MouseEvent e) { + CustomMultiLineTextArea.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); CustomMultiLineTextArea.this.requestFocus(); if (!CustomMultiLineTextArea.this.enabled) { e.consume(); @@ -337,17 +351,25 @@ public class CustomMultiLineTextArea extends Component { CustomMultiLineTextArea.this.scrollbarDragging = false; e.consume(); } + + @Override + public void mouseExited(final MouseEvent e) { + CustomMultiLineTextArea.this.lastMousePosition = null; + e.consume(); + } }); this.addMouseMotionListener(new MouseMotionListener() { @Override public void mouseMoved(final MouseEvent e) { + CustomMultiLineTextArea.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); e.consume(); } @Override public void mouseDragged(final MouseEvent e) { + CustomMultiLineTextArea.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); if (!CustomMultiLineTextArea.this.enabled) { e.consume(); return; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java index 7db31f5..39f7093 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/components/CustomSingleLineTextField.java @@ -20,6 +20,7 @@ import java.util.function.Consumer; import de.extio.game_engine.renderer.ThemeManager; import de.extio.game_engine.renderer.g2d.bo.rendering.G2DDrawFont; import de.extio.game_engine.renderer.model.Theme; +import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2; @SuppressWarnings("serial") @@ -55,6 +56,8 @@ public class CustomSingleLineTextField extends Component { private boolean caretVisible = true; + private CoordI2 lastMousePosition; + private int cachedRawFontHeight = 0; private final ThemeManager themeManager; @@ -115,6 +118,10 @@ public class CustomSingleLineTextField extends Component { this.dirty = dirty; } + public CoordI2 getLastMousePosition() { + return this.lastMousePosition; + } + public CustomSingleLineTextField(final ThemeManager themeManager, final Consumer onTextChanged, final Runnable onSubmit) { this.themeManager = themeManager; this.onTextChanged = onTextChanged; @@ -255,8 +262,15 @@ public class CustomSingleLineTextField extends Component { this.addMouseListener(new MouseAdapter() { + @Override + public void mouseEntered(final MouseEvent e) { + CustomSingleLineTextField.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); + e.consume(); + } + @Override public void mousePressed(final MouseEvent e) { + CustomSingleLineTextField.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); CustomSingleLineTextField.this.requestFocus(); if (!CustomSingleLineTextField.this.enabled) { e.consume(); @@ -285,17 +299,25 @@ public class CustomSingleLineTextField extends Component { public void mouseReleased(final MouseEvent e) { e.consume(); } + + @Override + public void mouseExited(final MouseEvent e) { + CustomSingleLineTextField.this.lastMousePosition = null; + e.consume(); + } }); this.addMouseMotionListener(new MouseMotionListener() { @Override public void mouseMoved(final MouseEvent e) { + CustomSingleLineTextField.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); e.consume(); } @Override public void mouseDragged(final MouseEvent e) { + CustomSingleLineTextField.this.lastMousePosition = ImmutableCoordI2.create(e.getX(), e.getY()); if (!CustomSingleLineTextField.this.enabled) { e.consume(); return; diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DMultiLineTextAreaControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DMultiLineTextAreaControlImpl.java index 2268b1a..aeeca3f 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DMultiLineTextAreaControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DMultiLineTextAreaControlImpl.java @@ -123,6 +123,7 @@ public class G2DMultiLineTextAreaControlImpl extends G2DBaseControlImpl implemen this.updateAllComponentZOrder(); } + this.tooltipMousePosition = this.textArea.getLastMousePosition(); this.textArea.paint(this.bufferedImageGraphics); super.render(); diff --git a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSingleLineTextfieldControlImpl.java b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSingleLineTextfieldControlImpl.java index 0a324ea..62e4e32 100644 --- a/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSingleLineTextfieldControlImpl.java +++ b/src/main/java/de/extio/game_engine/renderer/g2d/control/impl/G2DSingleLineTextfieldControlImpl.java @@ -118,6 +118,7 @@ public class G2DSingleLineTextfieldControlImpl extends G2DBaseControlImpl implem this.updateAllComponentZOrder(); } + this.tooltipMousePosition = this.textField.getLastMousePosition(); this.textField.paint(this.bufferedImageGraphics); super.render();