From ecfcd6bae852cf4e5abc56b2847e3c9e2dd15e9a Mon Sep 17 00:00:00 2001 From: luboslenco Date: Sat, 20 Sep 2025 11:03:59 +0200 Subject: [PATCH] ui tweaks --- base/sources/iron_ui.c | 7 ++- paint/sources/base.ts | 26 +++++------ paint/sources/box_preferences.ts | 2 +- paint/sources/config.ts | 3 -- paint/sources/context.ts | 11 ++--- paint/sources/enums.ts | 7 +-- paint/sources/make_material.ts | 3 -- paint/sources/render_path_paint.ts | 2 +- paint/sources/render_path_raytrace.ts | 2 +- paint/sources/ui_header.ts | 1 - paint/sources/ui_menubar.ts | 19 ++++---- paint/sources/ui_sidebar.ts | 64 ++++++++++++++++----------- paint/sources/ui_statusbar.ts | 13 ++++++ paint/sources/ui_toolbar.ts | 4 +- 14 files changed, 83 insertions(+), 81 deletions(-) diff --git a/base/sources/iron_ui.c b/base/sources/iron_ui.c index 4937b054..354b3984 100644 --- a/base/sources/iron_ui.c +++ b/base/sources/iron_ui.c @@ -1317,7 +1317,7 @@ void ui_draw_tabs() { bool selected = current->tab_handle->position == i; draw_set_color((pushed || hover) ? theme->HOVER_COL : - current->tab_colors[i] != -1 ? current->tab_colors[i] : + (current->tab_colors[i] != -1 && current->tab_colors[i] != -2) ? current->tab_colors[i] : selected ? theme->WINDOW_BG_COL : theme->SEPARATOR_COL); if (current->tab_vertical) { @@ -1328,7 +1328,10 @@ void ui_draw_tabs() { } draw_filled_rect(current->_x + current->button_offset_y, current->_y + current->button_offset_y, current->_w, tab_h); draw_set_color(theme->TEXT_COL); - if (!selected) { + if (current->tab_colors[i] == -2) { // Faded + ui_fade_color(0.25); + } + else if (!selected) { ui_fade_color(0.65); } ui_draw_string(current->tab_names[i], theme->TEXT_OFFSET, (tab_h - tab_h_min) / 2.0, (theme->FULL_TABS || !current->tab_vertical) ? UI_ALIGN_CENTER : UI_ALIGN_LEFT, true); diff --git a/paint/sources/base.ts b/paint/sources/base.ts index 26bb0291..ebd9ea40 100644 --- a/paint/sources/base.ts +++ b/paint/sources/base.ts @@ -1,5 +1,6 @@ let base_ui_enabled: bool = true; +let base_view3d_show: bool = true; let base_is_dragging: bool = false; let base_is_resizing: bool = false; let base_drag_asset: asset_t = null; @@ -174,6 +175,11 @@ function base_w(): i32 { return util_render_decal_preview_size; } + // 3D view is hidden + if (!base_view3d_show) { + return 1; + } + let res: i32 = 0; if (config_raw.layout == null) { let sidebarw: i32 = ui_sidebar_default_w; @@ -210,7 +216,6 @@ function base_h(): i32 { } let res: i32 = iron_window_height(); - if (config_raw.layout == null) { res -= ui_header_default_h * 2 + ui_statusbar_default_h; ///if (arm_android || arm_ios) @@ -304,7 +309,6 @@ function base_redraw_ui() { ui_header_handle.redraws = 2; ui_base_hwnds[tab_area_t.STATUS].redraws = 2; ui_menubar_menu_handle.redraws = 2; - ui_menubar_workspace_handle.redraws = 2; ui_nodes_hwnd.redraws = 2; ui_box_hwnd.redraws = 2; ui_view2d_hwnd.redraws = 2; @@ -369,7 +373,7 @@ function base_update() { if (context_in_nodes()) { ui_nodes_accept_asset_drag(array_index_of(project_assets, base_drag_asset)); } - else if (context_in_viewport()) { + else if (context_in_3d_view()) { if (ends_with(to_lower_case(base_drag_asset.file), ".hdr")) { let image: gpu_texture_t = project_get_image(base_drag_asset); import_envmap_run(base_drag_asset.file, image); @@ -392,7 +396,7 @@ function base_update() { else if (context_in_materials()) { tab_materials_accept_swatch_drag(base_drag_swatch); } - else if (context_in_viewport()) { + else if (context_in_3d_view()) { let color: i32 = base_drag_swatch.base; color = color_set_ab(color, base_drag_swatch.opacity * 255); layers_create_color_layer(color, base_drag_swatch.occlusion, base_drag_swatch.roughness, base_drag_swatch.metallic); @@ -465,7 +469,7 @@ function base_update() { function base_material_dropped() { // Material drag and dropped onto viewport or layers tab - if (context_in_viewport()) { + if (context_in_3d_view()) { let uv_type: uv_type_t = keyboard_down("control") ? uv_type_t.PROJECT : uv_type_t.UVMAP; let decal_mat: mat4_t = uv_type == uv_type_t.PROJECT ? util_render_get_decal_mat() : mat4_nan(); layers_create_fill_layer(uv_type, decal_mat); @@ -566,13 +570,6 @@ function base_render() { make_material_parse_paint_material(); context_raw.ddirty = 0; - // Default workspace - if (config_raw.workspace != 0) { - ui_header_worktab.position = config_raw.workspace; - ui_menubar_workspace_handle.redraws = 2; - ui_header_worktab.changed = true; - } - // Default camera controls context_raw.camera_controls = config_raw.camera_controls; } @@ -1474,7 +1471,7 @@ function ui_base_update_ui() { } // Same mapping for paint and rotate (predefined in touch keymap) - if (context_in_viewport()) { + if (context_in_3d_view()) { let paint_key: string = map_get(config_keymap, "action_paint"); let rotate_key: string = map_get(config_keymap, "action_rotate"); if (mouse_started() && paint_key == rotate_key) { @@ -1704,7 +1701,7 @@ function ui_base_update_ui() { (keyboard_down("control") && keyboard_started("y")); // Two-finger tap to undo, three-finger tap to redo - if (context_in_viewport() && config_raw.touch_ui) { + if (context_in_3d_view() && config_raw.touch_ui) { if (mouse_started("middle")) { ui_base_redo_tap_time = sys_time(); } @@ -2063,7 +2060,6 @@ function ui_base_on_tab_drop(to: ui_handle_t, to_position: i32, from: ui_handle_ function ui_base_tag_ui_redraw() { ui_header_handle.redraws = 2; ui_base_hwnds[tab_area_t.STATUS].redraws = 2; - ui_menubar_workspace_handle.redraws = 2; ui_menubar_menu_handle.redraws = 2; ui_base_hwnds[tab_area_t.SIDEBAR0].redraws = 2; ui_base_hwnds[tab_area_t.SIDEBAR1].redraws = 2; diff --git a/paint/sources/box_preferences.ts b/paint/sources/box_preferences.ts index 5f690b0c..dcce869b 100644 --- a/paint/sources/box_preferences.ts +++ b/paint/sources/box_preferences.ts @@ -535,7 +535,7 @@ function box_preferences_show() { let mode_handle: ui_handle_t = ui_handle(__ID__); if (mode_handle.init) { - mode_handle.position = config_raw.workspace; + mode_handle.position = config_raw.viewport_mode; } let mode_combo: string[] = [tr("Lit"), tr("Path Traced")]; ui_combo(mode_handle, mode_combo, tr("Default Mode"), true); diff --git a/paint/sources/config.ts b/paint/sources/config.ts index b382ee30..21078717 100644 --- a/paint/sources/config.ts +++ b/paint/sources/config.ts @@ -76,7 +76,6 @@ function config_save() { json_encode_bool("splash_screen", config_raw.splash_screen); json_encode_i32_array("layout", config_raw.layout); json_encode_i32_array("layout_tabs", config_raw.layout_tabs); - json_encode_i32("workspace", config_raw.workspace); json_encode_i32("camera_controls", config_raw.camera_controls); json_encode_string("server", config_raw.server); json_encode_i32("viewport_mode", config_raw.viewport_mode); @@ -177,7 +176,6 @@ function config_init() { config_raw.zoom_direction = zoom_direction_t.VERTICAL; config_raw.displace_strength = 0.0; config_raw.wrap_mouse = false; - config_raw.workspace = space_type_t.SPACE3D; config_raw.camera_controls = camera_controls_t.ORBIT; config_raw.layer_res = texture_res_t.RES2048; ///if (arm_android || arm_ios) @@ -467,7 +465,6 @@ type config_t = { splash_screen?: bool; layout?: i32[]; // Sizes layout_tabs?: i32[]; // Active tabs - workspace?: i32; camera_controls?: i32; // Orbit, rotate server?: string; viewport_mode: i32; diff --git a/paint/sources/context.ts b/paint/sources/context.ts index 804626a7..497a1cd0 100644 --- a/paint/sources/context.ts +++ b/paint/sources/context.ts @@ -236,7 +236,6 @@ type context_t = { paint2d?: bool; - last_htab0_pos?: i32; maximized_sidebar_width?: i32; drag_dest?: i32; @@ -442,7 +441,6 @@ function context_create(): context_t { c.sym_z = false; c.fill_type_handle = ui_handle_create(); c.paint2d = false; - c.last_htab0_pos = 0; c.maximized_sidebar_width = 0; c.drag_dest = 0; @@ -606,7 +604,7 @@ function context_object_mask_used(): bool { return slot_layer_get_object_mask(context_raw.layer) > 0 && slot_layer_get_object_mask(context_raw.layer) <= project_paint_objects.length; } -function context_in_viewport(): bool { +function context_in_3d_view(): bool { return context_raw.paint_vec.x < 1 && context_raw.paint_vec.x > 0 && context_raw.paint_vec.y < 1 && context_raw.paint_vec.y > 0; } @@ -674,8 +672,8 @@ function context_is_floating_toolbar(): bool { } function context_get_area_type(): area_type_t { - if (context_in_viewport()) { - return area_type_t.VIEWPORT; + if (context_in_3d_view()) { + return area_type_t.VIEW3D; } if (context_in_nodes()) { return area_type_t.NODES; @@ -707,10 +705,7 @@ function context_set_viewport_mode(mode: viewport_mode_t) { else { render_path_commands = render_path_forward_commands; } - let _workspace: i32 = ui_header_worktab.position; - ui_header_worktab.position = 0; make_material_parse_mesh_material(); - ui_header_worktab.position = _workspace; // Rotate mode is not supported for path tracing yet if (context_raw.viewport_mode == viewport_mode_t.PATH_TRACE && context_raw.camera_controls == camera_controls_t.ROTATE) { diff --git a/paint/sources/enums.ts b/paint/sources/enums.ts index 94e6515e..a93bba19 100644 --- a/paint/sources/enums.ts +++ b/paint/sources/enums.ts @@ -220,11 +220,6 @@ enum layer_slot_type_t { GROUP = 2, } -enum space_type_t { - SPACE3D = 0, - SPACE2D = 1, -} - enum tool_type_t { BRUSH = 0, ERASER = 1, @@ -244,7 +239,7 @@ enum tool_type_t { enum area_type_t { MINUS_ONE = -1, - VIEWPORT = 0, + VIEW3D = 0, VIEW2D = 1, LAYERS = 2, MATERIALS = 3, diff --git a/paint/sources/make_material.ts b/paint/sources/make_material.ts index 9739ff9a..68867167 100644 --- a/paint/sources/make_material.ts +++ b/paint/sources/make_material.ts @@ -303,10 +303,8 @@ function make_material_bake_node_preview(node: ui_node_t, group: ui_node_canvas_ render_path_paint_live_layer = slot_layer_create("_live"); } - let _space: i32 = ui_header_worktab.position; let _tool: tool_type_t = context_raw.tool; let _bake_type: bake_type_t = context_raw.bake_type; - ui_header_worktab.position = space_type_t.SPACE3D; context_raw.tool = tool_type_t.BAKE; context_raw.bake_type = bake_type_t.CURVATURE; @@ -326,7 +324,6 @@ function make_material_bake_node_preview(node: ui_node_t, group: ui_node_canvas_ render_path_paint_use_live_layer(false); context_raw.pdirty = 0; - ui_header_worktab.position = _space; context_raw.tool = _tool; context_raw.bake_type = _bake_type; make_material_parse_paint_material(false); diff --git a/paint/sources/render_path_paint.ts b/paint/sources/render_path_paint.ts index 8d6e8d63..11519805 100644 --- a/paint/sources/render_path_paint.ts +++ b/paint/sources/render_path_paint.ts @@ -513,7 +513,7 @@ function render_path_paint_live_brush_dirty() { render_path_paint_last_x = mouse_view_x(); render_path_paint_last_y = mouse_view_y(); if (config_raw.brush_live && context_raw.pdirty <= 0) { - let moved: bool = (mx != render_path_paint_last_x || my != render_path_paint_last_y) && (context_in_viewport() || context_in_2d_view()); + let moved: bool = (mx != render_path_paint_last_x || my != render_path_paint_last_y) && (context_in_3d_view() || context_in_2d_view()); if (moved || context_raw.brush_locked) { context_raw.rdirty = 2; } diff --git a/paint/sources/render_path_raytrace.ts b/paint/sources/render_path_raytrace.ts index 16c0d957..f6a38cc3 100644 --- a/paint/sources/render_path_raytrace.ts +++ b/paint/sources/render_path_raytrace.ts @@ -198,7 +198,7 @@ function render_path_raytrace_draw(use_live_layer: bool) { ///if arm_metal // Delay path tracing additional samples while painting let down: bool = mouse_down() || pen_down(); - if (context_in_viewport() && down) { + if (context_in_3d_view() && down) { render_path_raytrace_frame = 0; } ///end diff --git a/paint/sources/ui_header.ts b/paint/sources/ui_header.ts index 28402dee..8c2fa818 100644 --- a/paint/sources/ui_header.ts +++ b/paint/sources/ui_header.ts @@ -2,7 +2,6 @@ let ui_header_default_h: i32 = 28; let ui_header_h: i32 = ui_header_default_h; let ui_header_handle: ui_handle_t = ui_handle_create(); -let ui_header_worktab: ui_handle_t = ui_handle_create(); function ui_header_init() { ui_header_handle.layout = ui_layout_t.HORIZONTAL; diff --git a/paint/sources/ui_menubar.ts b/paint/sources/ui_menubar.ts index 53bbefcf..26712d8d 100644 --- a/paint/sources/ui_menubar.ts +++ b/paint/sources/ui_menubar.ts @@ -1,7 +1,8 @@ let ui_menubar_default_w: i32 = 330; -let ui_menubar_workspace_handle: ui_handle_t = ui_handle_create(); +let ui_menubar_hwnd: ui_handle_t = ui_handle_create(); let ui_menubar_menu_handle: ui_handle_t = ui_handle_create(); +let ui_menubar_tab: ui_handle_t = ui_handle_create(); let ui_menubar_w: i32 = ui_menubar_default_w; let ui_menubar_category: i32 = 0; @@ -14,7 +15,7 @@ type update_info_t = { }; function ui_menubar_init() { - ui_menubar_workspace_handle.layout = ui_layout_t.HORIZONTAL; + ui_menubar_hwnd.layout = ui_layout_t.HORIZONTAL; ui_menubar_menu_handle.layout = ui_layout_t.HORIZONTAL; } @@ -144,20 +145,16 @@ function ui_menubar_draw_tab_header() { let ww: i32 = iron_window_width() - config_raw.layout[layout_size_t.SIDEBAR_W] - ui_menubar_w - nodesw; panel_x = (sys_x() - item_w) + ui_menubar_w; - if (ui_window(ui_menubar_workspace_handle, panel_x, 0, ww, ui_header_h)) { + if (ui_window(ui_menubar_hwnd, panel_x, 0, ww, ui_header_h)) { if (config_raw.touch_ui) { ui_fill(0, 0, ui._window_w, ui._window_h + 4, ui.ops.theme.SEPARATOR_COL); } else { - ui_tab(ui_header_worktab, tr("3D View")); + ui_tab(ui_menubar_tab, tr("3D View")); - if (ui_tab(ui_header_worktab, tr(">"))) { - ui_header_worktab.position = 0; - ui_menu_draw(function () { - if (ui_menu_button(tr("3D View"))) {} - if (ui_menu_button(tr("2D View"))) {} - if (ui_menu_button(tr("Nodes"))) {} - }); + if (ui_tab(ui_menubar_tab, base_view3d_show ? ">" : "<", false, -2)) { + base_view3d_show = !base_view3d_show; + ui_menubar_tab.position = 0; } } } diff --git a/paint/sources/ui_sidebar.ts b/paint/sources/ui_sidebar.ts index 5fe7a24a..e5d86e86 100644 --- a/paint/sources/ui_sidebar.ts +++ b/paint/sources/ui_sidebar.ts @@ -11,8 +11,31 @@ let ui_sidebar_default_w: i32 = ui_sidebar_default_w_full; let ui_sidebar_tabx: i32 = 0; let ui_sidebar_hminimized: ui_handle_t = ui_handle_create(); let ui_sidebar_w_mini: i32 = ui_sidebar_default_w_mini; +let ui_sidebar_last_tab: i32 = 0; function ui_sidebar_render_ui() { + + // Expand button + if (config_raw.layout[layout_size_t.SIDEBAR_W] == 0) { + let width: i32 = math_floor(draw_string_width(ui.ops.font, ui.font_size, "<") + 25 * UI_SCALE()); + if (ui_window(ui_sidebar_hminimized, iron_window_width() - width, -1, width, math_floor(UI_ELEMENT_H() + 4 * UI_SCALE()))) { + ui_fill(0, 0, ui._window_w, ui._window_h + 1, ui.ops.theme.SEPARATOR_COL); + ui._w = width; + let _BUTTON_H: i32 = ui.ops.theme.BUTTON_H; + let _BUTTON_COL: i32 = ui.ops.theme.BUTTON_COL; + ui.ops.theme.BUTTON_H = ui.ops.theme.ELEMENT_H; + ui.ops.theme.BUTTON_COL = ui.ops.theme.SEPARATOR_COL; + + if (ui_button("<")) { + // ui_base_htabs[tab_area_t.SIDEBAR0].position = ui_sidebar_last_tab; + config_raw.layout[layout_size_t.SIDEBAR_W] = context_raw.maximized_sidebar_width != 0 ? context_raw.maximized_sidebar_width : math_floor(ui_sidebar_default_w * config_raw.window_scale); + } + ui.ops.theme.BUTTON_H = _BUTTON_H; + ui.ops.theme.BUTTON_COL = _BUTTON_COL; + } + return; + } + // Tabs let mini: bool = config_raw.layout[layout_size_t.SIDEBAR_W] <= ui_sidebar_w_mini; let expand_button_offset: i32 = config_raw.touch_ui ? math_floor(UI_ELEMENT_H() + UI_ELEMENT_OFFSET()) : 0; @@ -28,6 +51,19 @@ function ui_sidebar_render_ui() { for (let i: i32 = 0; i < (mini ? 1 : tabs.length); ++i) { tabs[i].f(ui_base_htabs[tab_area_t.SIDEBAR0]); } + + if (ui_base_htabs[tab_area_t.SIDEBAR0].position < tabs.length) { + ui_sidebar_last_tab = ui_base_htabs[tab_area_t.SIDEBAR0].position; + } + + if (!config_raw.touch_ui) { + if (ui_tab(ui_base_htabs[tab_area_t.SIDEBAR0], ">", false, -2)) { + ui_base_htabs[tab_area_t.SIDEBAR0].position = ui_sidebar_last_tab; + config_raw.layout_tabs[tab_area_t.SIDEBAR0] = ui_sidebar_last_tab; + context_raw.maximized_sidebar_width = config_raw.layout[layout_size_t.SIDEBAR_W]; + config_raw.layout[layout_size_t.SIDEBAR_W] = 0; + } + } } if (ui_window(ui_base_hwnds[tab_area_t.SIDEBAR1], ui_sidebar_tabx, config_raw.layout[layout_size_t.SIDEBAR_H0], config_raw.layout[layout_size_t.SIDEBAR_W], config_raw.layout[layout_size_t.SIDEBAR_H1] - expand_button_offset)) { let tabs: tab_draw_t[] = ui_base_hwnd_tabs[tab_area_t.SIDEBAR1]; @@ -49,7 +85,7 @@ function ui_sidebar_render_ui() { let _BUTTON_COL: i32 = ui.ops.theme.BUTTON_COL; ui.ops.theme.BUTTON_H = ui.ops.theme.ELEMENT_H; ui.ops.theme.BUTTON_COL = ui.ops.theme.WINDOW_BG_COL; - if (ui_button(mini ? "<<" : ">>")) { + if (ui_button(mini ? "<" : ">")) { config_raw.layout[layout_size_t.SIDEBAR_W] = mini ? ui_sidebar_default_w_full : ui_sidebar_default_w_mini; config_raw.layout[layout_size_t.SIDEBAR_W] = math_floor(config_raw.layout[layout_size_t.SIDEBAR_W] * UI_SCALE()); } @@ -57,30 +93,4 @@ function ui_sidebar_render_ui() { ui.ops.theme.BUTTON_COL = _BUTTON_COL; } } - - // Expand button - if (config_raw.layout[layout_size_t.SIDEBAR_W] == 0) { - let width: i32 = math_floor(draw_string_width(ui.ops.font, ui.font_size, "<<") + 25 * UI_SCALE()); - if (ui_window(ui_sidebar_hminimized, iron_window_width() - width, 0, width, math_floor(UI_ELEMENT_H() + UI_ELEMENT_OFFSET() + 1))) { - ui._w = width; - let _BUTTON_H: i32 = ui.ops.theme.BUTTON_H; - let _BUTTON_COL: i32 = ui.ops.theme.BUTTON_COL; - ui.ops.theme.BUTTON_H = ui.ops.theme.ELEMENT_H; - ui.ops.theme.BUTTON_COL = ui.ops.theme.SEPARATOR_COL; - - if (ui_button("<<")) { - config_raw.layout[layout_size_t.SIDEBAR_W] = context_raw.maximized_sidebar_width != 0 ? context_raw.maximized_sidebar_width : math_floor(ui_sidebar_default_w * config_raw.window_scale); - } - ui.ops.theme.BUTTON_H = _BUTTON_H; - ui.ops.theme.BUTTON_COL = _BUTTON_COL; - } - } - else if (ui_base_htabs[tab_area_t.SIDEBAR0].changed && ui_base_htabs[tab_area_t.SIDEBAR0].position == context_raw.last_htab0_pos) { - if (sys_time() - context_raw.select_time < 0.25) { - context_raw.maximized_sidebar_width = config_raw.layout[layout_size_t.SIDEBAR_W]; - config_raw.layout[layout_size_t.SIDEBAR_W] = 0; - } - context_raw.select_time = sys_time(); - } - context_raw.last_htab0_pos = ui_base_htabs[tab_area_t.SIDEBAR0].position; } diff --git a/paint/sources/ui_statusbar.ts b/paint/sources/ui_statusbar.ts index 8ed913ee..42932aa1 100644 --- a/paint/sources/ui_statusbar.ts +++ b/paint/sources/ui_statusbar.ts @@ -1,5 +1,6 @@ let ui_statusbar_default_h: i32 = 33; +let ui_statusbar_last_tab: i32 = 0; function ui_statusbar_init() { } @@ -27,6 +28,18 @@ function ui_statusbar_render_ui() { draw.f(htab); } + if (ui_base_htabs[tab_area_t.STATUS].position < hwnd_draws.length) { + ui_statusbar_last_tab = ui_base_htabs[tab_area_t.STATUS].position; + } + + if (!config_raw.touch_ui) { + let minimized: bool = config_raw.layout[layout_size_t.STATUS_H] <= (ui_statusbar_default_h * config_raw.window_scale); + if (ui_tab(ui_base_htabs[tab_area_t.STATUS], minimized ? "<" : ">", false, -2)) { + ui_base_htabs[tab_area_t.STATUS].position = ui_statusbar_last_tab; + config_raw.layout_tabs[tab_area_t.STATUS] = ui_statusbar_last_tab; + } + } + let minimized: bool = statush <= ui_statusbar_default_h * config_raw.window_scale; if (htab.changed && (htab.position == context_raw.last_status_position || minimized)) { ui_base_toggle_browser(); diff --git a/paint/sources/ui_toolbar.ts b/paint/sources/ui_toolbar.ts index 9340cfac..3c798cac 100644 --- a/paint/sources/ui_toolbar.ts +++ b/paint/sources/ui_toolbar.ts @@ -117,7 +117,7 @@ function ui_toolbar_render_ui() { config_raw.layout[layout_size_t.HEADER] = 0; } } - // Draw ">>" button if header is hidden + // Draw ">" button if header is hidden else { let _ELEMENT_H: i32 = ui.ops.theme.ELEMENT_H; let _BUTTON_H: i32 = ui.ops.theme.BUTTON_H; @@ -131,7 +131,7 @@ function ui_toolbar_render_ui() { let _w: i32 = ui._w; ui._w = ui_toolbar_w(); - if (ui_button(">>")) { + if (ui_button(">")) { ui_toolbar_tool_properties_menu(); }