diff options
Diffstat (limited to 'tools/editor/scene_tree_dock.cpp')
-rw-r--r-- | tools/editor/scene_tree_dock.cpp | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index 88bed4c23f..eb6e96ac51 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -220,11 +220,15 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { if (!scene) { + EditorNode::get_singleton()->new_inherited_scene(); + + /* should be legal now current_option=-1; //confirmation->get_cancel()->hide(); accept->get_ok()->set_text(TTR("I see..")); accept->set_text("This operation can't be done without a tree root."); accept->popup_centered_minsize(); + */ break; } @@ -629,6 +633,8 @@ void SceneTreeDock::_notification(int p_what) { for(int i=0;i<TOOL_BUTTON_MAX;i++) tool_buttons[i]->set_icon(get_icon(button_names[i],"EditorIcons")); + filter_icon->set_texture(get_icon("Zoom","EditorIcons")); + EditorNode::get_singleton()->get_editor_selection()->connect("selection_changed",this,"_selection_changed"); } break; @@ -1271,7 +1277,12 @@ void SceneTreeDock::_update_tool_buttons() { void SceneTreeDock::_selection_changed() { - tool_buttons[TOOL_MULTI_EDIT]->set_disabled(EditorNode::get_singleton()->get_editor_selection()->get_selection().size()<2); + if (EditorNode::get_singleton()->get_editor_selection()->get_selection().size()>1) { + //automatically turn on multi-edit + _tool_selected(TOOL_MULTI_EDIT); + } + + //tool_buttons[TOOL_MULTI_EDIT]->set_disabled(EditorNode::get_singleton()->get_editor_selection()->get_selection().size()<2); } @@ -1683,10 +1694,24 @@ void SceneTreeDock::_nodes_dragged(Array p_nodes,NodePath p_to,int p_type) { void SceneTreeDock::_tree_rmb(const Vector2& p_menu_pos) { + + if (!EditorNode::get_singleton()->get_edited_scene()) { + + menu->clear(); + menu->add_item("New Scene Root",TOOL_NEW,KEY_MASK_CMD|KEY_A); + menu->add_item("Inherit Scene",TOOL_INSTANCE); + + menu->set_size(Size2(1,1)); + menu->set_pos(p_menu_pos); + menu->popup(); + return; + } + List<Node*> selection = editor_selection->get_selected_node_list(); if (selection.size()==0) return; + menu->clear(); @@ -1722,6 +1747,23 @@ void SceneTreeDock::_tree_rmb(const Vector2& p_menu_pos) { } + +void SceneTreeDock::_filter_changed(const String& p_filter) { + + scene_tree->set_filter(p_filter); +} + +String SceneTreeDock::get_filter() { + + return filter->get_text(); +} + +void SceneTreeDock::set_filter(const String& p_filter){ + + filter->set_text(p_filter); + scene_tree->set_filter(p_filter); +} + void SceneTreeDock::_bind_methods() { ObjectTypeDB::bind_method(_MD("_tool_selected"),&SceneTreeDock::_tool_selected,DEFVAL(false)); @@ -1743,6 +1785,7 @@ void SceneTreeDock::_bind_methods() { ObjectTypeDB::bind_method(_MD("_nodes_dragged"),&SceneTreeDock::_nodes_dragged); ObjectTypeDB::bind_method(_MD("_files_dropped"),&SceneTreeDock::_files_dropped); ObjectTypeDB::bind_method(_MD("_tree_rmb"),&SceneTreeDock::_tree_rmb); + ObjectTypeDB::bind_method(_MD("_filter_changed"),&SceneTreeDock::_filter_changed); ObjectTypeDB::bind_method(_MD("instance"),&SceneTreeDock::instance); @@ -1803,6 +1846,17 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor,Node *p_scene_root,EditorSelec hbc_top->add_child(tb); tool_buttons[TOOL_SCRIPT]=tb; + HBoxContainer *filter_hbc = memnew( HBoxContainer ); + vbc->add_child(filter_hbc); + filter = memnew( LineEdit ); + filter->set_h_size_flags(SIZE_EXPAND_FILL); + filter_hbc->add_child(filter); + filter_icon = memnew( TextureFrame ); + filter_hbc->add_child(filter_icon); + filter->connect("text_changed",this,"_filter_changed"); + + + scene_tree = memnew( SceneTreeEditor(false,true,true )); vbc->add_child(scene_tree); @@ -1917,5 +1971,12 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor,Node *p_scene_root,EditorSelec menu->connect("item_pressed",this,"_tool_selected"); first_enter=true; + if (!EditorSettings::get_singleton()->get("scenetree_editor/display_old_action_buttons")) { + for(int i=0;i<TOOL_BUTTON_MAX;i++) { + tool_buttons[i]->hide(); + } + } + + vbc->add_constant_override("separation",4); } |