Floating toolbar

This commit is contained in:
luboslenco
2025-01-09 15:47:57 +01:00
parent e20e79d8b7
commit ecff0d1088
4 changed files with 63 additions and 21 deletions
+4 -4
View File
@@ -219,7 +219,7 @@ function base_h(): i32 {
res -= math_floor(ui_header_default_h * 2 * config_raw.window_scale) + statush;
if (config_raw.layout[layout_size_t.HEADER] == 0) {
res += ui_header_h;
res += ui_header_h * 2;
}
}
@@ -280,9 +280,9 @@ function base_resize() {
if (ui_base_show) {
base_appx = ui_toolbar_w;
base_appy = ui_header_h * 2;
if (config_raw.layout[layout_size_t.HEADER] == 0) {
base_appy -= ui_header_h;
base_appy = 0;
if (config_raw.layout[layout_size_t.HEADER] == 1) {
base_appy = ui_header_h * 2;
}
}
else {
+1
View File
@@ -147,6 +147,7 @@ function box_preferences_show() {
box_preferences_files_keymap = null;
make_material_parse_mesh_material();
make_material_parse_paint_material();
ui_base_set_viewport_col(ui.ops.theme.VIEWPORT_COL);
}, ui);
}
if (ui_menu_button(ui, tr("Import..."))) {
+23 -9
View File
@@ -15,14 +15,16 @@ 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 panel_x: i32 = app_x();
///if (is_paint || is_sculpt)
let panelx: i32 = app_x() - ui_toolbar_w;
///end
///if is_lab
let panelx: i32 = app_x();
if (config_raw.layout[layout_size_t.HEADER] == 1) {
panel_x = app_x() - item_w;
}
///end
if (ui_window(ui_menubar_menu_handle, panelx, 0, ui_menubar_w, ui_header_h)) {
if (ui_window(ui_menubar_menu_handle, panel_x, 0, ui_menubar_w, ui_header_h)) {
ui._x += 1; // Prevent "File" button highlight on startup
ui_begin_menu();
@@ -30,7 +32,7 @@ function ui_menubar_render_ui() {
if (config_raw.touch_ui) {
///if (is_paint || is_sculpt)
ui._w = ui_toolbar_w;
ui._w = item_w;
///end
///if is_lab
ui._w = 36;
@@ -109,16 +111,28 @@ function ui_menubar_render_ui() {
ui_end_menu();
}
if (config_raw.layout[layout_size_t.HEADER] == 1) {
// Non-floating header
ui_menubar_draw_tab_header();
}
}
function ui_menubar_draw_tab_header() {
let ui: ui_t = ui_base_ui;
let item_w: i32 = ui_toolbar_get_w();
let panel_x: i32 = app_x();
let nodesw: i32 = (ui_nodes_show || ui_view2d_show) ? config_raw.layout[layout_size_t.NODES_W] : 0;
///if (is_paint || is_sculpt)
let ww: i32 = sys_width() - config_raw.layout[layout_size_t.SIDEBAR_W] - ui_menubar_w - nodesw;
panelx = (app_x() - ui_toolbar_w) + ui_menubar_w;
panel_x = (app_x() - item_w) + ui_menubar_w;
///else
let ww: i32 = sys_width() - ui_menubar_w - nodesw;
panelx = (app_x()) + ui_menubar_w;
panel_x = (app_x()) + ui_menubar_w;
///end
if (ui_window(ui_menubar_workspace_handle, panelx, 0, ww, ui_header_h)) {
if (ui_window(ui_menubar_workspace_handle, panel_x, 0, ww, ui_header_h)) {
if (!config_raw.touch_ui) {
ui_tab(ui_header_worktab, tr("3D View"));
+35 -8
View File
@@ -68,18 +68,39 @@ function ui_toolbar_draw_tool(i: i32, ui: ui_t, img: image_t, icon_accent: i32,
ui._y += 2;
}
function ui_toolbar_get_w(): i32 {
let ui: ui_t = ui_base_ui;
let w: i32 = 0;
if (config_raw.touch_ui) {
w = ui_toolbar_default_w + 6;
}
else {
w = ui_toolbar_default_w;
}
w = math_floor(w * ui_SCALE(ui));
return w;
}
function ui_toolbar_render_ui() {
let ui: ui_t = ui_base_ui;
if (config_raw.touch_ui) {
ui_toolbar_w = ui_toolbar_default_w + 6;
}
else {
ui_toolbar_w = ui_toolbar_default_w;
}
ui_toolbar_w = math_floor(ui_toolbar_w * ui_SCALE(ui));
ui_toolbar_w = ui_toolbar_get_w();
if (ui_window(ui_toolbar_handle, 0, ui_header_h, ui_toolbar_w, sys_height() - ui_header_h)) {
let x: i32 = 0;
let y: i32 = ui_header_h;
let h: i32 = sys_height() - ui_header_h;
let _WINDOW_BG_COL: i32 = ui.ops.theme.WINDOW_BG_COL;
if (config_raw.layout[layout_size_t.HEADER] == 0) {
// Header is off -> floating toolbar
x += 5 * ui_SCALE(ui);
y += 5 * ui_SCALE(ui);
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)) {
ui._y -= 4 * ui_SCALE(ui);
ui.image_scroll_align = false;
@@ -187,6 +208,12 @@ function ui_toolbar_render_ui() {
ui.image_scroll_align = true;
}
if (config_raw.layout[layout_size_t.HEADER] == 0) {
// Header is off -> floating toolbar
ui_toolbar_w = 0;
ui.ops.theme.WINDOW_BG_COL = _WINDOW_BG_COL;
}
if (config_raw.touch_ui) {
// Hide scrollbar
let _SCROLL_W: i32 = ui.ops.theme.SCROLL_W;