Skip to content

Commit

Permalink
Merge pull request #48685 from bruvzg/bundle_icon_4
Browse files Browse the repository at this point in the history
  • Loading branch information
akien-mga authored Sep 30, 2021
2 parents 998974f + 11ccfad commit 3a19400
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 7 deletions.
5 changes: 5 additions & 0 deletions core/os/os.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,11 @@ String OS::get_bundle_resource_dir() const {
return ".";
}

// Path to macOS .app bundle embedded icon
String OS::get_bundle_icon_path() const {
return String();
}

// OS specific path for user://
String OS::get_user_data_dir() const {
return ".";
Expand Down
1 change: 1 addition & 0 deletions core/os/os.h
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@ class OS {
virtual String get_config_path() const;
virtual String get_cache_path() const;
virtual String get_bundle_resource_dir() const;
virtual String get_bundle_icon_path() const;

virtual String get_user_data_dir() const;
virtual String get_resource_dir() const;
Expand Down
8 changes: 5 additions & 3 deletions main/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1721,8 +1721,10 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
}

#ifdef TOOLS_ENABLED
Ref<Image> icon = memnew(Image(app_icon_png));
DisplayServer::get_singleton()->set_icon(icon);
if (OS::get_singleton()->get_bundle_icon_path().is_empty()) {
Ref<Image> icon = memnew(Image(app_icon_png));
DisplayServer::get_singleton()->set_icon(icon);
}
#endif
}

Expand Down Expand Up @@ -2440,7 +2442,7 @@ bool Main::start() {
#endif
}

if (!hasicon) {
if (!hasicon && OS::get_singleton()->get_bundle_icon_path().is_empty()) {
Ref<Image> icon = memnew(Image(app_icon_png));
DisplayServer::get_singleton()->set_icon(icon);
}
Expand Down
1 change: 1 addition & 0 deletions platform/osx/os_osx.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ class OS_OSX : public OS_Unix {
virtual String get_data_path() const override;
virtual String get_cache_path() const override;
virtual String get_bundle_resource_dir() const override;
virtual String get_bundle_icon_path() const override;
virtual String get_godot_dir_name() const override;

virtual String get_system_dir(SystemDir p_dir, bool p_shared_storage = true) const override;
Expand Down
20 changes: 16 additions & 4 deletions platform/osx/os_osx.mm
Original file line number Diff line number Diff line change
Expand Up @@ -379,14 +379,26 @@ virtual void log_error(const char *p_function, const char *p_file, int p_line, c
}

String OS_OSX::get_bundle_resource_dir() const {
String ret;

NSBundle *main = [NSBundle mainBundle];
NSString *resourcePath = [main resourcePath];
if (main) {
NSString *resourcePath = [main resourcePath];
ret.parse_utf8([resourcePath UTF8String]);
}
return ret;
}

char *utfs = strdup([resourcePath UTF8String]);
String OS_OSX::get_bundle_icon_path() const {
String ret;
ret.parse_utf8(utfs);
free(utfs);

NSBundle *main = [NSBundle mainBundle];
if (main) {
NSString *iconPath = [[main infoDictionary] objectForKey:@"CFBundleIconFile"];
if (iconPath) {
ret.parse_utf8([iconPath UTF8String]);
}
}
return ret;
}

Expand Down

0 comments on commit 3a19400

Please sign in to comment.