Improve toolbar size handling

This commit is contained in:
luboslenco
2025-07-18 23:37:51 +02:00
parent f899ea6d8e
commit c0738623ca
13 changed files with 36 additions and 41 deletions
+6 -6
View File
@@ -132,10 +132,10 @@ function base_init() {
sys_notify_on_update(camera_update);
sys_notify_on_render_2d(base_render);
base_appx = ui_toolbar_w;
base_appy = ui_header_h;
base_appx = ui_toolbar_w(true);
base_appy = 0;
if (config_raw.layout[layout_size_t.HEADER] == 1) {
base_appy += ui_header_h;
base_appy = ui_header_h * 2;
}
let cam: camera_object_t = scene_camera;
cam.data.fov = math_floor(cam.data.fov * 100) / 100;
@@ -176,10 +176,10 @@ function base_w(): i32 {
res = iron_window_width() - sidebarw - ui_toolbar_default_w;
}
else if (ui_nodes_show || ui_view2d_show) {
res = iron_window_width() - config_raw.layout[layout_size_t.SIDEBAR_W] - config_raw.layout[layout_size_t.NODES_W] - ui_toolbar_w;
res = iron_window_width() - config_raw.layout[layout_size_t.SIDEBAR_W] - config_raw.layout[layout_size_t.NODES_W] - ui_toolbar_w(true);
}
else if (ui_base_show) {
res = iron_window_width() - config_raw.layout[layout_size_t.SIDEBAR_W] - ui_toolbar_w;
res = iron_window_width() - config_raw.layout[layout_size_t.SIDEBAR_W] - ui_toolbar_w(true);
}
else { // Distract free
res = iron_window_width();
@@ -278,7 +278,7 @@ function base_resize() {
context_raw.ddirty = 2;
if (ui_base_show) {
base_appx = ui_toolbar_w;
base_appx = ui_toolbar_w(true);
base_appy = 0;
if (config_raw.layout[layout_size_t.HEADER] == 1) {
base_appy = ui_header_h * 2;
-1
View File
@@ -902,7 +902,6 @@ function box_preferences_set_scale() {
_ui_set_scale(base_ui_menu, scale);
base_resize();
config_raw.layout[layout_size_t.SIDEBAR_W] = math_floor(ui_base_default_sidebar_w * scale);
ui_toolbar_w = math_floor(ui_toolbar_default_w * scale);
}
function box_preferences_theme_to_json(theme: ui_theme_t): string {
+1 -1
View File
@@ -29,7 +29,7 @@ function tab_fonts_draw(htab: ui_handle_t) {
ui_end_sticky();
ui_separator(3, false);
let statusw: i32 = iron_window_width() - ui_toolbar_w - config_raw.layout[layout_size_t.SIDEBAR_W];
let statusw: i32 = iron_window_width() - ui_toolbar_w(true) - config_raw.layout[layout_size_t.SIDEBAR_W];
let slotw: i32 = math_floor(51 * ui_SCALE(ui));
let num: i32 = math_floor(statusw / slotw);
if (num == 0) {
+1 -1
View File
@@ -40,7 +40,7 @@ function tab_textures_draw(htab: ui_handle_t) {
if (project_assets.length > 0) {
///if (is_paint || is_sculpt)
let statusw: i32 = iron_window_width() - ui_toolbar_w - config_raw.layout[layout_size_t.SIDEBAR_W];
let statusw: i32 = iron_window_width() - ui_toolbar_w(true) - config_raw.layout[layout_size_t.SIDEBAR_W];
///end
///if is_lab
let statusw: i32 = iron_window_width();
-1
View File
@@ -58,7 +58,6 @@ function ui_base_init_hwnd_tabs(): tab_draw_array_t[] {
function ui_base_init() {
///if (is_paint || is_sculpt)
ui_toolbar_init();
ui_toolbar_w = math_floor(ui_toolbar_default_w * config_raw.window_scale);
context_raw.text_tool_text = tr("Text");
///end
+1 -1
View File
@@ -26,7 +26,7 @@ function ui_header_render_ui() {
///if is_lab
let ww: i32 = iron_window_width() - nodesw;
///else
let ww: i32 = iron_window_width() - ui_toolbar_w - config_raw.layout[layout_size_t.SIDEBAR_W] - nodesw;
let ww: i32 = iron_window_width() - ui_toolbar_w(true) - config_raw.layout[layout_size_t.SIDEBAR_W] - nodesw;
///end
if (ui_window(ui_header_handle, sys_x(), ui_header_h, ww, ui_header_h)) {
+2 -2
View File
@@ -15,7 +15,7 @@ function ui_menubar_init() {
function ui_menubar_render_ui() {
let ui: ui_t = ui_base_ui;
let item_w: i32 = ui_toolbar_get_w();
let item_w: i32 = ui_toolbar_w();
let panel_x: i32 = sys_x();
///if (is_paint || is_sculpt)
@@ -120,7 +120,7 @@ function ui_menubar_render_ui() {
function ui_menubar_draw_tab_header() {
let ui: ui_t = ui_base_ui;
let item_w: i32 = ui_toolbar_get_w();
let item_w: i32 = ui_toolbar_w();
let panel_x: i32 = sys_x();
let nodesw: i32 = (ui_nodes_show || ui_view2d_show) ? config_raw.layout[layout_size_t.NODES_W] : 0;
+7 -7
View File
@@ -542,7 +542,7 @@ function ui_nodes_update() {
}
///if (is_paint || is_sculpt)
ui_nodes_wx = math_floor(sys_w()) + ui_toolbar_w;
ui_nodes_wx = math_floor(sys_w()) + ui_toolbar_w(true);
///end
///if is_lab
ui_nodes_wx = math_floor(sys_w());
@@ -556,8 +556,8 @@ function ui_nodes_update() {
let ww: i32 = config_raw.layout[layout_size_t.NODES_W];
if (!ui_base_show) {
///if (is_paint || is_sculpt)
ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w;
ui_nodes_wx -= ui_toolbar_w;
ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w(true);
ui_nodes_wx -= ui_toolbar_w(true);
///end
ui_nodes_wy = 0;
}
@@ -724,7 +724,7 @@ function ui_nodes_draw_grid(zoom: f32): gpu_texture_t {
///if (is_paint || is_sculpt)
if (!ui_base_show) {
ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w;
ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w(true);
}
///end
@@ -889,7 +889,7 @@ function ui_nodes_render() {
ui_nodes_ww = config_raw.layout[layout_size_t.NODES_W];
///if (is_paint || is_sculpt)
ui_nodes_wx = math_floor(sys_w()) + ui_toolbar_w;
ui_nodes_wx = math_floor(sys_w()) + ui_toolbar_w(true);
///end
///if is_lab
ui_nodes_wx = math_floor(sys_w());
@@ -899,8 +899,8 @@ function ui_nodes_render() {
///if (is_paint || is_sculpt)
if (!ui_base_show) {
ui_nodes_ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w;
ui_nodes_wx -= ui_toolbar_w;
ui_nodes_ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w(true);
ui_nodes_wx -= ui_toolbar_w(true);
}
///end
+1 -1
View File
@@ -6,7 +6,7 @@ function ui_status_init() {
function ui_status_width(): i32 {
///if (is_paint || is_sculpt)
return iron_window_width() - ui_toolbar_w - config_raw.layout[layout_size_t.SIDEBAR_W];
return iron_window_width() - ui_toolbar_w(true) - config_raw.layout[layout_size_t.SIDEBAR_W];
///end
///if is_lab
return iron_window_width();
+12 -15
View File
@@ -6,7 +6,6 @@ let ui_toolbar_default_w: i32 = 36;
///end
let ui_toolbar_handle: ui_handle_t = ui_handle_create();
let ui_toolbar_w: i32 = ui_toolbar_default_w;
let ui_toolbar_last_tool: i32 = 0;
let ui_toolbar_tool_names: string[] = [
_tr("Brush"),
@@ -68,8 +67,10 @@ function ui_toolbar_draw_tool(i: i32, ui: ui_t, img: gpu_texture_t, icon_accent:
ui._y += 2;
}
function ui_toolbar_get_w(): i32 {
let ui: ui_t = ui_base_ui;
function ui_toolbar_w(screen_size_request: bool = false): i32 {
if (screen_size_request && context_is_floating_toolbar()) {
return 0;
}
let w: i32 = 0;
if (config_raw.touch_ui) {
@@ -78,33 +79,30 @@ function ui_toolbar_get_w(): i32 {
else {
w = ui_toolbar_default_w;
}
w = math_floor(w * ui_SCALE(ui));
w = math_floor(w * config_raw.window_scale);
return w;
}
function ui_toolbar_get_x(): i32 {
function ui_toolbar_x(): i32 {
let ui: ui_t = ui_base_ui;
return 5 * ui_SCALE(ui);
}
function ui_toolbar_render_ui() {
let ui: ui_t = ui_base_ui;
ui_toolbar_w = ui_toolbar_get_w();
let x: i32 = 0;
let y: i32 = ui_header_h;
let h: i32 = iron_window_height() - ui_header_h;
let _WINDOW_BG_COL: i32 = ui.ops.theme.WINDOW_BG_COL;
if (context_is_floating_toolbar()) {
x += ui_toolbar_get_x();
y += ui_toolbar_get_x();
h = ui_toolbar_tool_names.length * (ui_toolbar_w + 2);
x += ui_toolbar_x();
y += ui_toolbar_x();
h = ui_toolbar_tool_names.length * (ui_toolbar_w() + 2);
ui.ops.theme.WINDOW_BG_COL = ui.ops.theme.SEPARATOR_COL;
}
if (ui_window(ui_toolbar_handle, x, y, ui_toolbar_w, h)) {
if (ui_window(ui_toolbar_handle, x, y, ui_toolbar_w(), h)) {
ui._y -= 4 * ui_SCALE(ui);
ui.image_scroll_align = false;
@@ -133,7 +131,7 @@ function ui_toolbar_render_ui() {
let font_height: i32 = draw_font_height(ui.ops.font, ui.font_size);
ui.font_offset_y = (ui_ELEMENT_H(ui) - font_height) / 2;
let _w: i32 = ui._w;
ui._w = ui_toolbar_w;
ui._w = ui_toolbar_w();
if (ui_button(">>")) {
ui_toolbar_tool_properties_menu();
@@ -213,7 +211,6 @@ function ui_toolbar_render_ui() {
}
if (context_is_floating_toolbar()) {
ui_toolbar_w = 0;
ui.ops.theme.WINDOW_BG_COL = _WINDOW_BG_COL;
}
@@ -245,7 +242,7 @@ function ui_toolbar_tool_properties_menu() {
function ui_toolbar_draw_highlight() {
let ui: ui_t = ui_base_ui;
let size: i32 = ui_toolbar_w - 4;
let size: i32 = ui_toolbar_w() - 4;
draw_set_color(ui.ops.theme.HIGHLIGHT_COL);
ui_draw_rect(true, ui._x + -1, ui._y + 2, size + 2, size + 2);
}
+3 -3
View File
@@ -67,7 +67,7 @@ function ui_view2d_render() {
ui_view2d_ww = config_raw.layout[layout_size_t.NODES_W];
///if (is_paint || is_sculpt)
ui_view2d_wx = math_floor(sys_w()) + ui_toolbar_w;
ui_view2d_wx = math_floor(sys_w()) + ui_toolbar_w(true);
///else
ui_view2d_wx = math_floor(sys_w());
///end
@@ -76,8 +76,8 @@ function ui_view2d_render() {
///if (is_paint || is_sculpt)
if (!ui_base_show) {
ui_view2d_ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w;
ui_view2d_wx -= ui_toolbar_w;
ui_view2d_ww += config_raw.layout[layout_size_t.SIDEBAR_W] + ui_toolbar_w(true);
ui_view2d_wx -= ui_toolbar_w(true);
}
///end