mirror of https://github.com/godotengine/godot
Merge pull request #76231 from Calinou/inspector-text-show-tooltip
Show String properties' text in a tooltip in the inspector
This commit is contained in:
commit
09cbe05485
|
|
@ -69,6 +69,12 @@ bool EditorInspector::_property_path_matches(const String &p_property_path, cons
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String EditorProperty::get_tooltip_string(const String &p_string) const {
|
||||||
|
// Trim to 100 characters to prevent the tooltip from being too long.
|
||||||
|
constexpr int TOOLTIP_MAX_LENGTH = 100;
|
||||||
|
return p_string.left(TOOLTIP_MAX_LENGTH).strip_edges() + String((p_string.length() > TOOLTIP_MAX_LENGTH) ? "..." : "");
|
||||||
|
}
|
||||||
|
|
||||||
Size2 EditorProperty::get_minimum_size() const {
|
Size2 EditorProperty::get_minimum_size() const {
|
||||||
Size2 ms;
|
Size2 ms;
|
||||||
Ref<Font> font = get_theme_font(SceneStringName(font), SNAME("Tree"));
|
Ref<Font> font = get_theme_font(SceneStringName(font), SNAME("Tree"));
|
||||||
|
|
|
||||||
|
|
@ -160,6 +160,8 @@ protected:
|
||||||
public:
|
public:
|
||||||
void emit_changed(const StringName &p_property, const Variant &p_value, const StringName &p_field = StringName(), bool p_changing = false);
|
void emit_changed(const StringName &p_property, const Variant &p_value, const StringName &p_field = StringName(), bool p_changing = false);
|
||||||
|
|
||||||
|
String get_tooltip_string(const String &p_string) const;
|
||||||
|
|
||||||
virtual Size2 get_minimum_size() const override;
|
virtual Size2 get_minimum_size() const override;
|
||||||
|
|
||||||
void set_label(const String &p_label);
|
void set_label(const String &p_label);
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,10 @@ void EditorPropertyText::_text_changed(const String &p_string) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set tooltip so that the full text is displayed in a tooltip if hovered.
|
||||||
|
// This is useful when using a narrow inspector, as the text can be trimmed otherwise.
|
||||||
|
text->set_tooltip_text(get_tooltip_string(text->get_text()));
|
||||||
|
|
||||||
if (string_name) {
|
if (string_name) {
|
||||||
emit_changed(get_edited_property(), StringName(p_string));
|
emit_changed(get_edited_property(), StringName(p_string));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -104,6 +108,7 @@ void EditorPropertyText::update_property() {
|
||||||
if (text->get_text() != s) {
|
if (text->get_text() != s) {
|
||||||
int caret = text->get_caret_column();
|
int caret = text->get_caret_column();
|
||||||
text->set_text(s);
|
text->set_text(s);
|
||||||
|
text->set_tooltip_text(get_tooltip_string(s));
|
||||||
text->set_caret_column(caret);
|
text->set_caret_column(caret);
|
||||||
}
|
}
|
||||||
text->set_editable(!is_read_only());
|
text->set_editable(!is_read_only());
|
||||||
|
|
@ -150,10 +155,14 @@ void EditorPropertyMultilineText::_set_read_only(bool p_read_only) {
|
||||||
|
|
||||||
void EditorPropertyMultilineText::_big_text_changed() {
|
void EditorPropertyMultilineText::_big_text_changed() {
|
||||||
text->set_text(big_text->get_text());
|
text->set_text(big_text->get_text());
|
||||||
|
// Set tooltip so that the full text is displayed in a tooltip if hovered.
|
||||||
|
// This is useful when using a narrow inspector, as the text can be trimmed otherwise.
|
||||||
|
text->set_tooltip_text(get_tooltip_string(big_text->get_text()));
|
||||||
emit_changed(get_edited_property(), big_text->get_text(), "", true);
|
emit_changed(get_edited_property(), big_text->get_text(), "", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorPropertyMultilineText::_text_changed() {
|
void EditorPropertyMultilineText::_text_changed() {
|
||||||
|
text->set_tooltip_text(get_tooltip_string(text->get_text()));
|
||||||
emit_changed(get_edited_property(), text->get_text(), "", true);
|
emit_changed(get_edited_property(), text->get_text(), "", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -182,6 +191,7 @@ void EditorPropertyMultilineText::update_property() {
|
||||||
String t = get_edited_property_value();
|
String t = get_edited_property_value();
|
||||||
if (text->get_text() != t) {
|
if (text->get_text() != t) {
|
||||||
text->set_text(t);
|
text->set_text(t);
|
||||||
|
text->set_tooltip_text(get_tooltip_string(t));
|
||||||
if (big_text && big_text->is_visible_in_tree()) {
|
if (big_text && big_text->is_visible_in_tree()) {
|
||||||
big_text->set_text(t);
|
big_text->set_text(t);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue