Skip to content

Commit 970f823

Browse files
committed
Merge pull request #117733 from KoBeWi/autranslator_localized_(i.e._at_location)
Add `_get_tooltip_auto_translate_mode_at()` to Control
2 parents 7484a2e + 0d220b3 commit 970f823

9 files changed

Lines changed: 51 additions & 1 deletion

File tree

doc/classes/Control.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@
141141
[b]Note:[/b] If this method returns an empty [String] and [method _make_custom_tooltip] is not overridden, no tooltip is displayed.
142142
</description>
143143
</method>
144+
<method name="_get_tooltip_auto_translate_mode_at" qualifiers="virtual const">
145+
<return type="int" enum="Node.AutoTranslateMode" />
146+
<param index="0" name="at_position" type="Vector2" />
147+
<description>
148+
Return the auto-translation mode at the given [param at_position]. If not implemented, the [member tooltip_auto_translate_mode] property will be used instead.
149+
</description>
150+
</method>
144151
<method name="_gui_input" qualifiers="virtual">
145152
<return type="void" />
146153
<param index="0" name="event" type="InputEvent" />

editor/settings/editor_autoload_settings.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,7 @@ void EditorAutoloadSettings::update_autoload() {
521521

522522
TreeItem *item = tree->create_item(root);
523523
item->set_text(0, name);
524+
item->set_auto_translate_mode(0, AUTO_TRANSLATE_MODE_DISABLED); // For tooltip.
524525
item->set_editable(0, true);
525526

526527
item->set_text(1, ResourceUID::ensure_path(scr_path));

scene/gui/control.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3952,6 +3952,15 @@ Node::AutoTranslateMode Control::get_tooltip_auto_translate_mode() const {
39523952
return data.tooltip_auto_translate_mode;
39533953
}
39543954

3955+
Node::AutoTranslateMode Control::get_tooltip_auto_translate_mode_at(const Vector2 &p_at) const {
3956+
ERR_READ_THREAD_GUARD_V(AUTO_TRANSLATE_MODE_INHERIT);
3957+
AutoTranslateMode auto_translating;
3958+
if (GDVIRTUAL_CALL(_get_tooltip_auto_translate_mode_at, p_at, auto_translating)) {
3959+
return auto_translating;
3960+
}
3961+
return get_tooltip_auto_translate_mode();
3962+
}
3963+
39553964
// Extra properties.
39563965

39573966
void Control::set_tooltip_text(const String &p_hint) {
@@ -4756,6 +4765,7 @@ void Control::_bind_methods() {
47564765
GDVIRTUAL_BIND(_structured_text_parser, "args", "text");
47574766
GDVIRTUAL_BIND(_get_minimum_size);
47584767
GDVIRTUAL_BIND(_get_tooltip, "at_position");
4768+
GDVIRTUAL_BIND(_get_tooltip_auto_translate_mode_at, "at_position");
47594769

47604770
GDVIRTUAL_BIND(_get_drag_data, "at_position");
47614771
GDVIRTUAL_BIND(_can_drop_data, "at_position", "data");

scene/gui/control.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ class Control : public CanvasItem {
435435
GDVIRTUAL2RC(TypedArray<Vector3i>, _structured_text_parser, Array, String)
436436
GDVIRTUAL0RC(Vector2, _get_minimum_size)
437437
GDVIRTUAL1RC(String, _get_tooltip, Vector2)
438+
GDVIRTUAL1RC(AutoTranslateMode, _get_tooltip_auto_translate_mode_at, Vector2)
438439

439440
GDVIRTUAL1R(Variant, _get_drag_data, Vector2)
440441
GDVIRTUAL2RC(bool, _can_drop_data, Vector2, Variant)
@@ -790,6 +791,7 @@ class Control : public CanvasItem {
790791

791792
void set_tooltip_auto_translate_mode(AutoTranslateMode p_mode);
792793
AutoTranslateMode get_tooltip_auto_translate_mode() const;
794+
virtual AutoTranslateMode get_tooltip_auto_translate_mode_at(const Vector2 &p_at) const;
793795

794796
// Extra properties.
795797

scene/gui/item_list.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2077,6 +2077,14 @@ String ItemList::get_tooltip(const Point2 &p_pos) const {
20772077
return Control::get_tooltip(p_pos);
20782078
}
20792079

2080+
Node::AutoTranslateMode ItemList::get_tooltip_auto_translate_mode_at(const Point2 &p_at) const {
2081+
int closest = get_item_at_position(p_at, true);
2082+
if (closest != -1) {
2083+
return items[closest].auto_translate_mode;
2084+
}
2085+
return Control::get_tooltip_auto_translate_mode_at(p_at);
2086+
}
2087+
20802088
void ItemList::sort_items_by_text() {
20812089
items.sort();
20822090
queue_accessibility_update();

scene/gui/item_list.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ class ItemList : public Control {
325325
int find_metadata(const Variant &p_metadata) const;
326326

327327
virtual String get_tooltip(const Point2 &p_pos) const override;
328+
virtual AutoTranslateMode get_tooltip_auto_translate_mode_at(const Point2 &p_at) const override;
328329
int get_item_at_position(const Point2 &p_pos, bool p_exact = false) const;
329330
bool is_pos_at_end_of_items(const Point2 &p_pos) const;
330331

scene/gui/tree.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6691,6 +6691,26 @@ String Tree::get_tooltip(const Point2 &p_pos) const {
66916691
return Control::get_tooltip(p_pos);
66926692
}
66936693

6694+
Node::AutoTranslateMode Tree::get_tooltip_auto_translate_mode_at(const Point2 &p_at) const {
6695+
Point2 pos = p_at - theme_cache.panel_style->get_offset();
6696+
pos.y -= _get_title_button_height();
6697+
6698+
// `pos.y` less than 0 indicates we're in the header.
6699+
if (pos.y < 0) {
6700+
// Columns don't have auto-translate mode, so return the default.
6701+
return Control::get_tooltip_auto_translate_mode_at(p_at);
6702+
}
6703+
6704+
TreeItem *it;
6705+
int col, index, section;
6706+
_find_button_at_pos(p_at, it, col, index, section);
6707+
6708+
if (it) {
6709+
return it->get_auto_translate_mode(col);
6710+
}
6711+
return Control::get_tooltip_auto_translate_mode_at(p_at);
6712+
}
6713+
66946714
void Tree::set_cursor_can_exit_tree(bool p_enable) {
66956715
cursor_can_exit_tree = p_enable;
66966716
}

scene/gui/tree.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,7 @@ class Tree : public Control {
834834
virtual void gui_input(const Ref<InputEvent> &p_event) override;
835835

836836
virtual String get_tooltip(const Point2 &p_pos) const override;
837+
virtual AutoTranslateMode get_tooltip_auto_translate_mode_at(const Point2 &p_at) const override;
837838

838839
virtual bool can_drop_data(const Point2 &p_point, const Variant &p_data) const override;
839840
virtual Variant get_drag_data(const Point2 &p_point) override;

scene/main/viewport.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1675,7 +1675,7 @@ void Viewport::_gui_show_tooltip_at(const Point2i &p_pos) {
16751675
gui.tooltip_label = memnew(Label);
16761676
gui.tooltip_label->set_theme_type_variation(SNAME("TooltipLabel"));
16771677
gui.tooltip_label->set_text(gui.tooltip_text);
1678-
gui.tooltip_label->set_auto_translate_mode(tooltip_owner->get_tooltip_auto_translate_mode());
1678+
gui.tooltip_label->set_auto_translate_mode(tooltip_owner->get_tooltip_auto_translate_mode_at(tooltip_owner->get_global_transform_with_canvas().affine_inverse().xform(gui.last_mouse_pos)));
16791679
base_tooltip = gui.tooltip_label;
16801680
panel->connect(SceneStringName(mouse_entered), callable_mp(this, &Viewport::_gui_cancel_tooltip));
16811681
}

0 commit comments

Comments
 (0)