فهرست منبع

Fixed theme update and some widgets.

Daniel J. Ramirez 7 سال پیش
والد
کامیت
592ee82010
4فایلهای تغییر یافته به همراه29 افزوده شده و 14 حذف شده
  1. 4 3
      editor/editor_node.cpp
  2. 22 2
      editor/editor_themes.cpp
  3. 1 1
      editor/editor_themes.h
  4. 2 8
      editor/plugins/canvas_item_editor_plugin.cpp

+ 4 - 3
editor/editor_node.cpp

@@ -284,9 +284,10 @@ void EditorNode::_notification(int p_what) {
 	if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
 		scene_tabs->set_tab_close_display_policy((bool(EDITOR_DEF("interface/editor/always_show_close_button_in_scene_tabs", false)) ? Tabs::CLOSE_BUTTON_SHOW_ALWAYS : Tabs::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
 		property_editor->set_enable_capitalize_paths(bool(EDITOR_DEF("interface/editor/capitalize_properties", true)));
-		Ref<Theme> theme = create_editor_theme(theme_base->get_theme());
+		Ref<Theme> theme = create_custom_theme(theme_base->get_theme());
 
 		theme_base->set_theme(theme);
+		gui_base->set_theme(theme);
 
 		gui_base->add_style_override("panel", gui_base->get_stylebox("Background", "EditorStyles"));
 		play_button_panel->add_style_override("panel", gui_base->get_stylebox("PlayButtonPanel", "EditorStyles"));
@@ -4691,9 +4692,9 @@ EditorNode::EditorNode() {
 	theme_base->add_child(gui_base);
 	gui_base->set_anchors_and_margins_preset(Control::PRESET_WIDE);
 
-	Ref<Theme> theme = create_editor_theme();
+	Ref<Theme> theme = create_custom_theme();
 	theme_base->set_theme(theme);
-	gui_base->set_theme(create_custom_theme());
+	gui_base->set_theme(theme);
 	gui_base->add_style_override("panel", gui_base->get_stylebox("Background", "EditorStyles"));
 
 	resource_preview = memnew(EditorResourcePreview);

+ 22 - 2
editor/editor_themes.cpp

@@ -582,7 +582,22 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
 	theme->set_color("font_color_disabled", "CheckButton", font_color_disabled);
 	theme->set_color("icon_color_hover", "CheckButton", font_color_hl);
 
+	theme->set_constant("hseparation", "CheckButton", 4 * EDSCALE);
+	theme->set_constant("check_vadjust", "CheckButton", 0 * EDSCALE);
+
 	// Checkbox
+	Ref<StyleBoxFlat> sb_checkbox = style_menu->duplicate();
+	// HACK, in reality, the checkbox draws the text over the icon by default, so the margin compensates that.
+	const int cb_w = theme->get_icon("GuiChecked", "EditorIcons")->get_width() + default_margin_size;
+	sb_checkbox->set_default_margin(MARGIN_LEFT, cb_w * EDSCALE);
+	sb_checkbox->set_default_margin(MARGIN_RIGHT, default_margin_size * EDSCALE);
+	sb_checkbox->set_default_margin(MARGIN_TOP, default_margin_size * EDSCALE);
+	sb_checkbox->set_default_margin(MARGIN_BOTTOM, default_margin_size * EDSCALE);
+
+	theme->set_stylebox("normal", "CheckBox", sb_checkbox);
+	theme->set_stylebox("pressed", "CheckBox", sb_checkbox);
+	theme->set_stylebox("disabled", "CheckBox", sb_checkbox);
+	theme->set_stylebox("hover", "CheckBox", sb_checkbox);
 	theme->set_icon("checked", "CheckBox", theme->get_icon("GuiChecked", "EditorIcons"));
 	theme->set_icon("unchecked", "CheckBox", theme->get_icon("GuiUnchecked", "EditorIcons"));
 	theme->set_icon("radio_checked", "CheckBox", theme->get_icon("GuiRadioChecked", "EditorIcons"));
@@ -594,6 +609,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
 	theme->set_color("font_color_disabled", "CheckBox", font_color_disabled);
 	theme->set_color("icon_color_hover", "CheckBox", font_color_hl);
 
+	theme->set_constant("hseparation", "CheckBox", 4 * EDSCALE);
+	theme->set_constant("check_vadjust", "CheckBox", 0 * EDSCALE);
+
 	// PopupMenu
 	Ref<StyleBoxFlat> style_popup_menu = style_popup;
 	theme->set_stylebox("panel", "PopupMenu", style_popup_menu);
@@ -1049,12 +1067,14 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
 	return theme;
 }
 
-Ref<Theme> create_custom_theme() {
-	Ref<Theme> theme = create_editor_theme();
+Ref<Theme> create_custom_theme(const Ref<Theme> p_theme) {
+	Ref<Theme> theme;
 
 	String custom_theme = EditorSettings::get_singleton()->get("interface/theme/custom_theme");
 	if (custom_theme != "") {
 		theme = ResourceLoader::load(custom_theme);
+	} else {
+		theme = create_editor_theme(p_theme);
 	}
 
 	String global_font = EditorSettings::get_singleton()->get("interface/editor/custom_font");

+ 1 - 1
editor/editor_themes.h

@@ -34,6 +34,6 @@
 
 Ref<Theme> create_editor_theme(Ref<Theme> p_theme = NULL);
 
-Ref<Theme> create_custom_theme();
+Ref<Theme> create_custom_theme(Ref<Theme> p_theme = NULL);
 
 #endif

+ 2 - 8
editor/plugins/canvas_item_editor_plugin.cpp

@@ -4373,7 +4373,7 @@ void CanvasItemEditorViewport::_on_mouse_exit() {
 void CanvasItemEditorViewport::_on_select_type(Object *selected) {
 	CheckBox *check = Object::cast_to<CheckBox>(selected);
 	String type = check->get_text();
-	selector_label->set_text(vformat(TTR("Add %s"), type));
+	selector->set_title(vformat(TTR("Add %s"), type));
 	label->set_text(vformat(TTR("Adding %s..."), type));
 }
 
@@ -4698,7 +4698,7 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p
 			CheckBox *check = Object::cast_to<CheckBox>(btn_list[i]);
 			check->set_pressed(check->get_text() == default_type);
 		}
-		selector_label->set_text(vformat(TTR("Add %s"), default_type));
+		selector->set_title(vformat(TTR("Add %s"), default_type));
 		selector->popup_centered_minsize();
 	} else {
 		_perform_drop_data();
@@ -4757,12 +4757,6 @@ CanvasItemEditorViewport::CanvasItemEditorViewport(EditorNode *p_node, CanvasIte
 	vbc->set_v_size_flags(SIZE_EXPAND_FILL);
 	vbc->set_custom_minimum_size(Size2(200, 260) * EDSCALE);
 
-	selector_label = memnew(Label);
-	vbc->add_child(selector_label);
-	selector_label->set_align(Label::ALIGN_CENTER);
-	selector_label->set_valign(Label::VALIGN_BOTTOM);
-	selector_label->set_custom_minimum_size(Size2(0, 30) * EDSCALE);
-
 	btn_group = memnew(VBoxContainer);
 	vbc->add_child(btn_group);
 	btn_group->set_h_size_flags(0);