Browse Source

Merge pull request #20220 from volzhs/texture-size

Fix preview texture size on Inspector
Rémi Verschelde 7 năm trước cách đây
mục cha
commit
71b18acb05
2 tập tin đã thay đổi với 22 bổ sung1 xóa
  1. 21 1
      editor/editor_properties.cpp
  2. 1 0
      editor/editor_properties.h

+ 21 - 1
editor/editor_properties.cpp

@@ -1832,7 +1832,18 @@ void EditorPropertyResource::_resource_preview(const String &p_path, const Ref<T
 	RES p = get_edited_object()->get(get_edited_property());
 	if (p.is_valid() && p->get_instance_id() == p_obj) {
 		if (p_preview.is_valid()) {
-			assign->set_icon(p_preview);
+			String type = p->get_class_name();
+			preview->set_margin(MARGIN_LEFT, assign->get_icon()->get_width() + assign->get_stylebox("normal")->get_default_margin(MARGIN_LEFT) + get_constant("hseparation", "Button"));
+			if (type == "GradientTexture") {
+				preview->set_stretch_mode(TextureRect::STRETCH_SCALE);
+				assign->set_custom_minimum_size(Size2(1, 1));
+			} else {
+				preview->set_stretch_mode(TextureRect::STRETCH_KEEP_ASPECT_CENTERED);
+				int thumbnail_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size");
+				thumbnail_size *= EDSCALE;
+				assign->set_custom_minimum_size(Size2(1, thumbnail_size));
+			}
+			preview->set_texture(p_preview);
 		}
 	}
 }
@@ -2073,6 +2084,7 @@ void EditorPropertyResource::update_property() {
 #endif
 	}
 
+	preview->set_texture(Ref<Texture>());
 	if (res == RES()) {
 		assign->set_icon(Ref<Texture>());
 		assign->set_text(TTR("[empty]"));
@@ -2311,6 +2323,14 @@ EditorPropertyResource::EditorPropertyResource() {
 	assign->connect("draw", this, "_button_draw");
 	hbc->add_child(assign);
 
+	preview = memnew(TextureRect);
+	preview->set_expand(true);
+	preview->set_anchors_and_margins_preset(PRESET_WIDE);
+	preview->set_margin(MARGIN_TOP, 1);
+	preview->set_margin(MARGIN_BOTTOM, -1);
+	preview->set_margin(MARGIN_RIGHT, -1);
+	assign->add_child(preview);
+
 	menu = memnew(PopupMenu);
 	add_child(menu);
 	edit = memnew(Button);

+ 1 - 0
editor/editor_properties.h

@@ -488,6 +488,7 @@ class EditorPropertyResource : public EditorProperty {
 	};
 
 	Button *assign;
+	TextureRect *preview;
 	Button *edit;
 	PopupMenu *menu;
 	EditorFileDialog *file;