You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 12:50:35 +00:00
Scene Tree Dock: added ability to deselect items when clicking on empty space
This commit is contained in:
@@ -481,6 +481,12 @@ void SceneTreeEditor::_selected_changed() {
|
|||||||
blocked--;
|
blocked--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SceneTreeEditor::_deselect_items() {
|
||||||
|
|
||||||
|
// Clear currently elected items in scene tree dock.
|
||||||
|
editor_selection->clear();
|
||||||
|
}
|
||||||
|
|
||||||
void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_selected) {
|
void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_selected) {
|
||||||
|
|
||||||
TreeItem *item = Object::cast_to<TreeItem>(p_object);
|
TreeItem *item = Object::cast_to<TreeItem>(p_object);
|
||||||
@@ -929,6 +935,7 @@ void SceneTreeEditor::_bind_methods() {
|
|||||||
ClassDB::bind_method("_update_tree", &SceneTreeEditor::_update_tree);
|
ClassDB::bind_method("_update_tree", &SceneTreeEditor::_update_tree);
|
||||||
ClassDB::bind_method("_node_removed", &SceneTreeEditor::_node_removed);
|
ClassDB::bind_method("_node_removed", &SceneTreeEditor::_node_removed);
|
||||||
ClassDB::bind_method("_selected_changed", &SceneTreeEditor::_selected_changed);
|
ClassDB::bind_method("_selected_changed", &SceneTreeEditor::_selected_changed);
|
||||||
|
ClassDB::bind_method("_deselect_items", &SceneTreeEditor::_deselect_items);
|
||||||
ClassDB::bind_method("_renamed", &SceneTreeEditor::_renamed);
|
ClassDB::bind_method("_renamed", &SceneTreeEditor::_renamed);
|
||||||
ClassDB::bind_method("_rename_node", &SceneTreeEditor::_rename_node);
|
ClassDB::bind_method("_rename_node", &SceneTreeEditor::_rename_node);
|
||||||
ClassDB::bind_method("_test_update_tree", &SceneTreeEditor::_test_update_tree);
|
ClassDB::bind_method("_test_update_tree", &SceneTreeEditor::_test_update_tree);
|
||||||
@@ -1005,6 +1012,7 @@ SceneTreeEditor::SceneTreeEditor(bool p_label, bool p_can_rename, bool p_can_ope
|
|||||||
tree->connect("item_edited", this, "_renamed", varray(), CONNECT_DEFERRED);
|
tree->connect("item_edited", this, "_renamed", varray(), CONNECT_DEFERRED);
|
||||||
tree->connect("multi_selected", this, "_cell_multi_selected");
|
tree->connect("multi_selected", this, "_cell_multi_selected");
|
||||||
tree->connect("button_pressed", this, "_cell_button_pressed");
|
tree->connect("button_pressed", this, "_cell_button_pressed");
|
||||||
|
tree->connect("nothing_selected", this, "_deselect_items");
|
||||||
//tree->connect("item_edited", this,"_renamed",Vector<Variant>(),true);
|
//tree->connect("item_edited", this,"_renamed",Vector<Variant>(),true);
|
||||||
|
|
||||||
error = memnew(AcceptDialog);
|
error = memnew(AcceptDialog);
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ class SceneTreeEditor : public Control {
|
|||||||
TreeItem *_find(TreeItem *p_node, const NodePath &p_path);
|
TreeItem *_find(TreeItem *p_node, const NodePath &p_path);
|
||||||
void _notification(int p_what);
|
void _notification(int p_what);
|
||||||
void _selected_changed();
|
void _selected_changed();
|
||||||
|
void _deselect_items();
|
||||||
void _rename_node(ObjectID p_node, const String &p_name);
|
void _rename_node(ObjectID p_node, const String &p_name);
|
||||||
|
|
||||||
void _cell_collapsed(Object *p_obj);
|
void _cell_collapsed(Object *p_obj);
|
||||||
|
|||||||
@@ -1923,6 +1923,9 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool
|
|||||||
c = c->next;
|
c = c->next;
|
||||||
item_h += child_h;
|
item_h += child_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!c && !p_mod->get_shift() && !p_mod->get_control() && !p_mod->get_command() && !click_handled && p_button != BUTTON_RIGHT)
|
||||||
|
emit_signal("nothing_selected");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3750,6 +3753,7 @@ void Tree::_bind_methods() {
|
|||||||
ADD_SIGNAL(MethodInfo("custom_popup_edited", PropertyInfo(Variant::BOOL, "arrow_clicked")));
|
ADD_SIGNAL(MethodInfo("custom_popup_edited", PropertyInfo(Variant::BOOL, "arrow_clicked")));
|
||||||
ADD_SIGNAL(MethodInfo("item_activated"));
|
ADD_SIGNAL(MethodInfo("item_activated"));
|
||||||
ADD_SIGNAL(MethodInfo("column_title_pressed", PropertyInfo(Variant::INT, "column")));
|
ADD_SIGNAL(MethodInfo("column_title_pressed", PropertyInfo(Variant::INT, "column")));
|
||||||
|
ADD_SIGNAL(MethodInfo("nothing_selected"));
|
||||||
|
|
||||||
BIND_ENUM_CONSTANT(SELECT_SINGLE);
|
BIND_ENUM_CONSTANT(SELECT_SINGLE);
|
||||||
BIND_ENUM_CONSTANT(SELECT_ROW);
|
BIND_ENUM_CONSTANT(SELECT_ROW);
|
||||||
|
|||||||
Reference in New Issue
Block a user