summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Bernemann <jbernemann@gmx.de>2019-12-09 20:38:22 +0100
committerJonas Bernemann <jonas.bernemann@consense-consulting.de>2019-12-13 11:00:18 +0100
commit4d61118f64c1c56f50fbe706277fd0b1499f6d98 (patch)
tree289a2f5609a3f7e3d037b26d2278609df9fe412f
parent7380fbbaeebb34168aa6998c490ef05b63125ade (diff)
Add project setting to hide home indicator on iOS
On iOS devices without a physical home button iOS shows a home indicator instead. This is often in the way of the UI or the game. Added a project setting to disable hidden home indicator. The default value is to hide the home indicator
-rw-r--r--doc/classes/ProjectSettings.xml3
-rw-r--r--main/main.cpp2
-rw-r--r--platform/iphone/view_controller.h2
-rw-r--r--platform/iphone/view_controller.mm10
4 files changed, 17 insertions, 0 deletions
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 1d00bb5712..871c37bd15 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -437,6 +437,9 @@
<member name="display/window/vsync/vsync_via_compositor" type="bool" setter="" getter="" default="false">
If [code]Use Vsync[/code] is enabled and this setting is [code]true[/code], enables vertical synchronization via the operating system's window compositor when in windowed mode and the compositor is enabled. This will prevent stutter in certain situations. (Windows only.)
</member>
+ <member name="display/window/ios/hide_home_indicator" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], the home indicator is hidden automatically. This only affects iOS devices without a physical home button.
+ </member>
<member name="editor/script_templates_search_path" type="String" setter="" getter="" default="&quot;res://script_templates&quot;">
</member>
<member name="editor/search_in_file_extensions" type="PoolStringArray" setter="" getter="" default="PoolStringArray( &quot;gd&quot;, &quot;shader&quot; )">
diff --git a/main/main.cpp b/main/main.cpp
index cdaee06135..3ac343a3c5 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1126,6 +1126,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(GLOBAL_DEF("application/run/low_processor_mode_sleep_usec", 6900)); // Roughly 144 FPS
ProjectSettings::get_singleton()->set_custom_property_info("application/run/low_processor_mode_sleep_usec", PropertyInfo(Variant::INT, "application/run/low_processor_mode_sleep_usec", PROPERTY_HINT_RANGE, "0,33200,1,or_greater")); // No negative numbers
+ GLOBAL_DEF("display/window/ios/hide_home_indicator", true);
+
Engine::get_singleton()->set_frame_delay(frame_delay);
message_queue = memnew(MessageQueue);
diff --git a/platform/iphone/view_controller.h b/platform/iphone/view_controller.h
index 68e3bc64fc..c2ef95acb5 100644
--- a/platform/iphone/view_controller.h
+++ b/platform/iphone/view_controller.h
@@ -45,4 +45,6 @@
- (BOOL)prefersStatusBarHidden;
+- (BOOL)prefersHomeIndicatorAutoHidden;
+
@end
diff --git a/platform/iphone/view_controller.mm b/platform/iphone/view_controller.mm
index e52ad92bf2..5bdce6277b 100644
--- a/platform/iphone/view_controller.mm
+++ b/platform/iphone/view_controller.mm
@@ -32,6 +32,8 @@
#include "os_iphone.h"
+#include "core/project_settings.h"
+
extern "C" {
int add_path(int, char **);
@@ -129,6 +131,14 @@ int add_cmdline(int p_argc, char **p_args) {
return YES;
}
+- (BOOL)prefersHomeIndicatorAutoHidden {
+ if (GLOBAL_GET("display/window/ios/hide_home_indicator")) {
+ return YES;
+ } else {
+ return NO;
+ }
+}
+
#ifdef GAME_CENTER_ENABLED
- (void)gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController {
//[gameCenterViewController dismissViewControllerAnimated:YES completion:^{GameCenter::get_singleton()->game_center_closed();}];//version for signaling when overlay is completely gone