aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde2017-05-02 11:28:28 +0200
committerGitHub2017-05-02 11:28:28 +0200
commite93608916197e277d9d8a6783d01e13db055b463 (patch)
treec5934b800d38349a55bbc3f34cfeffdbd0fecbd7
parentdd5fd4fdacf0504ff26c773f29ae7a5aa419d88b (diff)
parente592860145ff511d4249c46d98fc4845d943bad8 (diff)
downloadgodot-e93608916197e277d9d8a6783d01e13db055b463.tar.gz
godot-e93608916197e277d9d8a6783d01e13db055b463.tar.zst
godot-e93608916197e277d9d8a6783d01e13db055b463.zip
Merge pull request #8561 from volzhs/modulate-transparency-2.1
Show transparency and accurate color for property
-rw-r--r--editor/icons/2x/icon_transparent.pngbin0 -> 177 bytes
-rw-r--r--editor/icons/icon_transparent.pngbin0 -> 158 bytes
-rw-r--r--editor/property_editor.cpp23
-rw-r--r--editor/property_editor.h1
4 files changed, 22 insertions, 2 deletions
diff --git a/editor/icons/2x/icon_transparent.png b/editor/icons/2x/icon_transparent.png
new file mode 100644
index 000000000..627607039
--- /dev/null
+++ b/editor/icons/2x/icon_transparent.png
Binary files differ
diff --git a/editor/icons/icon_transparent.png b/editor/icons/icon_transparent.png
new file mode 100644
index 000000000..07e9b52b5
--- /dev/null
+++ b/editor/icons/icon_transparent.png
Binary files differ
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index e6a17b7be..0da22aa29 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -2028,7 +2028,7 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String &p
} break;
case Variant::COLOR: {
- p_item->set_custom_bg_color(1, obj->get(p_name));
+ tree->update();
//p_item->set_text(1,obj->get(p_name));
} break;
@@ -3165,7 +3165,7 @@ void PropertyEditor::update_tree() {
item->set_cell_mode(1, TreeItem::CELL_MODE_CUSTOM);
item->set_editable(1, !read_only);
// item->set_text(1,obj->get(p.name));
- item->set_custom_bg_color(1, obj->get(p.name));
+ item->set_custom_draw(1, this, "_draw_transparency");
if (show_type_icons)
item->set_icon(0, get_icon("Color", "EditorIcons"));
@@ -3306,6 +3306,24 @@ void PropertyEditor::update_tree() {
}
}
+void PropertyEditor::_draw_transparency(Object *t, const Rect2 &p_rect) {
+
+ TreeItem *ti = t->cast_to<TreeItem>();
+ if (!ti)
+ return;
+
+ Color color = obj->get(ti->get_metadata(1));
+ Ref<Texture> arrow = tree->get_icon("select_arrow");
+
+ // make a little space between consecutive color fields
+ Rect2 area = p_rect;
+ area.pos.y += 1;
+ area.size.height -= 2;
+ area.size.width -= arrow->get_size().width + 5;
+ tree->draw_texture_rect(get_icon("Transparent", "EditorIcons"), area, true);
+ tree->draw_rect(area, color);
+}
+
void PropertyEditor::_item_selected() {
TreeItem *item = tree->get_selected();
@@ -3787,6 +3805,7 @@ void PropertyEditor::_bind_methods() {
ObjectTypeDB::bind_method("update_tree", &PropertyEditor::update_tree);
ObjectTypeDB::bind_method("_resource_preview_done", &PropertyEditor::_resource_preview_done);
ObjectTypeDB::bind_method("refresh", &PropertyEditor::refresh);
+ ObjectTypeDB::bind_method("_draw_transparency", &PropertyEditor::_draw_transparency);
ObjectTypeDB::bind_method(_MD("get_drag_data_fw"), &PropertyEditor::get_drag_data_fw);
ObjectTypeDB::bind_method(_MD("can_drop_data_fw"), &PropertyEditor::can_drop_data_fw);
diff --git a/editor/property_editor.h b/editor/property_editor.h
index 1acd1fe85..f6bca384a 100644
--- a/editor/property_editor.h
+++ b/editor/property_editor.h
@@ -234,6 +234,7 @@ class PropertyEditor : public Control {
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
void _resource_preview_done(const String &p_path, const Ref<Texture> &p_preview, Variant p_ud);
+ void _draw_transparency(Object *t, const Rect2 &p_rect);
UndoRedo *undo_redo;