Skip to content

Commit 24c1a78

Browse files
committed
Improve tile source tooltips
1 parent 3c7f9b9 commit 24c1a78

File tree

6 files changed

+46
-20
lines changed

6 files changed

+46
-20
lines changed

editor/scene/2d/tiles/tile_map_layer_editor.cpp

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ void TileMapLayerEditorTilesPlugin::_update_tile_set_sources_list() {
183183
}
184184
sources_list->set_meta("old_source", old_source);
185185
sources_list->clear();
186+
sources_list->tile_set = Ref<TileSet>();
186187

187188
TileMapLayer *edited_layer = _get_edited_layer();
188189
if (!edited_layer) {
@@ -193,6 +194,7 @@ void TileMapLayerEditorTilesPlugin::_update_tile_set_sources_list() {
193194
if (tile_set.is_null()) {
194195
return;
195196
}
197+
sources_list->tile_set = tile_set;
196198

197199
if (!tile_set->has_source(old_source)) {
198200
old_source = -1;
@@ -2380,20 +2382,11 @@ TileMapLayerEditorTilesPlugin::TileMapLayerEditorTilesPlugin() {
23802382
p->set_item_checked(TilesEditorUtils::SOURCE_SORT_ID, true);
23812383
sources_bottom_actions->add_child(source_sort_button);
23822384

2383-
sources_list = memnew(ItemList);
2384-
sources_list->set_auto_translate_mode(Node::AUTO_TRANSLATE_MODE_DISABLED);
2385-
sources_list->set_fixed_icon_size(Size2(60, 60) * EDSCALE);
2386-
sources_list->set_h_size_flags(Control::SIZE_EXPAND_FILL);
2387-
sources_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
2388-
sources_list->set_stretch_ratio(0.25);
2389-
sources_list->set_custom_minimum_size(Size2(70, 0) * EDSCALE);
2390-
sources_list->set_texture_filter(CanvasItem::TEXTURE_FILTER_NEAREST);
2391-
sources_list->set_theme_type_variation("ItemListSecondary");
2385+
sources_list = memnew(TileSetSourceItemList);
23922386
sources_list->connect(SceneStringName(item_selected), callable_mp(this, &TileMapLayerEditorTilesPlugin::_update_source_display).unbind(1));
23932387
sources_list->connect(SceneStringName(item_selected), callable_mp(TilesEditorUtils::get_singleton(), &TilesEditorUtils::set_sources_lists_current));
23942388
sources_list->connect("item_activated", callable_mp(TilesEditorUtils::get_singleton(), &TilesEditorUtils::display_tile_set_editor_panel).unbind(1));
23952389
sources_list->connect(SceneStringName(visibility_changed), callable_mp(TilesEditorUtils::get_singleton(), &TilesEditorUtils::synchronize_sources_list).bind(sources_list, source_sort_button));
2396-
sources_list->add_user_signal(MethodInfo("sort_request"));
23972390
sources_list->connect("sort_request", callable_mp(this, &TileMapLayerEditorTilesPlugin::_update_tile_set_sources_list));
23982391
split_container_left_side->add_child(sources_list);
23992392
split_container_left_side->add_child(sources_bottom_actions);

editor/scene/2d/tiles/tile_map_layer_editor.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
class TileMapLayer;
4949
class TileMapLayerEditor;
50+
class TileSetSourceItemList;
5051

5152
class TileMapLayerSubEditorPlugin : public Object {
5253
protected:
@@ -176,7 +177,7 @@ class TileMapLayerEditorTilesPlugin : public TileMapLayerSubEditorPlugin {
176177
Label *missing_source_label = nullptr;
177178
Label *invalid_source_label = nullptr;
178179

179-
ItemList *sources_list = nullptr;
180+
TileSetSourceItemList *sources_list = nullptr;
180181
MenuButton *source_sort_button = nullptr;
181182

182183
Ref<Texture2D> missing_atlas_texture_icon;

editor/scene/2d/tiles/tile_set_editor.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,7 @@ void TileSetEditor::edit(Ref<TileSet> p_tile_set) {
728728

729729
// Change the edited object.
730730
tile_set = p_tile_set;
731+
sources_list->tile_set = p_tile_set;
731732

732733
// Read-only status is false by default
733734
read_only = new_read_only_state;
@@ -855,18 +856,11 @@ TileSetEditor::TileSetEditor() {
855856
p->add_radio_check_item(TTR("Sort by Name (Descending)"), TilesEditorUtils::SOURCE_SORT_NAME_REVERSE);
856857
p->set_item_checked(TilesEditorUtils::SOURCE_SORT_ID, true);
857858

858-
sources_list = memnew(ItemList);
859-
sources_list->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
860-
sources_list->set_fixed_icon_size(Size2(60, 60) * EDSCALE);
861-
sources_list->set_h_size_flags(SIZE_EXPAND_FILL);
862-
sources_list->set_v_size_flags(SIZE_EXPAND_FILL);
863-
sources_list->set_theme_type_variation("ItemListSecondary");
859+
sources_list = memnew(TileSetSourceItemList);
864860
sources_list->connect(SceneStringName(item_selected), callable_mp(this, &TileSetEditor::_source_selected));
865861
sources_list->connect(SceneStringName(item_selected), callable_mp(TilesEditorUtils::get_singleton(), &TilesEditorUtils::set_sources_lists_current));
866862
sources_list->connect(SceneStringName(visibility_changed), callable_mp(TilesEditorUtils::get_singleton(), &TilesEditorUtils::synchronize_sources_list).bind(sources_list, source_sort_button));
867-
sources_list->add_user_signal(MethodInfo("sort_request"));
868863
sources_list->connect("sort_request", callable_mp(this, &TileSetEditor::_update_sources_list).bind(-1));
869-
sources_list->set_texture_filter(CanvasItem::TEXTURE_FILTER_NEAREST);
870864
SET_DRAG_FORWARDING_CDU(sources_list, TileSetEditor);
871865
split_container_left_side->add_child(sources_list);
872866

editor/scene/2d/tiles/tile_set_editor.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class HBoxContainer;
4343
class SplitContainer;
4444
class EditorFileDialog;
4545
class EditorInspectorPlugin;
46+
class TileSetSourceItemList;
4647

4748
class TileSetEditor : public MarginContainer {
4849
GDCLASS(TileSetEditor, MarginContainer);
@@ -76,7 +77,7 @@ class TileSetEditor : public MarginContainer {
7677
MenuButton *sources_add_button = nullptr;
7778
MenuButton *source_sort_button = nullptr;
7879
MenuButton *sources_advanced_menu_button = nullptr;
79-
ItemList *sources_list = nullptr;
80+
TileSetSourceItemList *sources_list = nullptr;
8081
Ref<Texture2D> missing_texture_texture;
8182
void _source_selected(int p_source_index);
8283
void _source_delete_pressed();

editor/scene/2d/tiles/tiles_editor_plugin.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,32 @@ TilesEditorUtils::~TilesEditorUtils() {
327327
singleton = nullptr;
328328
}
329329

330+
String TileSetSourceItemList::get_tooltip(const Point2 &p_pos) const {
331+
int idx = get_item_at_position(p_pos);
332+
if (tile_set.is_null() || idx == -1) {
333+
return ItemList::get_tooltip(p_pos);
334+
}
335+
idx = get_item_metadata(idx);
336+
337+
Ref<TileSetAtlasSource> atlas = tile_set->get_source(idx);
338+
if (atlas.is_valid() && atlas->get_texture().is_valid()) {
339+
return vformat(TTR("Source ID: %d\nTexture path: %s"), idx, atlas->get_texture()->get_path());
340+
}
341+
return vformat(TTR("Source ID: %d"), idx);
342+
}
343+
344+
TileSetSourceItemList::TileSetSourceItemList() {
345+
set_fixed_icon_size(Size2(60, 60) * EDSCALE);
346+
set_h_size_flags(SIZE_EXPAND_FILL);
347+
set_v_size_flags(SIZE_EXPAND_FILL);
348+
set_stretch_ratio(0.25);
349+
set_custom_minimum_size(Size2(70, 0) * EDSCALE);
350+
set_theme_type_variation("ItemListSecondary");
351+
set_texture_filter(TEXTURE_FILTER_NEAREST);
352+
set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
353+
add_user_signal(MethodInfo("sort_request"));
354+
}
355+
330356
void TileMapEditorPlugin::_tile_map_layer_changed() {
331357
if (tile_map_changed_needs_update) {
332358
return;

editor/scene/2d/tiles/tiles_editor_plugin.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,17 @@ class TilesEditorUtils : public Object {
107107
~TilesEditorUtils();
108108
};
109109

110+
class TileSetSourceItemList : public ItemList {
111+
GDCLASS(TileSetSourceItemList, ItemList);
112+
113+
public:
114+
Ref<TileSet> tile_set;
115+
116+
virtual String get_tooltip(const Point2 &p_pos) const override;
117+
118+
TileSetSourceItemList();
119+
};
120+
110121
class TileMapEditorPlugin : public EditorPlugin {
111122
GDCLASS(TileMapEditorPlugin, EditorPlugin);
112123

0 commit comments

Comments
 (0)