Removed stupid right arrow to edit resource. Now simply click it..
This commit is contained in:
parent
5aa66d03d8
commit
01198cb896
@ -247,6 +247,10 @@ Ref<Theme> create_editor_theme() {
|
||||
theme->set_icon("arrow_collapsed", "Tree", theme->get_icon("TreeArrowRight", "EditorIcons"));
|
||||
theme->set_icon("select_arrow", "Tree", theme->get_icon("Dropdown", "EditorIcons"));
|
||||
theme->set_stylebox("bg_focus", "Tree", focus_sbt);
|
||||
theme->set_stylebox("custom_button", "Tree", style_button);
|
||||
theme->set_stylebox("custom_button_pressed", "Tree", style_button);
|
||||
theme->set_stylebox("custom_button_hover", "Tree", style_button);
|
||||
theme->set_color("custom_button_font_highlight", "Tree", HIGHLIGHT_COLOR_LIGHT);
|
||||
|
||||
Ref<StyleBox> style_tree_btn = make_flat_stylebox(light_color_1, 2, 4, 2, 4);
|
||||
theme->set_stylebox("button_pressed", "Tree", style_tree_btn);
|
||||
|
@ -2310,6 +2310,7 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String &p
|
||||
if (obj->get(p_name).get_type() == Variant::NIL || obj->get(p_name).operator RefPtr().is_null()) {
|
||||
p_item->set_text(1, "<null>");
|
||||
p_item->set_icon(1, Ref<Texture>());
|
||||
p_item->set_custom_as_button(1, false);
|
||||
|
||||
Dictionary d = p_item->get_metadata(0);
|
||||
int hint = d.has("hint") ? d["hint"].operator int() : -1;
|
||||
@ -2319,6 +2320,7 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String &p
|
||||
}
|
||||
|
||||
} else {
|
||||
p_item->set_custom_as_button(1, true);
|
||||
RES res = obj->get(p_name).operator RefPtr();
|
||||
if (res->is_class("Texture")) {
|
||||
int tw = EditorSettings::get_singleton()->get("docks/property_editor/texture_preview_width");
|
||||
@ -3540,17 +3542,21 @@ void PropertyEditor::update_tree() {
|
||||
|
||||
item->set_cell_mode(1, TreeItem::CELL_MODE_CUSTOM);
|
||||
item->set_editable(1, !read_only);
|
||||
item->add_button(1, get_icon("EditResource", "EditorIcons"));
|
||||
//item->add_button(1, get_icon("EditResource", "EditorIcons"));
|
||||
String type;
|
||||
if (p.hint == PROPERTY_HINT_RESOURCE_TYPE)
|
||||
type = p.hint_string;
|
||||
|
||||
if (obj->get(p.name).get_type() == Variant::NIL || obj->get(p.name).operator RefPtr().is_null()) {
|
||||
RES res = obj->get(p.name).operator RefPtr();
|
||||
|
||||
if (obj->get(p.name).get_type() == Variant::NIL || res.is_null()) {
|
||||
item->set_text(1, "<null>");
|
||||
item->set_icon(1, Ref<Texture>());
|
||||
item->set_custom_as_button(1, false);
|
||||
|
||||
} else {
|
||||
RES res = obj->get(p.name).operator RefPtr();
|
||||
} else if (res.is_valid()) {
|
||||
|
||||
item->set_custom_as_button(1, true);
|
||||
|
||||
if (res->is_class("Texture")) {
|
||||
int tw = EditorSettings::get_singleton()->get("docks/property_editor/texture_preview_width");
|
||||
@ -3853,6 +3859,16 @@ void PropertyEditor::_item_edited() {
|
||||
case Variant::NODE_PATH: {
|
||||
_edit_set(name, NodePath(item->get_text(1)), refresh_all);
|
||||
|
||||
} break;
|
||||
case Variant::OBJECT: {
|
||||
if (!item->is_custom_set_as_button(1))
|
||||
break;
|
||||
|
||||
RES res = obj->get(name);
|
||||
if (res.is_valid()) {
|
||||
emit_signal("resource_selected", res.get_ref_ptr(), name);
|
||||
}
|
||||
|
||||
} break;
|
||||
|
||||
case Variant::DICTIONARY: {
|
||||
|
@ -610,6 +610,18 @@ Color TreeItem::get_custom_bg_color(int p_column) const {
|
||||
return cells[p_column].bg_color;
|
||||
}
|
||||
|
||||
void TreeItem::set_custom_as_button(int p_column, bool p_button) {
|
||||
|
||||
ERR_FAIL_INDEX(p_column, cells.size());
|
||||
cells[p_column].custom_button = p_button;
|
||||
}
|
||||
|
||||
bool TreeItem::is_custom_set_as_button(int p_column) const {
|
||||
|
||||
ERR_FAIL_INDEX_V(p_column, cells.size(), false);
|
||||
return cells[p_column].custom_button;
|
||||
}
|
||||
|
||||
void TreeItem::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_cell_mode", "column", "mode"), &TreeItem::set_cell_mode);
|
||||
@ -670,6 +682,9 @@ void TreeItem::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("clear_custom_bg_color", "column"), &TreeItem::clear_custom_bg_color);
|
||||
ClassDB::bind_method(D_METHOD("get_custom_bg_color", "column"), &TreeItem::get_custom_bg_color);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_custom_as_button", "column", "enable"), &TreeItem::set_custom_as_button);
|
||||
ClassDB::bind_method(D_METHOD("is_custom_set_as_button", "column"), &TreeItem::is_custom_set_as_button);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("add_button", "column", "button:Texture", "button_idx", "disabled", "tooltip"), &TreeItem::add_button, DEFVAL(-1), DEFVAL(false), DEFVAL(""));
|
||||
ClassDB::bind_method(D_METHOD("get_button_count", "column"), &TreeItem::get_button_count);
|
||||
ClassDB::bind_method(D_METHOD("get_button:Texture", "column", "button_idx"), &TreeItem::get_button);
|
||||
@ -732,6 +747,10 @@ TreeItem::~TreeItem() {
|
||||
tree->pressing_for_editor = false;
|
||||
}
|
||||
|
||||
if (tree && tree->cache.hover_item == this) {
|
||||
tree->cache.hover_item = NULL;
|
||||
}
|
||||
|
||||
if (tree && tree->selected_item == this)
|
||||
tree->selected_item = NULL;
|
||||
|
||||
@ -772,6 +791,11 @@ void Tree::update_cache() {
|
||||
cache.select_arrow = get_icon("select_arrow");
|
||||
cache.updown = get_icon("updown");
|
||||
|
||||
cache.custom_button = get_stylebox("custom_button");
|
||||
cache.custom_button_hover = get_stylebox("custom_button_hover");
|
||||
cache.custom_button_pressed = get_stylebox("custom_button_pressed");
|
||||
cache.custom_button_font_highlight = get_color("custom_button_font_highlight");
|
||||
|
||||
cache.font_color = get_color("font_color");
|
||||
cache.font_color_selected = get_color("font_color_selected");
|
||||
cache.guide_color = get_color("guide_color");
|
||||
@ -833,6 +857,9 @@ int Tree::compute_item_height(TreeItem *p_item) const {
|
||||
if (s.height > height)
|
||||
height = s.height;
|
||||
}
|
||||
if (p_item->cells[i].mode == TreeItem::CELL_MODE_CUSTOM && p_item->cells[i].custom_button) {
|
||||
height += cache.custom_button->get_minimum_size().height;
|
||||
}
|
||||
|
||||
} break;
|
||||
default: {}
|
||||
@ -1202,12 +1229,28 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
||||
Ref<Texture> downarrow = cache.select_arrow;
|
||||
|
||||
Rect2i ir = item_rect;
|
||||
ir.size.width -= downarrow->get_width();
|
||||
draw_item_rect(p_item->cells[i], ir, col);
|
||||
|
||||
Point2i arrow_pos = item_rect.pos;
|
||||
arrow_pos.x += item_rect.size.x - downarrow->get_width();
|
||||
arrow_pos.y += Math::floor(((item_rect.size.y - downarrow->get_height())) / 2.0);
|
||||
ir.size.width -= downarrow->get_width();
|
||||
|
||||
if (p_item->cells[i].custom_button) {
|
||||
if (cache.hover_item == p_item && cache.hover_cell == i) {
|
||||
if (Input::get_singleton()->is_mouse_button_pressed(BUTTON_LEFT)) {
|
||||
draw_style_box(cache.custom_button_pressed, ir);
|
||||
} else {
|
||||
draw_style_box(cache.custom_button_hover, ir);
|
||||
col = cache.custom_button_font_highlight;
|
||||
}
|
||||
} else {
|
||||
draw_style_box(cache.custom_button, ir);
|
||||
}
|
||||
ir.size -= cache.custom_button->get_minimum_size();
|
||||
ir.pos += cache.custom_button->get_offset();
|
||||
}
|
||||
|
||||
draw_item_rect(p_item->cells[i], ir, col);
|
||||
|
||||
downarrow->draw(ci, arrow_pos);
|
||||
|
||||
@ -1697,11 +1740,18 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool
|
||||
case TreeItem::CELL_MODE_CUSTOM: {
|
||||
edited_item = p_item;
|
||||
edited_col = col;
|
||||
custom_popup_rect = Rect2i(get_global_position() + Point2i(col_ofs, _get_title_button_height() + y_ofs + item_h - cache.offset.y), Size2(get_column_width(col), item_h));
|
||||
emit_signal("custom_popup_edited", ((bool)(x >= (col_width - item_h / 2))));
|
||||
bool on_arrow = x > col_width - cache.select_arrow->get_width();
|
||||
|
||||
bring_up_editor = false;
|
||||
item_edited(col, p_item);
|
||||
|
||||
if (on_arrow || !p_item->cells[col].custom_button) {
|
||||
custom_popup_rect = Rect2i(get_global_position() + Point2i(col_ofs, _get_title_button_height() + y_ofs + item_h - cache.offset.y), Size2(get_column_width(col), item_h));
|
||||
emit_signal("custom_popup_edited", ((bool)(x >= (col_width - item_h / 2))));
|
||||
}
|
||||
|
||||
if (!p_item->cells[col].custom_button || !on_arrow) {
|
||||
item_edited(col, p_item);
|
||||
}
|
||||
click_handled = true;
|
||||
return -1;
|
||||
} break;
|
||||
@ -2148,7 +2198,7 @@ void Tree::_gui_input(Ref<InputEvent> p_event) {
|
||||
}
|
||||
}
|
||||
|
||||
if (drop_mode_flags && root) {
|
||||
if (root) {
|
||||
|
||||
Point2 mpos = mm->get_position();
|
||||
mpos -= cache.bg->get_offset();
|
||||
@ -2163,11 +2213,17 @@ void Tree::_gui_input(Ref<InputEvent> p_event) {
|
||||
int col, h, section;
|
||||
TreeItem *it = _find_item_at_pos(root, mpos, col, h, section);
|
||||
|
||||
if (it != drop_mode_over || section != drop_mode_section) {
|
||||
if (drop_mode_flags && it != drop_mode_over || section != drop_mode_section) {
|
||||
drop_mode_over = it;
|
||||
drop_mode_section = section;
|
||||
update();
|
||||
}
|
||||
|
||||
if (it != cache.hover_item || col != cache.hover_cell) {
|
||||
cache.hover_item = it;
|
||||
cache.hover_cell = col;
|
||||
update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3469,6 +3525,7 @@ void Tree::_bind_methods() {
|
||||
ADD_SIGNAL(MethodInfo("item_rmb_selected", PropertyInfo(Variant::VECTOR2, "pos")));
|
||||
ADD_SIGNAL(MethodInfo("empty_tree_rmb_selected", PropertyInfo(Variant::VECTOR2, "pos")));
|
||||
ADD_SIGNAL(MethodInfo("item_edited"));
|
||||
ADD_SIGNAL(MethodInfo("item_custom_button_pressed"));
|
||||
ADD_SIGNAL(MethodInfo("item_double_clicked"));
|
||||
ADD_SIGNAL(MethodInfo("item_collapsed", PropertyInfo(Variant::OBJECT, "item")));
|
||||
//ADD_SIGNAL( MethodInfo("item_doubleclicked" ) );
|
||||
@ -3575,6 +3632,9 @@ Tree::Tree() {
|
||||
force_edit_checkbox_only_on_checkbox = false;
|
||||
|
||||
set_clip_contents(true);
|
||||
|
||||
cache.hover_item = NULL;
|
||||
cache.hover_cell = -1;
|
||||
}
|
||||
|
||||
Tree::~Tree() {
|
||||
|
@ -81,6 +81,7 @@ private:
|
||||
bool custom_bg_color;
|
||||
bool custom_bg_outline;
|
||||
Color bg_color;
|
||||
bool custom_button;
|
||||
|
||||
Variant meta;
|
||||
String tooltip;
|
||||
@ -107,6 +108,7 @@ private:
|
||||
Cell() {
|
||||
|
||||
custom_draw_obj = 0;
|
||||
custom_button = false;
|
||||
mode = TreeItem::CELL_MODE_STRING;
|
||||
min = 0;
|
||||
max = 100;
|
||||
@ -238,6 +240,9 @@ public:
|
||||
void clear_custom_bg_color(int p_column);
|
||||
Color get_custom_bg_color(int p_column) const;
|
||||
|
||||
void set_custom_as_button(int p_column, bool p_button);
|
||||
bool is_custom_set_as_button(int p_column) const;
|
||||
|
||||
void set_tooltip(int p_column, const String &p_tooltip);
|
||||
String get_tooltip(int p_column) const;
|
||||
|
||||
@ -369,6 +374,10 @@ private:
|
||||
Ref<StyleBox> title_button;
|
||||
Ref<StyleBox> title_button_hover;
|
||||
Ref<StyleBox> title_button_pressed;
|
||||
Ref<StyleBox> custom_button;
|
||||
Ref<StyleBox> custom_button_hover;
|
||||
Ref<StyleBox> custom_button_pressed;
|
||||
|
||||
Color title_button_color;
|
||||
|
||||
Ref<Texture> checked;
|
||||
@ -383,6 +392,7 @@ private:
|
||||
Color guide_color;
|
||||
Color drop_position_color;
|
||||
Color relationship_line_color;
|
||||
Color custom_button_font_highlight;
|
||||
|
||||
int hseparation;
|
||||
int vseparation;
|
||||
@ -410,6 +420,9 @@ private:
|
||||
int hover_index;
|
||||
Point2 click_pos;
|
||||
|
||||
TreeItem *hover_item;
|
||||
int hover_cell;
|
||||
|
||||
} cache;
|
||||
|
||||
int _get_title_button_height() const;
|
||||
|
@ -626,6 +626,9 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
|
||||
t->set_stylebox("title_button_normal", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4));
|
||||
t->set_stylebox("title_button_pressed", "Tree", make_stylebox(tree_title_pressed_png, 4, 4, 4, 4));
|
||||
t->set_stylebox("title_button_hover", "Tree", make_stylebox(tree_title_png, 4, 4, 4, 4));
|
||||
t->set_stylebox("custom_button", "Tree", sb_button_normal);
|
||||
t->set_stylebox("custom_button_pressed", "Tree", sb_button_pressed);
|
||||
t->set_stylebox("custom_button_hover", "Tree", sb_button_hover);
|
||||
|
||||
t->set_icon("checked", "Tree", make_icon(checked_png));
|
||||
t->set_icon("unchecked", "Tree", make_icon(unchecked_png));
|
||||
@ -645,6 +648,7 @@ void fill_default_theme(Ref<Theme> &t, const Ref<Font> &default_font, const Ref<
|
||||
t->set_color("guide_color", "Tree", Color(0, 0, 0, 0.1));
|
||||
t->set_color("drop_position_color", "Tree", Color(1, 0.3, 0.2));
|
||||
t->set_color("relationship_line_color", "Tree", Color::html("464646"));
|
||||
t->set_color("custom_button_font_highlight", "Tree", control_font_color_hover);
|
||||
|
||||
t->set_constant("hseparation", "Tree", 4 * scale);
|
||||
t->set_constant("vseparation", "Tree", 4 * scale);
|
||||
|
Loading…
Reference in New Issue
Block a user