From 6104f94fa6da73e2e75fe240a3c59605f1b03c02 Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sat, 5 Oct 2019 11:29:10 +0300 Subject: [PATCH 1/2] [ios] fix overlapping drawing surface with the "safe area" UI no longer appears under the "notch" of new iPhones --- xbmc/platform/darwin/ios/XBMCController.mm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/xbmc/platform/darwin/ios/XBMCController.mm b/xbmc/platform/darwin/ios/XBMCController.mm index 308ba526a5ecc..40b3306c515ea 100644 --- a/xbmc/platform/darwin/ios/XBMCController.mm +++ b/xbmc/platform/darwin/ios/XBMCController.mm @@ -620,6 +620,12 @@ - (void)viewWillAppear:(BOOL)animated [super viewWillAppear:animated]; } //-------------------------------------------------------------- +- (void)viewSafeAreaInsetsDidChange NS_AVAILABLE_IOS(11_0) +{ + [super viewSafeAreaInsetsDidChange]; + m_glView.frame = UIEdgeInsetsInsetRect(self.view.bounds, self.view.safeAreaInsets); +} +//-------------------------------------------------------------- -(void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; From b9fbbc1956eb7ef2ba4cce05c400ebdc682ccd0c Mon Sep 17 00:00:00 2001 From: Andrey Filipenkov Date: Sun, 6 Oct 2019 00:10:00 +0300 Subject: [PATCH 2/2] [ios] fix overlapping keyboard helper view with the "safe area" --- xbmc/platform/darwin/ios/IOSKeyboard.mm | 4 +--- xbmc/platform/darwin/ios/XBMCController.h | 1 + xbmc/platform/darwin/ios/XBMCController.mm | 11 ++++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/xbmc/platform/darwin/ios/IOSKeyboard.mm b/xbmc/platform/darwin/ios/IOSKeyboard.mm index daf5c973189de..6241a9a32f8ae 100644 --- a/xbmc/platform/darwin/ios/IOSKeyboard.mm +++ b/xbmc/platform/darwin/ios/IOSKeyboard.mm @@ -29,9 +29,7 @@ return false; // assume we are only drawn on the mainscreen ever! - UIScreen *pCurrentScreen = [UIScreen mainScreen]; - CGRect keyboardFrame = CGRectMake(0, 0, pCurrentScreen.bounds.size.width, pCurrentScreen.bounds.size.height); -// LOG(@"kb: kb frame: %@", NSStringFromCGRect(keyboardFrame)); + auto keyboardFrame = [g_xbmcController fullscreenSubviewFrame]; //create the keyboardview g_pIosKeyboard = [[KeyboardView alloc] initWithFrame:keyboardFrame]; diff --git a/xbmc/platform/darwin/ios/XBMCController.h b/xbmc/platform/darwin/ios/XBMCController.h index 77e59864add1f..8fffbefc3cafd 100644 --- a/xbmc/platform/darwin/ios/XBMCController.h +++ b/xbmc/platform/darwin/ios/XBMCController.h @@ -66,6 +66,7 @@ typedef enum - (void) setIOSNowPlayingInfo:(NSDictionary *)info; - (void) sendKey: (XBMCKey) key; - (void) observeDefaultCenterStuff: (NSNotification *) notification; +- (CGRect)fullscreenSubviewFrame; - (void) setFramebuffer; - (bool) presentFramebuffer; - (CGSize) getScreenSize; diff --git a/xbmc/platform/darwin/ios/XBMCController.mm b/xbmc/platform/darwin/ios/XBMCController.mm index 40b3306c515ea..b07c617d089a9 100644 --- a/xbmc/platform/darwin/ios/XBMCController.mm +++ b/xbmc/platform/darwin/ios/XBMCController.mm @@ -623,7 +623,7 @@ - (void)viewWillAppear:(BOOL)animated - (void)viewSafeAreaInsetsDidChange NS_AVAILABLE_IOS(11_0) { [super viewSafeAreaInsetsDidChange]; - m_glView.frame = UIEdgeInsetsInsetRect(self.view.bounds, self.view.safeAreaInsets); + m_glView.frame = [self fullscreenSubviewFrame]; } //-------------------------------------------------------------- -(void) viewDidAppear:(BOOL)animated @@ -682,6 +682,15 @@ - (void)viewDidUnload [super viewDidUnload]; } //-------------------------------------------------------------- +- (CGRect)fullscreenSubviewFrame +{ + auto rect = self.view.bounds; + if (@available(ios 11.0, *)) + return UIEdgeInsetsInsetRect(rect, self.view.safeAreaInsets); + else + return rect; +} +//-------------------------------------------------------------- - (void) setFramebuffer { [m_glView setFramebuffer];