diff options
Diffstat (limited to 'scene/gui/tree.cpp')
-rw-r--r-- | scene/gui/tree.cpp | 297 |
1 files changed, 161 insertions, 136 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 9f5b9f710d..292efdcc01 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -30,7 +30,7 @@ #include "print_string.h" #include "os/os.h" #include "os/keyboard.h" -#include "globals.h" +#include "global_config.h" #include "os/input.h" #include "scene/main/viewport.h" @@ -611,7 +611,7 @@ void TreeItem::clear_custom_color(int p_column) { ERR_FAIL_INDEX( p_column, cells.size() ); cells[p_column].custom_color=false; - cells[p_column].color=Color();; + cells[p_column].color=Color(); _changed_notify(p_column); } @@ -642,7 +642,7 @@ void TreeItem::clear_custom_bg_color(int p_column) { ERR_FAIL_INDEX( p_column, cells.size() ); cells[p_column].custom_bg_color=false; - cells[p_column].bg_color=Color();; + cells[p_column].bg_color=Color(); _changed_notify(p_column); } @@ -657,76 +657,76 @@ Color TreeItem::get_custom_bg_color(int p_column) const { void TreeItem::_bind_methods() { - ClassDB::bind_method(_MD("set_cell_mode","column","mode"),&TreeItem::set_cell_mode); - ClassDB::bind_method(_MD("get_cell_mode","column"),&TreeItem::get_cell_mode); + ClassDB::bind_method(D_METHOD("set_cell_mode","column","mode"),&TreeItem::set_cell_mode); + ClassDB::bind_method(D_METHOD("get_cell_mode","column"),&TreeItem::get_cell_mode); - ClassDB::bind_method(_MD("set_checked","column","checked"),&TreeItem::set_checked); - ClassDB::bind_method(_MD("is_checked","column"),&TreeItem::is_checked); + ClassDB::bind_method(D_METHOD("set_checked","column","checked"),&TreeItem::set_checked); + ClassDB::bind_method(D_METHOD("is_checked","column"),&TreeItem::is_checked); - ClassDB::bind_method(_MD("set_text","column","text"),&TreeItem::set_text); - ClassDB::bind_method(_MD("get_text","column"),&TreeItem::get_text); + ClassDB::bind_method(D_METHOD("set_text","column","text"),&TreeItem::set_text); + ClassDB::bind_method(D_METHOD("get_text","column"),&TreeItem::get_text); - ClassDB::bind_method(_MD("set_icon","column","texture:Texture"),&TreeItem::set_icon); - ClassDB::bind_method(_MD("get_icon:Texture","column"),&TreeItem::get_icon); + ClassDB::bind_method(D_METHOD("set_icon","column","texture:Texture"),&TreeItem::set_icon); + ClassDB::bind_method(D_METHOD("get_icon:Texture","column"),&TreeItem::get_icon); - ClassDB::bind_method(_MD("set_icon_region","column","region"),&TreeItem::set_icon_region); - ClassDB::bind_method(_MD("get_icon_region","column"),&TreeItem::get_icon_region); + ClassDB::bind_method(D_METHOD("set_icon_region","column","region"),&TreeItem::set_icon_region); + ClassDB::bind_method(D_METHOD("get_icon_region","column"),&TreeItem::get_icon_region); - ClassDB::bind_method(_MD("set_icon_max_width","column","width"),&TreeItem::set_icon_max_width); - ClassDB::bind_method(_MD("get_icon_max_width","column"),&TreeItem::get_icon_max_width); + ClassDB::bind_method(D_METHOD("set_icon_max_width","column","width"),&TreeItem::set_icon_max_width); + ClassDB::bind_method(D_METHOD("get_icon_max_width","column"),&TreeItem::get_icon_max_width); - ClassDB::bind_method(_MD("set_range","column","value"),&TreeItem::set_range); - ClassDB::bind_method(_MD("get_range","column"),&TreeItem::get_range); - ClassDB::bind_method(_MD("set_range_config","column","min","max","step","expr"),&TreeItem::set_range_config,DEFVAL(false)); - ClassDB::bind_method(_MD("get_range_config","column"),&TreeItem::_get_range_config); + ClassDB::bind_method(D_METHOD("set_range","column","value"),&TreeItem::set_range); + ClassDB::bind_method(D_METHOD("get_range","column"),&TreeItem::get_range); + ClassDB::bind_method(D_METHOD("set_range_config","column","min","max","step","expr"),&TreeItem::set_range_config,DEFVAL(false)); + ClassDB::bind_method(D_METHOD("get_range_config","column"),&TreeItem::_get_range_config); - ClassDB::bind_method(_MD("set_metadata","column","meta"),&TreeItem::set_metadata); - ClassDB::bind_method(_MD("get_metadata","column"),&TreeItem::get_metadata); + ClassDB::bind_method(D_METHOD("set_metadata","column","meta"),&TreeItem::set_metadata); + ClassDB::bind_method(D_METHOD("get_metadata","column"),&TreeItem::get_metadata); - ClassDB::bind_method(_MD("set_custom_draw","column","object","callback"),&TreeItem::set_custom_draw); + ClassDB::bind_method(D_METHOD("set_custom_draw","column","object","callback"),&TreeItem::set_custom_draw); - ClassDB::bind_method(_MD("set_collapsed","enable"),&TreeItem::set_collapsed); - ClassDB::bind_method(_MD("is_collapsed"),&TreeItem::is_collapsed); + ClassDB::bind_method(D_METHOD("set_collapsed","enable"),&TreeItem::set_collapsed); + ClassDB::bind_method(D_METHOD("is_collapsed"),&TreeItem::is_collapsed); - ClassDB::bind_method(_MD("get_next:TreeItem"),&TreeItem::get_next); - ClassDB::bind_method(_MD("get_prev:TreeItem"),&TreeItem::get_prev); - ClassDB::bind_method(_MD("get_parent:TreeItem"),&TreeItem::get_parent); - ClassDB::bind_method(_MD("get_children:TreeItem"),&TreeItem::get_children); + ClassDB::bind_method(D_METHOD("get_next:TreeItem"),&TreeItem::get_next); + ClassDB::bind_method(D_METHOD("get_prev:TreeItem"),&TreeItem::get_prev); + ClassDB::bind_method(D_METHOD("get_parent:TreeItem"),&TreeItem::get_parent); + ClassDB::bind_method(D_METHOD("get_children:TreeItem"),&TreeItem::get_children); - ClassDB::bind_method(_MD("get_next_visible:TreeItem"),&TreeItem::get_next_visible); - ClassDB::bind_method(_MD("get_prev_visible:TreeItem"),&TreeItem::get_prev_visible); + ClassDB::bind_method(D_METHOD("get_next_visible:TreeItem"),&TreeItem::get_next_visible); + ClassDB::bind_method(D_METHOD("get_prev_visible:TreeItem"),&TreeItem::get_prev_visible); - ClassDB::bind_method(_MD("remove_child:TreeItem","child"),&TreeItem::_remove_child); + ClassDB::bind_method(D_METHOD("remove_child:TreeItem","child"),&TreeItem::_remove_child); - ClassDB::bind_method(_MD("set_selectable","column","selectable"),&TreeItem::set_selectable); - ClassDB::bind_method(_MD("is_selectable","column"),&TreeItem::is_selectable); + ClassDB::bind_method(D_METHOD("set_selectable","column","selectable"),&TreeItem::set_selectable); + ClassDB::bind_method(D_METHOD("is_selectable","column"),&TreeItem::is_selectable); - ClassDB::bind_method(_MD("is_selected","column"),&TreeItem::is_selected); - ClassDB::bind_method(_MD("select","column"),&TreeItem::select); - ClassDB::bind_method(_MD("deselect","column"),&TreeItem::deselect); + ClassDB::bind_method(D_METHOD("is_selected","column"),&TreeItem::is_selected); + ClassDB::bind_method(D_METHOD("select","column"),&TreeItem::select); + ClassDB::bind_method(D_METHOD("deselect","column"),&TreeItem::deselect); - ClassDB::bind_method(_MD("set_editable","column","enabled"),&TreeItem::set_editable); - ClassDB::bind_method(_MD("is_editable","column"),&TreeItem::is_editable); + ClassDB::bind_method(D_METHOD("set_editable","column","enabled"),&TreeItem::set_editable); + ClassDB::bind_method(D_METHOD("is_editable","column"),&TreeItem::is_editable); - ClassDB::bind_method(_MD("set_custom_color","column","color"),&TreeItem::set_custom_color); - ClassDB::bind_method(_MD("clear_custom_color","column"),&TreeItem::clear_custom_color); + ClassDB::bind_method(D_METHOD("set_custom_color","column","color"),&TreeItem::set_custom_color); + ClassDB::bind_method(D_METHOD("clear_custom_color","column"),&TreeItem::clear_custom_color); - ClassDB::bind_method(_MD("set_custom_bg_color","column","color","just_outline"),&TreeItem::set_custom_bg_color,DEFVAL(false)); - ClassDB::bind_method(_MD("clear_custom_bg_color","column"),&TreeItem::clear_custom_bg_color); - ClassDB::bind_method(_MD("get_custom_bg_color","column"),&TreeItem::get_custom_bg_color); + ClassDB::bind_method(D_METHOD("set_custom_bg_color","column","color","just_outline"),&TreeItem::set_custom_bg_color,DEFVAL(false)); + 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(_MD("add_button","column","button:Texture","button_idx","disabled"),&TreeItem::add_button,DEFVAL(-1),DEFVAL(false)); - ClassDB::bind_method(_MD("get_button_count","column"),&TreeItem::get_button_count); - ClassDB::bind_method(_MD("get_button:Texture","column","button_idx"),&TreeItem::get_button); - ClassDB::bind_method(_MD("set_button","column","button_idx","button:Texture"),&TreeItem::set_button); - ClassDB::bind_method(_MD("erase_button","column","button_idx"),&TreeItem::erase_button); - ClassDB::bind_method(_MD("is_button_disabled","column","button_idx"),&TreeItem::is_button_disabled); + ClassDB::bind_method(D_METHOD("add_button","column","button:Texture","button_idx","disabled"),&TreeItem::add_button,DEFVAL(-1),DEFVAL(false)); + 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); + ClassDB::bind_method(D_METHOD("set_button","column","button_idx","button:Texture"),&TreeItem::set_button); + ClassDB::bind_method(D_METHOD("erase_button","column","button_idx"),&TreeItem::erase_button); + ClassDB::bind_method(D_METHOD("is_button_disabled","column","button_idx"),&TreeItem::is_button_disabled); - ClassDB::bind_method(_MD("set_tooltip","column","tooltip"),&TreeItem::set_tooltip); - ClassDB::bind_method(_MD("get_tooltip","column"),&TreeItem::get_tooltip); + ClassDB::bind_method(D_METHOD("set_tooltip","column","tooltip"),&TreeItem::set_tooltip); + ClassDB::bind_method(D_METHOD("get_tooltip","column"),&TreeItem::get_tooltip); - ClassDB::bind_method(_MD("move_to_top"),&TreeItem::move_to_top); - ClassDB::bind_method(_MD("move_to_bottom"),&TreeItem::move_to_bottom); + ClassDB::bind_method(D_METHOD("move_to_top"),&TreeItem::move_to_top); + ClassDB::bind_method(D_METHOD("move_to_bottom"),&TreeItem::move_to_bottom); BIND_CONSTANT( CELL_MODE_STRING ); BIND_CONSTANT( CELL_MODE_CHECK ); @@ -943,14 +943,16 @@ void Tree::draw_item_rect(const TreeItem::Cell& p_cell,const Rect2i& p_rect,cons bmsize.width=p_cell.icon_max_w; } - p_cell.draw_icon(ci,rect.pos + Size2i(0,Math::floor((rect.size.y-bmsize.y)/2)),bmsize); + p_cell.draw_icon(ci,rect.pos + Size2i(0,Math::floor((real_t)(rect.size.y-bmsize.y)/2)),bmsize); rect.pos.x+=bmsize.x+cache.hseparation; rect.size.x-=bmsize.x+cache.hseparation; } -// if (p_tool) -// rect.size.x-=Math::floor(rect.size.y/2); + /* + if (p_tool) + rect.size.x-=Math::floor(rect.size.y/2); + */ Ref<Font> font = cache.font; @@ -1006,7 +1008,7 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& /* Draw label, if height fits */ - bool skip=(p_item==root && hide_root); + bool skip=(p_item==root && hide_root); if (!skip && (p_pos.y+label_h-cache.offset.y)>0) { @@ -1029,7 +1031,7 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& } //draw separation. -// if (p_item->get_parent()!=root || !hide_root) + //if (p_item->get_parent()!=root || !hide_root) Ref<Font> font = cache.font; @@ -1115,7 +1117,7 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& } else { cache.selected->draw(ci,r ); } - if (text_editor->is_visible()){ + if (text_editor->is_visible_in_tree()){ text_editor->set_pos(get_global_pos() + r.pos); } } @@ -1171,7 +1173,7 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& Ref<Texture> checked = cache.checked; Ref<Texture> unchecked = cache.unchecked; Point2i check_ofs=item_rect.pos; - check_ofs.y+=Math::floor((item_rect.size.y-checked->get_height())/2); + check_ofs.y+=Math::floor((real_t)(item_rect.size.y-checked->get_height())/2); if (p_item->cells[i].checked) { @@ -1256,13 +1258,13 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& icon_ofs+=item_rect.pos; - draw_texture_rect(p_item->cells[i].icon,Rect2(icon_ofs,icon_size));; + draw_texture_rect(p_item->cells[i].icon,Rect2(icon_ofs,icon_size)); //p_item->cells[i].icon->draw(ci, icon_ofs); } break; case TreeItem::CELL_MODE_CUSTOM: { - // int option = (int)p_item->cells[i].val; + //int option = (int)p_item->cells[i].val; @@ -1414,8 +1416,10 @@ void Tree::select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_c emit_signal("item_selected"); emitted_row=true; } - //if (p_col==i) - // p_current->selected_signal.call(p_col); + /* + if (p_col==i) + p_current->selected_signal.call(p_col); + */ } else if (c.selected) { @@ -1606,6 +1610,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos,int x_ofs,int y_ofs,bool p_ cache.click_id=c.buttons[j].id; cache.click_item=p_item; cache.click_column=col; + cache.click_pos=get_global_mouse_pos()-get_global_pos(); update(); //emit_signal("button_pressed"); return -1; @@ -1672,9 +1677,11 @@ int Tree::propagate_mouse_event(const Point2i &p_pos,int x_ofs,int y_ofs,bool p_ } } - //if (!c.selected && select_mode==SELECT_MULTI) { - // emit_signal("multi_selected",p_item,col,true); - //} + /* + if (!c.selected && select_mode==SELECT_MULTI) { + emit_signal("multi_selected",p_item,col,true); + } + */ update(); } @@ -1705,8 +1712,15 @@ int Tree::propagate_mouse_event(const Point2i &p_pos,int x_ofs,int y_ofs,bool p_ case TreeItem::CELL_MODE_CHECK: { bring_up_editor=false; //checkboxes are not edited with editor - p_item->set_checked(col, !c.checked); - item_edited(col, p_item); + if (force_edit_checkbox_only_on_checkbox) { + if (x < cache.checked->get_width()) { + p_item->set_checked(col, !c.checked); + item_edited(col, p_item); + } + } else { + p_item->set_checked(col, !c.checked); + item_edited(col, p_item); + } click_handled = true; //p_item->edited_signal.call(col); @@ -1997,7 +2011,7 @@ void Tree::_gui_input(InputEvent p_event) { } break; case KEY_LEFT: { -// TreeItem *next = NULL; + //TreeItem *next = NULL; if (!selected_item) break; if (select_mode==SELECT_ROW) @@ -2027,7 +2041,7 @@ void Tree::_gui_input(InputEvent p_event) { next=selected_item->get_next_visible(); -// if (diff < uint64_t(GLOBAL_DEF("gui/incr_search_max_interval_msec",2000))) { + //if (diff < uint64_t(GLOBAL_DEF("gui/incr_search_max_interval_msec",2000))) { if (last_keypress!=0) { //incr search next int col; @@ -2277,9 +2291,9 @@ void Tree::_gui_input(InputEvent p_event) { mpos.y-=_get_title_button_height(); if (mpos.y>=0) { - if (h_scroll->is_visible()) + if (h_scroll->is_visible_in_tree()) mpos.x+=h_scroll->get_value(); - if (v_scroll->is_visible()) + if (v_scroll->is_visible_in_tree()) mpos.y+=v_scroll->get_value(); int col,h,section; @@ -2315,7 +2329,7 @@ void Tree::_gui_input(InputEvent p_event) { TreeItem::Cell &c=popup_edited_item->cells[popup_edited_item_col]; float diff_y = -b.relative_y; - diff_y=Math::pow(ABS(diff_y),1.8)*SGN(diff_y); + diff_y=Math::pow(ABS(diff_y),1.8f)*SGN(diff_y); diff_y*=0.1; range_drag_base=CLAMP(range_drag_base + c.step * diff_y, c.min, c.max); popup_edited_item->set_range(popup_edited_item_col,range_drag_base); @@ -2377,6 +2391,8 @@ void Tree::_gui_input(InputEvent p_event) { if (cache.click_type==Cache::CLICK_BUTTON) { + // make sure in case of wrong reference after reconstructing whole TreeItems + cache.click_item=get_item_at_pos(cache.click_pos); emit_signal("button_pressed",cache.click_item,cache.click_column,cache.click_id); } @@ -2470,7 +2486,7 @@ void Tree::_gui_input(InputEvent p_event) { if (!click_handled) { drag_speed=0; drag_accum=0; -// last_drag_accum=0; + //last_drag_accum=0; drag_from=v_scroll->get_value(); drag_touching=OS::get_singleton()->has_touchscreen_ui_hint(); drag_touching_deaccel=false; @@ -2567,7 +2583,7 @@ bool Tree::edit_selected() { value_editor->set_max( c.max ); value_editor->set_step( c.step ); value_editor->set_value( c.val ); - value_editor->set_exp_unit_value( c.expr ); + value_editor->set_exp_ratio( c.expr ); updating_value_editor=false; } @@ -2669,7 +2685,7 @@ void Tree::_notification(int p_what) { if (p_what==NOTIFICATION_ENTER_TREE) { - update_cache();; + update_cache(); } if (p_what==NOTIFICATION_DRAG_END) { @@ -2787,13 +2803,10 @@ void Tree::_notification(int p_what) { } int ofs=0; -// int from_y=exposed.pos.y+bg->get_margin(MARGIN_TOP); -// int size_y=exposed.size.height-bg->get_minimum_size().height; for (int i=0;i<(columns.size()-1-1);i++) { ofs+=get_column_width(i); - //get_painter()->draw_fill_rect( Point2(ofs+cache.hseparation/2, from_y), Size2( 1, size_y ),color( COLOR_TREE_GRID) ); } if (show_column_titles) { @@ -2960,7 +2973,6 @@ void Tree::clear() { selected_item=NULL; edited_item=NULL; popup_edited_item=NULL; - selected_item=NULL; update(); }; @@ -3016,8 +3028,10 @@ int Tree::get_edited_column() const { TreeItem* Tree::get_next_selected( TreeItem* p_item) { - //if (!p_item) - // return NULL; + /* + if (!p_item) + return NULL; + */ if (!root) return NULL; @@ -3069,7 +3083,7 @@ int Tree::get_column_width(int p_column) const { int expand_area=get_size().width-(bg->get_margin(MARGIN_LEFT)+bg->get_margin(MARGIN_RIGHT)); - if (v_scroll->is_visible()) + if (v_scroll->is_visible_in_tree()) expand_area-=v_scroll->get_combined_minimum_size().width; int expanding_columns=0; @@ -3254,9 +3268,9 @@ String Tree::get_column_title(int p_column) const { Point2 Tree::get_scroll() const { Point2 ofs; - if (h_scroll->is_visible()) + if (h_scroll->is_visible_in_tree()) ofs.x=h_scroll->get_value(); - if (v_scroll->is_visible()) + if (v_scroll->is_visible_in_tree()) ofs.y=v_scroll->get_value(); return ofs; @@ -3325,7 +3339,7 @@ TreeItem* Tree::_find_item_at_pos(TreeItem*p_item, const Point2& p_pos,int& r_co if (root!=p_item || ! hide_root) { - h = compute_item_height(p_item)+cache.vseparation;; + h = compute_item_height(p_item)+cache.vseparation; if (pos.y<h) { if (drop_mode_flags==DROP_MODE_ON_ITEM) { @@ -3395,9 +3409,9 @@ int Tree::get_column_at_pos(const Point2& p_pos) const { if (pos.y<0) return -1; - if (h_scroll->is_visible()) + if (h_scroll->is_visible_in_tree()) pos.x+=h_scroll->get_value(); - if (v_scroll->is_visible()) + if (v_scroll->is_visible_in_tree()) pos.y+=v_scroll->get_value(); int col,h,section; @@ -3422,9 +3436,9 @@ int Tree::get_drop_section_at_pos(const Point2& p_pos) const { if (pos.y<0) return -100; - if (h_scroll->is_visible()) + if (h_scroll->is_visible_in_tree()) pos.x+=h_scroll->get_value(); - if (v_scroll->is_visible()) + if (v_scroll->is_visible_in_tree()) pos.y+=v_scroll->get_value(); int col,h,section; @@ -3449,9 +3463,9 @@ TreeItem* Tree::get_item_at_pos(const Point2& p_pos) const { if (pos.y<0) return NULL; - if (h_scroll->is_visible()) + if (h_scroll->is_visible_in_tree()) pos.x+=h_scroll->get_value(); - if (v_scroll->is_visible()) + if (v_scroll->is_visible_in_tree()) pos.y+=v_scroll->get_value(); int col,h,section; @@ -3477,9 +3491,9 @@ String Tree::get_tooltip(const Point2& p_pos) const { if (pos.y<0) return Control::get_tooltip(p_pos); - if (h_scroll->is_visible()) + if (h_scroll->is_visible_in_tree()) pos.x+=h_scroll->get_value(); - if (v_scroll->is_visible()) + if (v_scroll->is_visible_in_tree()) pos.y+=v_scroll->get_value(); int col,h,section; @@ -3550,6 +3564,16 @@ bool Tree::get_single_select_cell_editing_only_when_already_selected() const { return force_select_on_already_selected; } +void Tree::set_edit_checkbox_cell_only_when_checkbox_is_pressed(bool p_enable) { + + force_edit_checkbox_only_on_checkbox=p_enable; +} + +bool Tree::get_edit_checkbox_cell_only_when_checkbox_is_pressed() const { + + return force_edit_checkbox_only_on_checkbox; +} + void Tree::set_allow_rmb_select(bool p_allow) { @@ -3564,59 +3588,59 @@ bool Tree::get_allow_rmb_select() const{ void Tree::_bind_methods() { - ClassDB::bind_method(_MD("_range_click_timeout"),&Tree::_range_click_timeout); - ClassDB::bind_method(_MD("_gui_input"),&Tree::_gui_input); - ClassDB::bind_method(_MD("_popup_select"),&Tree::popup_select); - ClassDB::bind_method(_MD("_text_editor_enter"),&Tree::text_editor_enter); - ClassDB::bind_method(_MD("_text_editor_modal_close"),&Tree::_text_editor_modal_close); - ClassDB::bind_method(_MD("_value_editor_changed"),&Tree::value_editor_changed); - ClassDB::bind_method(_MD("_scroll_moved"),&Tree::_scroll_moved); + ClassDB::bind_method(D_METHOD("_range_click_timeout"),&Tree::_range_click_timeout); + ClassDB::bind_method(D_METHOD("_gui_input"),&Tree::_gui_input); + ClassDB::bind_method(D_METHOD("_popup_select"),&Tree::popup_select); + ClassDB::bind_method(D_METHOD("_text_editor_enter"),&Tree::text_editor_enter); + ClassDB::bind_method(D_METHOD("_text_editor_modal_close"),&Tree::_text_editor_modal_close); + ClassDB::bind_method(D_METHOD("_value_editor_changed"),&Tree::value_editor_changed); + ClassDB::bind_method(D_METHOD("_scroll_moved"),&Tree::_scroll_moved); - ClassDB::bind_method(_MD("clear"),&Tree::clear); - ClassDB::bind_method(_MD("create_item:TreeItem","parent:TreeItem"),&Tree::_create_item,DEFVAL(Variant())); + ClassDB::bind_method(D_METHOD("clear"),&Tree::clear); + ClassDB::bind_method(D_METHOD("create_item:TreeItem","parent:TreeItem"),&Tree::_create_item,DEFVAL(Variant())); - ClassDB::bind_method(_MD("get_root:TreeItem"),&Tree::get_root); - ClassDB::bind_method(_MD("set_column_min_width","column","min_width"),&Tree::set_column_min_width); - ClassDB::bind_method(_MD("set_column_expand","column","expand"),&Tree::set_column_expand); - ClassDB::bind_method(_MD("get_column_width","column"),&Tree::get_column_width); + ClassDB::bind_method(D_METHOD("get_root:TreeItem"),&Tree::get_root); + ClassDB::bind_method(D_METHOD("set_column_min_width","column","min_width"),&Tree::set_column_min_width); + ClassDB::bind_method(D_METHOD("set_column_expand","column","expand"),&Tree::set_column_expand); + ClassDB::bind_method(D_METHOD("get_column_width","column"),&Tree::get_column_width); - ClassDB::bind_method(_MD("set_hide_root","enable"),&Tree::set_hide_root); - ClassDB::bind_method(_MD("get_next_selected:TreeItem","from:TreeItem"),&Tree::_get_next_selected); - ClassDB::bind_method(_MD("get_selected:TreeItem"),&Tree::get_selected); - ClassDB::bind_method(_MD("get_selected_column"),&Tree::get_selected_column); - ClassDB::bind_method(_MD("get_pressed_button"),&Tree::get_pressed_button); - ClassDB::bind_method(_MD("set_select_mode","mode"),&Tree::set_select_mode); + ClassDB::bind_method(D_METHOD("set_hide_root","enable"),&Tree::set_hide_root); + ClassDB::bind_method(D_METHOD("get_next_selected:TreeItem","from:TreeItem"),&Tree::_get_next_selected); + ClassDB::bind_method(D_METHOD("get_selected:TreeItem"),&Tree::get_selected); + ClassDB::bind_method(D_METHOD("get_selected_column"),&Tree::get_selected_column); + ClassDB::bind_method(D_METHOD("get_pressed_button"),&Tree::get_pressed_button); + ClassDB::bind_method(D_METHOD("set_select_mode","mode"),&Tree::set_select_mode); - ClassDB::bind_method(_MD("set_columns","amount"),&Tree::set_columns); - ClassDB::bind_method(_MD("get_columns"),&Tree::get_columns); + ClassDB::bind_method(D_METHOD("set_columns","amount"),&Tree::set_columns); + ClassDB::bind_method(D_METHOD("get_columns"),&Tree::get_columns); - ClassDB::bind_method(_MD("get_edited:TreeItem"),&Tree::get_edited); - ClassDB::bind_method(_MD("get_edited_column"),&Tree::get_edited_column); - ClassDB::bind_method(_MD("get_custom_popup_rect"),&Tree::get_custom_popup_rect); - ClassDB::bind_method(_MD("get_item_area_rect","item:TreeItem","column"),&Tree::_get_item_rect,DEFVAL(-1)); - ClassDB::bind_method(_MD("get_item_at_pos:TreeItem","pos"),&Tree::get_item_at_pos); - ClassDB::bind_method(_MD("get_column_at_pos","pos"),&Tree::get_column_at_pos); + ClassDB::bind_method(D_METHOD("get_edited:TreeItem"),&Tree::get_edited); + ClassDB::bind_method(D_METHOD("get_edited_column"),&Tree::get_edited_column); + ClassDB::bind_method(D_METHOD("get_custom_popup_rect"),&Tree::get_custom_popup_rect); + ClassDB::bind_method(D_METHOD("get_item_area_rect","item:TreeItem","column"),&Tree::_get_item_rect,DEFVAL(-1)); + ClassDB::bind_method(D_METHOD("get_item_at_pos:TreeItem","pos"),&Tree::get_item_at_pos); + ClassDB::bind_method(D_METHOD("get_column_at_pos","pos"),&Tree::get_column_at_pos); - ClassDB::bind_method(_MD("ensure_cursor_is_visible"),&Tree::ensure_cursor_is_visible); + ClassDB::bind_method(D_METHOD("ensure_cursor_is_visible"),&Tree::ensure_cursor_is_visible); - ClassDB::bind_method(_MD("set_column_titles_visible","visible"),&Tree::set_column_titles_visible); - ClassDB::bind_method(_MD("are_column_titles_visible"),&Tree::are_column_titles_visible); + ClassDB::bind_method(D_METHOD("set_column_titles_visible","visible"),&Tree::set_column_titles_visible); + ClassDB::bind_method(D_METHOD("are_column_titles_visible"),&Tree::are_column_titles_visible); - ClassDB::bind_method(_MD("set_column_title","column","title"),&Tree::set_column_title); - ClassDB::bind_method(_MD("get_column_title","column"),&Tree::get_column_title); - ClassDB::bind_method(_MD("get_scroll"),&Tree::get_scroll); + ClassDB::bind_method(D_METHOD("set_column_title","column","title"),&Tree::set_column_title); + ClassDB::bind_method(D_METHOD("get_column_title","column"),&Tree::get_column_title); + ClassDB::bind_method(D_METHOD("get_scroll"),&Tree::get_scroll); - ClassDB::bind_method(_MD("set_hide_folding","hide"),&Tree::set_hide_folding); - ClassDB::bind_method(_MD("is_folding_hidden"),&Tree::is_folding_hidden); + ClassDB::bind_method(D_METHOD("set_hide_folding","hide"),&Tree::set_hide_folding); + ClassDB::bind_method(D_METHOD("is_folding_hidden"),&Tree::is_folding_hidden); - ClassDB::bind_method(_MD("set_drop_mode_flags","flags"),&Tree::set_drop_mode_flags); - ClassDB::bind_method(_MD("get_drop_mode_flags"),&Tree::get_drop_mode_flags); + ClassDB::bind_method(D_METHOD("set_drop_mode_flags","flags"),&Tree::set_drop_mode_flags); + ClassDB::bind_method(D_METHOD("get_drop_mode_flags"),&Tree::get_drop_mode_flags); - ClassDB::bind_method(_MD("set_allow_rmb_select","allow"),&Tree::set_allow_rmb_select); - ClassDB::bind_method(_MD("get_allow_rmb_select"),&Tree::get_allow_rmb_select); + ClassDB::bind_method(D_METHOD("set_allow_rmb_select","allow"),&Tree::set_allow_rmb_select); + ClassDB::bind_method(D_METHOD("get_allow_rmb_select"),&Tree::get_allow_rmb_select); - ClassDB::bind_method(_MD("set_single_select_cell_editing_only_when_already_selected","enable"),&Tree::set_single_select_cell_editing_only_when_already_selected); - ClassDB::bind_method(_MD("get_single_select_cell_editing_only_when_already_selected"),&Tree::get_single_select_cell_editing_only_when_already_selected); + ClassDB::bind_method(D_METHOD("set_single_select_cell_editing_only_when_already_selected","enable"),&Tree::set_single_select_cell_editing_only_when_already_selected); + ClassDB::bind_method(D_METHOD("get_single_select_cell_editing_only_when_already_selected"),&Tree::get_single_select_cell_editing_only_when_already_selected); ADD_SIGNAL( MethodInfo("item_selected")); ADD_SIGNAL( MethodInfo("cell_selected")); @@ -3728,6 +3752,7 @@ Tree::Tree() { force_select_on_already_selected=false; allow_rmb_select=false; + force_edit_checkbox_only_on_checkbox=false; set_clip_contents(true); } |