diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-05-17 11:32:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-17 11:32:31 +0200 |
commit | 40a5f81ae540cd7923cd438ccb21ffb41cfbc87d (patch) | |
tree | 6912e3be619eaf35c67f0f5184fd6ddf9304a4d5 /platform/osx/export/export.cpp | |
parent | b963bf825307858e816071b16b47e737b6154c98 (diff) | |
parent | 22ee26849eeb22e894d0ae5a627e097c8d977d46 (diff) |
Merge pull request #28954 from bruvzg/macos_user_icns
Allow using user provided `.icns` files for exported app icons.
Diffstat (limited to 'platform/osx/export/export.cpp')
-rw-r--r-- | platform/osx/export/export.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 89212b0e5e..d0e39d1638 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -121,7 +121,7 @@ void EditorExportPlatformOSX::get_export_options(List<ExportOption> *r_options) r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/name", PROPERTY_HINT_PLACEHOLDER_TEXT, "Game Name"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/info"), "Made with Godot Engine")); - r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/icon", PROPERTY_HINT_FILE, "*.png"), "")); + r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/icon", PROPERTY_HINT_FILE, "*.png,*.icns"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/identifier", PROPERTY_HINT_PLACEHOLDER_TEXT, "com.example.game"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/signature"), "")); r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "application/short_version"), "1.0")); @@ -542,11 +542,21 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p iconpath = ProjectSettings::get_singleton()->get("application/config/icon"); if (iconpath != "") { - Ref<Image> icon; - icon.instance(); - icon->load(iconpath); - if (!icon->empty()) { - _make_icon(icon, data); + if (iconpath.get_extension() == "icns") { + FileAccess *icon = FileAccess::open(iconpath, FileAccess::READ); + if (icon) { + data.resize(icon->get_len()); + icon->get_buffer(&data.write[0], icon->get_len()); + icon->close(); + memdelete(icon); + } + } else { + Ref<Image> icon; + icon.instance(); + icon->load(iconpath); + if (!icon->empty()) { + _make_icon(icon, data); + } } } //bleh? |