From 92363a2afee8b31a4ba4e1fd059dffabfeec0e95 Mon Sep 17 00:00:00 2001 From: volzhs Date: Mon, 16 Jan 2017 01:46:42 +0900 Subject: [PATCH] Show transparency and accurate color for modulate --- tools/editor/icons/2x/icon_transparent.png | Bin 0 -> 177 bytes tools/editor/icons/icon_transparent.png | Bin 0 -> 158 bytes tools/editor/property_editor.cpp | 24 +++++++++++++++++++-- tools/editor/property_editor.h | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 tools/editor/icons/2x/icon_transparent.png create mode 100644 tools/editor/icons/icon_transparent.png diff --git a/tools/editor/icons/2x/icon_transparent.png b/tools/editor/icons/2x/icon_transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..627607039b6553e575330fcf7c55599f627d2f4f GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*AKY zB%;Kzv?L?Hh=HNvmiFoMD^F>#F>r=4Ezh4>vmB_x(bL5-B;xSfiw8Lw3^`mKC%e7b zuf0~~rkssVW94^!=5?#A3^k0^Ki~KWG#m_G*ZA_4Y!`=c_VDhwZNYUbIlH$TB;e`l K=d#Wzp$PyxjWiVi literal 0 HcmV?d00001 diff --git a/tools/editor/icons/icon_transparent.png b/tools/editor/icons/icon_transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..07e9b52b5c3a058c3fa449bbe3943a4a0329ced9 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GGLLkg|>2BR0prBY) zNJNQaX-P(Y5d%ZTE$!3iSDw;fW8e&9TAn|%W;sxWo~Mgrh{fsTnhy^S*0b3-#Kp=4alOKUset_custom_bg_color(1,obj->get(p_name)); + tree->update(); //p_item->set_text(1,obj->get(p_name)); } break; @@ -3707,7 +3707,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") ); @@ -3855,6 +3855,25 @@ void PropertyEditor::update_tree() { } } +void PropertyEditor::_draw_transparency(Object *t, const Rect2& p_rect) { + + TreeItem *ti=t->cast_to(); + if (!ti) + return; + + Color color=obj->get(ti->get_metadata(1)); + Ref 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() { @@ -4365,6 +4384,7 @@ void PropertyEditor::_bind_methods() { ClassDB::bind_method( "update_tree",&PropertyEditor::update_tree); ClassDB::bind_method( "_resource_preview_done",&PropertyEditor::_resource_preview_done); ClassDB::bind_method( "refresh",&PropertyEditor::refresh); + ClassDB::bind_method( "_draw_transparency",&PropertyEditor::_draw_transparency); ClassDB::bind_method(_MD("get_drag_data_fw"), &PropertyEditor::get_drag_data_fw); ClassDB::bind_method(_MD("can_drop_data_fw"), &PropertyEditor::can_drop_data_fw); diff --git a/tools/editor/property_editor.h b/tools/editor/property_editor.h index 900d06497f7..3f8d071a013 100644 --- a/tools/editor/property_editor.h +++ b/tools/editor/property_editor.h @@ -245,6 +245,7 @@ friend class ProjectExportDialog; 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& p_preview,Variant p_ud); + void _draw_transparency(Object *t, const Rect2& p_rect); UndoRedo *undo_redo; protected: