mirror of
https://github.com/godotengine/godot.git
synced 2024-11-10 14:12:51 +00:00
Fix "selection_changed" called twice
This commit is contained in:
parent
e96c40f94a
commit
59564f267c
@ -871,6 +871,7 @@ void EditorSelection::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("remove_node", "node"), &EditorSelection::remove_node);
|
||||
ClassDB::bind_method(D_METHOD("get_selected_nodes"), &EditorSelection::_get_selected_nodes);
|
||||
ClassDB::bind_method(D_METHOD("get_transformable_selected_nodes"), &EditorSelection::_get_transformable_selected_nodes);
|
||||
ClassDB::bind_method(D_METHOD("_emit_change"), &EditorSelection::_emit_change);
|
||||
ADD_SIGNAL(MethodInfo("selection_changed"));
|
||||
}
|
||||
|
||||
@ -914,7 +915,15 @@ void EditorSelection::update() {
|
||||
if (!changed)
|
||||
return;
|
||||
changed = false;
|
||||
if (!emitted) {
|
||||
emitted = true;
|
||||
call_deferred("_emit_change");
|
||||
}
|
||||
}
|
||||
|
||||
void EditorSelection::_emit_change() {
|
||||
emit_signal("selection_changed");
|
||||
emitted = false;
|
||||
}
|
||||
|
||||
List<Node *> &EditorSelection::get_selected_node_list() {
|
||||
@ -938,6 +947,7 @@ void EditorSelection::clear() {
|
||||
}
|
||||
EditorSelection::EditorSelection() {
|
||||
|
||||
emitted = false;
|
||||
changed = false;
|
||||
nl_changed = false;
|
||||
}
|
||||
|
@ -209,9 +209,10 @@ class EditorSelection : public Object {
|
||||
|
||||
GDCLASS(EditorSelection, Object);
|
||||
|
||||
public:
|
||||
private:
|
||||
Map<Node *, Object *> selection;
|
||||
|
||||
bool emitted;
|
||||
bool changed;
|
||||
bool nl_changed;
|
||||
|
||||
@ -223,6 +224,7 @@ public:
|
||||
void _update_nl();
|
||||
Array _get_selected_nodes();
|
||||
Array _get_transformable_selected_nodes();
|
||||
void _emit_change();
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
Loading…
Reference in New Issue
Block a user