diff --git a/doc/classes/EditorProperty.xml b/doc/classes/EditorProperty.xml
index 7bac4bf7acf5..9170c449bf3b 100644
--- a/doc/classes/EditorProperty.xml
+++ b/doc/classes/EditorProperty.xml
@@ -9,6 +9,13 @@
+
+
+
+
+ Called when the read-only status of the property is changed. It may be used to change custom controls into a read-only or modifiable state.
+
+
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index 413eb5255662..fb819f418bb4 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -426,6 +426,9 @@ void EditorProperty::_set_read_only(bool p_read_only) {
void EditorProperty::set_read_only(bool p_read_only) {
read_only = p_read_only;
+ if (GDVIRTUAL_CALL(_set_read_only, p_read_only)) {
+ return;
+ }
_set_read_only(p_read_only);
}
@@ -985,6 +988,8 @@ void EditorProperty::_bind_methods() {
ADD_SIGNAL(MethodInfo("selected", PropertyInfo(Variant::STRING, "path"), PropertyInfo(Variant::INT, "focusable_idx")));
GDVIRTUAL_BIND(_update_property)
+ GDVIRTUAL_BIND(_set_read_only, "read_only")
+
ClassDB::bind_method(D_METHOD("_update_editor_property_status"), &EditorProperty::update_editor_property_status);
}
diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h
index b7df5a80377e..872007e637ad 100644
--- a/editor/editor_inspector.h
+++ b/editor/editor_inspector.h
@@ -120,6 +120,8 @@ private:
HashMap cache;
GDVIRTUAL0(_update_property)
+ GDVIRTUAL1(_set_read_only, bool)
+
void _update_pin_flags();
protected: