summaryrefslogtreecommitdiffstats
path: root/editor/editor_properties.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor_properties.cpp')
-rw-r--r--editor/editor_properties.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index 0e3b408996..c6a6163a4e 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -2630,16 +2630,22 @@ void EditorPropertyColor::_set_read_only(bool p_read_only) {
}
void EditorPropertyColor::_color_changed(const Color &p_color) {
+ if (!live_changes_enabled) {
+ return;
+ }
+
// Cancel the color change if the current color is identical to the new one.
- if (get_edited_property_value() == p_color) {
+ if (((Color)get_edited_property_value()).is_equal_approx(p_color)) {
return;
}
- emit_changed(get_edited_property(), p_color, "", true);
+ // Preview color change, bypassing undo/redo.
+ get_edited_object()->set(get_edited_property(), p_color);
}
void EditorPropertyColor::_popup_closed() {
- if (picker->get_pick_color() != last_color) {
+ get_edited_object()->set(get_edited_property(), last_color);
+ if (!picker->get_pick_color().is_equal_approx(last_color)) {
emit_changed(get_edited_property(), picker->get_pick_color(), "", false);
}
}
@@ -2682,6 +2688,10 @@ void EditorPropertyColor::setup(bool p_show_alpha) {
picker->set_edit_alpha(p_show_alpha);
}
+void EditorPropertyColor::set_live_changes_enabled(bool p_enabled) {
+ live_changes_enabled = p_enabled;
+}
+
EditorPropertyColor::EditorPropertyColor() {
picker = memnew(ColorPickerButton);
add_child(picker);
@@ -2741,7 +2751,15 @@ void EditorPropertyNodePath::_node_assign() {
add_child(scene_tree);
scene_tree->connect("selected", callable_mp(this, &EditorPropertyNodePath::_node_selected));
}
- scene_tree->popup_scenetree_dialog();
+
+ Variant val = get_edited_property_value();
+ Node *n = nullptr;
+ if (val.get_type() == Variant::Type::NODE_PATH) {
+ n = get_base_node()->get_node_or_null(val);
+ } else {
+ n = Object::cast_to<Node>(val);
+ }
+ scene_tree->popup_scenetree_dialog(n, get_base_node());
}
void EditorPropertyNodePath::_update_menu() {
@@ -3174,7 +3192,6 @@ void EditorPropertyResource::_resource_changed(const Ref<Resource> &p_resource)
add_child(scene_tree);
scene_tree->connect("selected", callable_mp(this, &EditorPropertyResource::_viewport_selected));
}
-
scene_tree->popup_scenetree_dialog();
}
}