diff --git a/Libraries/zui b/Libraries/zui index 0a9d423b..dfe5c129 160000 --- a/Libraries/zui +++ b/Libraries/zui @@ -1 +1 @@ -Subproject commit 0a9d423beed3462ced811c5d7d92ec4cc431fa71 +Subproject commit dfe5c129b5303b126260f7250c748a24700e0492 diff --git a/Sources/arm/App.hx b/Sources/arm/App.hx index cd5a3084..436d45b9 100644 --- a/Sources/arm/App.hx +++ b/Sources/arm/App.hx @@ -115,7 +115,6 @@ class App extends iron.Trait { color_wheel = image; zui.Nodes.getEnumTexts = getEnumTexts; zui.Nodes.mapEnum = mapEnum; - Zui.alwaysRedrawWindow = false; uibox = new Zui({ font: f, scaleFactor: armory.data.Config.raw.window_scale }); iron.App.notifyOnInit(function() { @@ -273,14 +272,19 @@ class App extends iron.Trait { UINodes.inst.grid = null; } - UITrait.inst.hwnd.redraws = 2; - UITrait.inst.hwnd1.redraws = 2; - UITrait.inst.hwnd2.redraws = 2; - UITrait.inst.headerHandle.redraws = 2; - UITrait.inst.toolbarHandle.redraws = 2; - UITrait.inst.statusHandle.redraws = 2; - UITrait.inst.menuHandle.redraws = 2; - UITrait.inst.workspaceHandle.redraws = 2; + redrawUI(); + } + + public static function redrawUI(draws = 2) { + UITrait.inst.hwnd.redraws = draws; + UITrait.inst.hwnd1.redraws = draws; + UITrait.inst.hwnd2.redraws = draws; + UITrait.inst.headerHandle.redraws = draws; + UITrait.inst.toolbarHandle.redraws = draws; + UITrait.inst.statusHandle.redraws = draws; + UITrait.inst.menuHandle.redraws = draws; + UITrait.inst.workspaceHandle.redraws = draws; + UINodes.inst.hwnd.redraws = 2; // Full redraw } static function update() { @@ -336,6 +340,8 @@ class App extends iron.Trait { } if (showFiles || showBox) UIBox.update(); + + Zui.alwaysRedrawWindow = showMenu; } static function render(g:kha.graphics2.Graphics) { diff --git a/Sources/arm/renderpath/RenderPathDeferred.hx b/Sources/arm/renderpath/RenderPathDeferred.hx index b814dac8..a419843e 100644 --- a/Sources/arm/renderpath/RenderPathDeferred.hx +++ b/Sources/arm/renderpath/RenderPathDeferred.hx @@ -186,14 +186,14 @@ class RenderPathDeferred { lastY = mouse.y; if (!UITrait.inst.dirty()) { - if (mx != lastX || my != lastY || UITrait.inst.ddirty == 0 || mouse.locked) { - UITrait.inst.ddirty--; + if (mx != lastX || my != lastY || UITrait.inst.ddirty > -1 || mouse.locked) { path.setTarget(""); path.bindTarget(taaFrame % 2 == 0 ? "taa" : "taa2", "tex"); ssaa4 ? path.drawShader("shader_datas/supersample_resolve/supersample_resolve") : path.drawShader("shader_datas/copy_pass/copy_pass"); if (UITrait.inst.brush3d) RenderPathPaint.commandsCursor(); + if (UITrait.inst.ddirty == 0) UITrait.inst.ddirty--; } return; } diff --git a/Sources/arm/ui/UIMenu.hx b/Sources/arm/ui/UIMenu.hx index fb0a0746..c9e44684 100644 --- a/Sources/arm/ui/UIMenu.hx +++ b/Sources/arm/ui/UIMenu.hx @@ -195,6 +195,8 @@ class UIMenu { } else { App.showMenu = false; + App.redrawUI(0); + UITrait.inst.ddirty = 0; // Tag cached viewport texture redraw showMenuFirst = true; menuCommands = null; // arm.App.uienabled = true; diff --git a/Sources/arm/ui/UITrait.hx b/Sources/arm/ui/UITrait.hx index 49f51902..50198ac9 100644 --- a/Sources/arm/ui/UITrait.hx +++ b/Sources/arm/ui/UITrait.hx @@ -239,6 +239,7 @@ class UITrait extends iron.Trait { public var statusHandle = new Handle({layout:Horizontal}); public var menuHandle = new Handle({layout:Horizontal}); public var workspaceHandle = new Handle({layout:Horizontal}); + var lastCombo:Handle = null; public var cameraControls = 1; public var htab = Id.handle({position: 0}); @@ -789,6 +790,9 @@ class UITrait extends iron.Trait { if (UITrait.inst.worktab.position == 1) { Gizmo.update(); } + + if (lastCombo != null) ddirty = 0; + lastCombo = ui.comboSelectedHandle; } function render(g:kha.graphics2.Graphics) {