From 77a9f3d4d850dd2451e7e615bec138cd20ba11ab Mon Sep 17 00:00:00 2001 From: python273 Date: Sat, 2 Jul 2022 23:15:42 +0300 Subject: [PATCH] Make asset library's column count dynamic (cherry picked from commit d65eb592b09112284bf3246d1f910495ffbbd597) --- .../plugins/asset_library_editor_plugin.cpp | 21 +++++++++++++------ editor/plugins/asset_library_editor_plugin.h | 3 ++- editor/project_manager.cpp | 1 - 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index 2887fd27c18..7954ba8ef62 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -617,6 +617,10 @@ void EditorAssetLibrary::_notification(int p_what) { filter->set_clear_button_enabled(true); } break; + case NOTIFICATION_RESIZED: { + _update_asset_items_columns(); + } break; + case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { _update_repository_options(); setup_http_request(request); @@ -1208,7 +1212,7 @@ void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const library_vb->add_child(asset_top_page); asset_items = memnew(GridContainer); - asset_items->set_columns(2); + _update_asset_items_columns(); asset_items->add_constant_override("hseparation", 10 * EDSCALE); asset_items->add_constant_override("vseparation", 10 * EDSCALE); @@ -1340,12 +1344,17 @@ void EditorAssetLibrary::_install_external_asset(String p_zip_path, String p_tit emit_signal("install_asset", p_zip_path, p_title); } -void EditorAssetLibrary::disable_community_support() { - support->get_popup()->set_item_checked(SUPPORT_COMMUNITY, false); +void EditorAssetLibrary::_update_asset_items_columns() { + int new_columns = get_size().x / (450.0 * EDSCALE); + new_columns = MAX(1, new_columns); + + if (new_columns != asset_items->get_columns()) { + asset_items->set_columns(new_columns); + } } -void EditorAssetLibrary::set_columns(const int p_columns) { - asset_items->set_columns(p_columns); +void EditorAssetLibrary::disable_community_support() { + support->get_popup()->set_item_checked(SUPPORT_COMMUNITY, false); } void EditorAssetLibrary::_bind_methods() { @@ -1522,7 +1531,7 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) { library_vb->add_child(asset_top_page); asset_items = memnew(GridContainer); - asset_items->set_columns(2); + _update_asset_items_columns(); asset_items->add_constant_override("hseparation", 10 * EDSCALE); asset_items->add_constant_override("vseparation", 10 * EDSCALE); diff --git a/editor/plugins/asset_library_editor_plugin.h b/editor/plugins/asset_library_editor_plugin.h index 7fe614bf79c..6f09b774f73 100644 --- a/editor/plugins/asset_library_editor_plugin.h +++ b/editor/plugins/asset_library_editor_plugin.h @@ -294,6 +294,8 @@ class EditorAssetLibrary : public PanelContainer { void _install_external_asset(String p_zip_path, String p_title); + void _update_asset_items_columns(); + friend class EditorAssetLibraryItemDescription; friend class EditorAssetLibraryItem; @@ -303,7 +305,6 @@ protected: public: void disable_community_support(); - void set_columns(int p_columns); EditorAssetLibrary(bool p_templates_only = false); }; diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index 551ac970a6a..8273f87a5b1 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -1779,7 +1779,6 @@ void ProjectManager::_notification(int p_what) { } if (asset_library) { real_t size = get_size().x / EDSCALE; - asset_library->set_columns(size < 1000 ? 1 : 2); // Adjust names of tabs to fit the new size. if (size < 650) { local_projects_hb->set_name(TTR("Local"));