diff --git a/base/Sources/arm/Context.hx b/base/Sources/arm/Context.hx index 6dcdc073..d9251f90 100644 --- a/base/Sources/arm/Context.hx +++ b/base/Sources/arm/Context.hx @@ -226,9 +226,9 @@ class Context { } #if (is_paint || is_sculpt) - public static function in2dView(): Bool { + public static function in2dView(type = View2DLayer): Bool { var mouse = Input.getMouse(); - return UIView2D.inst.show && UIView2D.inst.type == View2DLayer && + return UIView2D.inst.show && UIView2D.inst.type == type && mouse.x > UIView2D.inst.wx && mouse.x < UIView2D.inst.wx + UIView2D.inst.ww && mouse.y > UIView2D.inst.wy && mouse.y < UIView2D.inst.wy + UIView2D.inst.wh; } diff --git a/base/Sources/arm/ui/BoxPreferences.hx b/base/Sources/arm/ui/BoxPreferences.hx index 477e502d..6b467e36 100644 --- a/base/Sources/arm/ui/BoxPreferences.hx +++ b/base/Sources/arm/ui/BoxPreferences.hx @@ -250,6 +250,8 @@ class BoxPreferences { } } + ui.changed = false; + if (Std.isOfType(val, Bool)) { h.selected = val; untyped theme[key] = ui.check(h, key); @@ -265,6 +267,10 @@ class BoxPreferences { if (isHex) untyped theme[key] = parseInt(h.text, 16); else untyped theme[key] = parseInt(h.text); } + + if (ui.changed) { + ui.elementsBaked = false; + } } } diff --git a/base/Sources/arm/ui/UIMenu.hx b/base/Sources/arm/ui/UIMenu.hx index 44354186..1a4dd8b5 100644 --- a/base/Sources/arm/ui/UIMenu.hx +++ b/base/Sources/arm/ui/UIMenu.hx @@ -531,7 +531,7 @@ class UIMenu { if (menuX + menuW > System.windowWidth()) { menuX = Std.int(System.windowWidth() - menuW); } - var menuH = Std.int(menuElements * 28 * App.uiMenu.SCALE()); // ui.t.ELEMENT_H + var menuH = Std.int(menuElements * 30 * App.uiMenu.SCALE()); // ui.t.ELEMENT_H if (menuY + menuH > System.windowHeight()) { menuY = System.windowHeight() - menuH; menuX += 1; // Move out of mouse focus diff --git a/base/Sources/arm/ui/UINodes.hx b/base/Sources/arm/ui/UINodes.hx index 68f5ec29..e333fa9a 100644 --- a/base/Sources/arm/ui/UINodes.hx +++ b/base/Sources/arm/ui/UINodes.hx @@ -899,10 +899,10 @@ class UINodes { img = Context.raw.nodePreview; } if (img != null) { - var tw = 80 * ui.SCALE(); + var tw = 128 * ui.SCALE(); var th = tw * (img.height / img.width); var tx = ww - tw - 8 * ui.SCALE(); - var ty = wh - th - 40 * ui.SCALE(); + var ty = wh - th - 8 * ui.SCALE(); #if kha_opengl var invertY = sel.type == "MATERIAL"; @@ -928,22 +928,23 @@ class UINodes { } } } + #end + + // Menu + ui.g.color = ui.t.SEPARATOR_COL; + ui.g.fillRect(0, 0, ww, ui.ELEMENT_H() + ui.ELEMENT_OFFSET()); + ui.g.color = 0xffffffff; + + ui._x = 0; + ui._y = 0; + ui._w = ew; // Editable canvas name - var _ACCENT_COL = ui.t.ACCENT_COL; - var _BUTTON_H = ui.t.BUTTON_H; - var _ELEMENT_H = ui.t.ELEMENT_H; - var _FONT_SIZE = ui.fontSize; - ui.t.ACCENT_COL = 0x00000000; - ui.t.BUTTON_H = 30; - ui.t.ELEMENT_H = 30; - ui.fontSize = Std.int(22 * ui.SCALE()); - ui._x = ww - ui.ELEMENT_W() * 1.4; - ui._y = wh - ui.ELEMENT_H() * 1.2; - ui._w = Std.int(ui.ELEMENT_W() * 1.4); var h = Id.handle(); h.text = c.name; var newName = ui.textInput(h, "", Right); + ui._x += ew + 3; + ui._y = 0; if (h.changed) { // Check whether renaming is possible and update group links if (groupStack.length > 0) { @@ -971,28 +972,6 @@ class UINodes { c.name = newName; } } - ui.t.ACCENT_COL = _ACCENT_COL; - ui.t.BUTTON_H = _BUTTON_H; - ui.t.ELEMENT_H = _ELEMENT_H; - ui.fontSize = _FONT_SIZE; - #end - - // Close node group - if (groupStack.length > 0) { - ui._x = 5; - ui._y = wh - ui.ELEMENT_H() * 1.2; - ui._w = Std.int(ui.ELEMENT_W() * 1.4); - if (ui.button(tr("Close"))) groupStack.pop(); - } - - // Menu - ui.g.color = ui.t.SEPARATOR_COL; - ui.g.fillRect(0, 0, ww, ui.ELEMENT_H() + ui.ELEMENT_OFFSET()); - ui.g.color = 0xffffffff; - - ui._x = 0; - ui._y = 0; - ui._w = ew; #if is_lab if (ui.button(tr("Run"))) { @@ -1127,8 +1106,15 @@ class UINodes { if (ui.button(tr("Search"), Left)) nodeSearch(Std.int(ui._windowX + ui._x), Std.int(ui._windowY + ui._y)); if (ui.isHovered) ui.tooltip(tr("Search for nodes") + ' (${Config.keymap.node_search})'); + ui._x += ew + 3; + ui._y = 0; ui.t.BUTTON_COL = _BUTTON_COL; + + // Close node group + if (groupStack.length > 0 && ui.button(tr("Close"))) { + groupStack.pop(); + } } ui.end(!showMenu); diff --git a/base/Sources/arm/ui/UIView2D.hx b/base/Sources/arm/ui/UIView2D.hx index 74d3a7e2..ce99d970 100644 --- a/base/Sources/arm/ui/UIView2D.hx +++ b/base/Sources/arm/ui/UIView2D.hx @@ -100,7 +100,7 @@ class UIView2D { // Grid ui.g.color = 0xffffffff; - ui.g.drawImage(UINodes.inst.grid, (panX * panScale) % 40 - 40, (panY * panScale) % 40 - 40); + ui.g.drawImage(UINodes.inst.grid, (panX * panScale) % 100 - 100, (panY * panScale) % 100 - 100); // Texture var l = Context.raw.layer; @@ -200,20 +200,17 @@ class UIView2D { ui.g.drawScaledImage(UVUtil.uvmap, tx, ty, tw, th); } - // Editable layer name - var ACCENT_COL = ui.t.ACCENT_COL; - var BUTTON_H = ui.t.BUTTON_H; - var ELEMENT_H = ui.t.ELEMENT_H; - var FONT_SIZE = ui.fontSize; - ui.t.ACCENT_COL = 0x00000000; - ui.t.BUTTON_H = 30; - ui.t.ELEMENT_H = 30; - ui.fontSize = Std.int(22 * ui.SCALE()); - ui._x = ww - ui.ELEMENT_W() * 1.4; - ui._y = wh - ui.ELEMENT_H() * 1.2; - ui._w = Std.int(ui.ELEMENT_W() * 1.4); - var h = Id.handle(); + // Controls + var ew = Std.int(ui.ELEMENT_W()); + ui.g.color = ui.t.SEPARATOR_COL; + ui.g.fillRect(0, 0, ww, ui.ELEMENT_H() + ui.ELEMENT_OFFSET()); + ui.g.color = 0xffffffff; + ui._x = 2; + ui._y = 2; + ui._w = ew; + // Editable layer name + var h = Id.handle(); if (type == View2DLayer) { h.text = l.name; l.name = ui.textInput(h, "", Right); @@ -235,21 +232,9 @@ class UIView2D { } // else { // View2DNode // } - if (h.changed) UIBase.inst.hwnds[0].redraws = 2; - ui.t.ACCENT_COL = ACCENT_COL; - ui.t.BUTTON_H = BUTTON_H; - ui.t.ELEMENT_H = ELEMENT_H; - ui.fontSize = FONT_SIZE; - - // Controls - var ew = Std.int(ui.ELEMENT_W()); - ui.g.color = ui.t.SEPARATOR_COL; - ui.g.fillRect(0, 0, ww, ui.ELEMENT_H() + ui.ELEMENT_OFFSET()); - ui.g.color = 0xffffffff; - ui._x = 2; + ui._x += ew + 3; ui._y = 2; - ui._w = ew; if (type == View2DLayer) { layerMode = ui.combo(Id.handle({ position: layerMode }), [