Skip to content

Commit ecff0d1

Browse files
committed
Floating toolbar
1 parent e20e79d commit ecff0d1

File tree

4 files changed

+60
-18
lines changed

4 files changed

+60
-18
lines changed

base/sources/base.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ function base_h(): i32 {
219219
res -= math_floor(ui_header_default_h * 2 * config_raw.window_scale) + statush;
220220

221221
if (config_raw.layout[layout_size_t.HEADER] == 0) {
222-
res += ui_header_h;
222+
res += ui_header_h * 2;
223223
}
224224
}
225225

@@ -280,9 +280,9 @@ function base_resize() {
280280

281281
if (ui_base_show) {
282282
base_appx = ui_toolbar_w;
283-
base_appy = ui_header_h * 2;
284-
if (config_raw.layout[layout_size_t.HEADER] == 0) {
285-
base_appy -= ui_header_h;
283+
base_appy = 0;
284+
if (config_raw.layout[layout_size_t.HEADER] == 1) {
285+
base_appy = ui_header_h * 2;
286286
}
287287
}
288288
else {

base/sources/box_preferences.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ function box_preferences_show() {
147147
box_preferences_files_keymap = null;
148148
make_material_parse_mesh_material();
149149
make_material_parse_paint_material();
150+
ui_base_set_viewport_col(ui.ops.theme.VIEWPORT_COL);
150151
}, ui);
151152
}
152153
if (ui_menu_button(ui, tr("Import..."))) {

base/sources/ui_menubar.ts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,24 @@ function ui_menubar_init() {
1515
function ui_menubar_render_ui() {
1616
let ui: ui_t = ui_base_ui;
1717

18+
let item_w: i32 = ui_toolbar_get_w();
19+
let panel_x: i32 = app_x();
20+
1821
///if (is_paint || is_sculpt)
19-
let panelx: i32 = app_x() - ui_toolbar_w;
20-
///end
21-
///if is_lab
22-
let panelx: i32 = app_x();
22+
if (config_raw.layout[layout_size_t.HEADER] == 1) {
23+
panel_x = app_x() - item_w;
24+
}
2325
///end
2426

25-
if (ui_window(ui_menubar_menu_handle, panelx, 0, ui_menubar_w, ui_header_h)) {
27+
if (ui_window(ui_menubar_menu_handle, panel_x, 0, ui_menubar_w, ui_header_h)) {
2628
ui._x += 1; // Prevent "File" button highlight on startup
2729

2830
ui_begin_menu();
2931

3032
if (config_raw.touch_ui) {
3133

3234
///if (is_paint || is_sculpt)
33-
ui._w = ui_toolbar_w;
35+
ui._w = item_w;
3436
///end
3537
///if is_lab
3638
ui._w = 36;
@@ -109,16 +111,28 @@ function ui_menubar_render_ui() {
109111
ui_end_menu();
110112
}
111113

114+
if (config_raw.layout[layout_size_t.HEADER] == 1) {
115+
// Non-floating header
116+
ui_menubar_draw_tab_header();
117+
}
118+
}
119+
120+
function ui_menubar_draw_tab_header() {
121+
let ui: ui_t = ui_base_ui;
122+
123+
let item_w: i32 = ui_toolbar_get_w();
124+
let panel_x: i32 = app_x();
125+
112126
let nodesw: i32 = (ui_nodes_show || ui_view2d_show) ? config_raw.layout[layout_size_t.NODES_W] : 0;
113127
///if (is_paint || is_sculpt)
114128
let ww: i32 = sys_width() - config_raw.layout[layout_size_t.SIDEBAR_W] - ui_menubar_w - nodesw;
115-
panelx = (app_x() - ui_toolbar_w) + ui_menubar_w;
129+
panel_x = (app_x() - item_w) + ui_menubar_w;
116130
///else
117131
let ww: i32 = sys_width() - ui_menubar_w - nodesw;
118-
panelx = (app_x()) + ui_menubar_w;
132+
panel_x = (app_x()) + ui_menubar_w;
119133
///end
120134

121-
if (ui_window(ui_menubar_workspace_handle, panelx, 0, ww, ui_header_h)) {
135+
if (ui_window(ui_menubar_workspace_handle, panel_x, 0, ww, ui_header_h)) {
122136

123137
if (!config_raw.touch_ui) {
124138
ui_tab(ui_header_worktab, tr("3D View"));

base/sources/ui_toolbar.ts

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,18 +68,39 @@ function ui_toolbar_draw_tool(i: i32, ui: ui_t, img: image_t, icon_accent: i32,
6868
ui._y += 2;
6969
}
7070

71-
function ui_toolbar_render_ui() {
71+
function ui_toolbar_get_w(): i32 {
7272
let ui: ui_t = ui_base_ui;
7373

74+
let w: i32 = 0;
7475
if (config_raw.touch_ui) {
75-
ui_toolbar_w = ui_toolbar_default_w + 6;
76+
w = ui_toolbar_default_w + 6;
7677
}
7778
else {
78-
ui_toolbar_w = ui_toolbar_default_w;
79+
w = ui_toolbar_default_w;
7980
}
80-
ui_toolbar_w = math_floor(ui_toolbar_w * ui_SCALE(ui));
81+
w = math_floor(w * ui_SCALE(ui));
82+
return w;
83+
}
84+
85+
function ui_toolbar_render_ui() {
86+
let ui: ui_t = ui_base_ui;
87+
88+
ui_toolbar_w = ui_toolbar_get_w();
8189

82-
if (ui_window(ui_toolbar_handle, 0, ui_header_h, ui_toolbar_w, sys_height() - ui_header_h)) {
90+
let x: i32 = 0;
91+
let y: i32 = ui_header_h;
92+
let h: i32 = sys_height() - ui_header_h;
93+
let _WINDOW_BG_COL: i32 = ui.ops.theme.WINDOW_BG_COL;
94+
95+
if (config_raw.layout[layout_size_t.HEADER] == 0) {
96+
// Header is off -> floating toolbar
97+
x += 5 * ui_SCALE(ui);
98+
y += 5 * ui_SCALE(ui);
99+
h = ui_toolbar_tool_names.length * (ui_toolbar_w + 2);
100+
ui.ops.theme.WINDOW_BG_COL = ui.ops.theme.SEPARATOR_COL;
101+
}
102+
103+
if (ui_window(ui_toolbar_handle, x, y, ui_toolbar_w, h)) {
83104
ui._y -= 4 * ui_SCALE(ui);
84105

85106
ui.image_scroll_align = false;
@@ -187,6 +208,12 @@ function ui_toolbar_render_ui() {
187208
ui.image_scroll_align = true;
188209
}
189210

211+
if (config_raw.layout[layout_size_t.HEADER] == 0) {
212+
// Header is off -> floating toolbar
213+
ui_toolbar_w = 0;
214+
ui.ops.theme.WINDOW_BG_COL = _WINDOW_BG_COL;
215+
}
216+
190217
if (config_raw.touch_ui) {
191218
// Hide scrollbar
192219
let _SCROLL_W: i32 = ui.ops.theme.SCROLL_W;

0 commit comments

Comments
 (0)