diff --git a/CHANGES b/CHANGES index f8e3d5b5..b8fdd67c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,5 @@ -[1.7.4-SNAPSHOT] +[1.7.4] +- Fixed LabelRenderNode not updating text if updated from its own defer call [1.7.3] - Added additional assert in DisperedIntervalEntitySystemTest diff --git a/ui/src/main/java/org/mini2Dx/ui/render/LabelRenderNode.java b/ui/src/main/java/org/mini2Dx/ui/render/LabelRenderNode.java index 9bde87d3..592171e9 100644 --- a/ui/src/main/java/org/mini2Dx/ui/render/LabelRenderNode.java +++ b/ui/src/main/java/org/mini2Dx/ui/render/LabelRenderNode.java @@ -33,6 +33,8 @@ public class LabelRenderNode extends RenderNode { protected final NullTextAnimation nullAnimation = new NullTextAnimation(); protected BitmapFontCache bitmapFontCache = DEFAULT_FONT.newFontCache(); + protected boolean bitmapCacheReset = false; + public LabelRenderNode(ParentRenderNode parent, Label element) { super(parent, element); } @@ -40,6 +42,17 @@ public LabelRenderNode(ParentRenderNode parent, Label element) { @Override public void update(UiContainerRenderTree uiContainer, float delta) { super.update(uiContainer, delta); + + if(bitmapCacheReset) { + bitmapFontCache.clear(); + nullAnimation.reset(); + + if(element.getTextAnimation() != null) { + element.getTextAnimation().reset();; + } + bitmapCacheReset = false; + } + if (element.getTextAnimation() == null) { nullAnimation.update(bitmapFontCache, element.getText(), preferredContentWidth, element.getHorizontalAlignment().getAlignValue(), delta); @@ -122,6 +135,7 @@ protected LabelStyleRule determineStyleRule(LayoutState layoutState) { element.getTextAnimation().reset(); } } + bitmapCacheReset = true; LabelStyleRule result = layoutState.getTheme().getStyleRule(element, layoutState.getScreenSize()); if (result.getBitmapFont() == null) { @@ -145,8 +159,7 @@ public void updateBitmapFontCache() { if (style == null) { return; } - bitmapFontCache.clear(); - nullAnimation.reset(); + bitmapCacheReset = true; GLYPH_LAYOUT.setText(bitmapFontCache.getFont(), element.getText(), Color.WHITE, preferredContentWidth, element.getHorizontalAlignment().getAlignValue(), true);