mirror of
https://github.com/godotengine/godot.git
synced 2025-01-22 18:43:29 -05:00
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
3 changed files with 18 additions and 0 deletions
|
@ -69,6 +69,12 @@ bool EditorInspector::_property_path_matches(const String &p_property_path, cons
|
|||
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 ms;
|
||||
Ref<Font> font = get_theme_font(SceneStringName(font), SNAME("Tree"));
|
||||
|
|
|
@ -160,6 +160,8 @@ protected:
|
|||
public:
|
||||
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;
|
||||
|
||||
void set_label(const String &p_label);
|
||||
|
|
|
@ -91,6 +91,10 @@ void EditorPropertyText::_text_changed(const String &p_string) {
|
|||
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) {
|
||||
emit_changed(get_edited_property(), StringName(p_string));
|
||||
} else {
|
||||
|
@ -104,6 +108,7 @@ void EditorPropertyText::update_property() {
|
|||
if (text->get_text() != s) {
|
||||
int caret = text->get_caret_column();
|
||||
text->set_text(s);
|
||||
text->set_tooltip_text(get_tooltip_string(s));
|
||||
text->set_caret_column(caret);
|
||||
}
|
||||
text->set_editable(!is_read_only());
|
||||
|
@ -150,10 +155,14 @@ void EditorPropertyMultilineText::_set_read_only(bool p_read_only) {
|
|||
|
||||
void EditorPropertyMultilineText::_big_text_changed() {
|
||||
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);
|
||||
}
|
||||
|
||||
void EditorPropertyMultilineText::_text_changed() {
|
||||
text->set_tooltip_text(get_tooltip_string(text->get_text()));
|
||||
emit_changed(get_edited_property(), text->get_text(), "", true);
|
||||
}
|
||||
|
||||
|
@ -182,6 +191,7 @@ void EditorPropertyMultilineText::update_property() {
|
|||
String t = get_edited_property_value();
|
||||
if (text->get_text() != t) {
|
||||
text->set_text(t);
|
||||
text->set_tooltip_text(get_tooltip_string(t));
|
||||
if (big_text && big_text->is_visible_in_tree()) {
|
||||
big_text->set_text(t);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue