luboslenco 8 mesiacov pred
rodič
commit
ecff0d1088

+ 4 - 4
base/sources/base.ts

@@ -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 - 0
base/sources/box_preferences.ts

@@ -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
base/sources/ui_menubar.ts

@@ -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"));

+ 32 - 5
base/sources/ui_toolbar.ts

@@ -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_render_ui() {
+function ui_toolbar_get_w(): i32 {
 	let ui: ui_t = ui_base_ui;
 
+	let w: i32 = 0;
 	if (config_raw.touch_ui) {
-		ui_toolbar_w = ui_toolbar_default_w + 6;
+		w = ui_toolbar_default_w + 6;
 	}
 	else {
-		ui_toolbar_w = ui_toolbar_default_w;
+		w = ui_toolbar_default_w;
 	}
-	ui_toolbar_w = math_floor(ui_toolbar_w * ui_SCALE(ui));
+	w = math_floor(w * ui_SCALE(ui));
+	return w;
+}
+
+function ui_toolbar_render_ui() {
+	let ui: ui_t = ui_base_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;