e140f2a1c0a978316e3b9e1d70fc5408ed710910 — Elias Naur a month ago ac6f0c3
ui/app: (iOS) check for first responder status before changing focus

Signed-off-by: Elias Naur <mail@eliasnaur.com>
1 files changed, 20 insertions(+), 6 deletions(-)

M ui/app/os_ios.m
M ui/app/os_ios.m => ui/app/os_ios.m +20 -6
@@ 167,19 167,33 @@   - (void)willMoveToWindow:(UIWindow *)newWindow {
  	if (self.window != nil) {
- 		[[NSNotificationCenter defaultCenter] removeObserver:self name:UIWindowDidBecomeKeyNotification object:self.window];
- 		[[NSNotificationCenter defaultCenter] removeObserver:self name:UIWindowDidResignKeyNotification object:self.window];
+ 		[[NSNotificationCenter defaultCenter] removeObserver:self
+ 														name:UIWindowDidBecomeKeyNotification
+ 													  object:self.window];
+ 		[[NSNotificationCenter defaultCenter] removeObserver:self
+ 														name:UIWindowDidResignKeyNotification
+ 													  object:self.window];
  	}
- 	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onWindowDidBecomeKey:) name:UIWindowDidBecomeKeyNotification object:newWindow];
- 	[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onWindowDidResignKey:) name:UIWindowDidResignKeyNotification object:newWindow];
+ 	[[NSNotificationCenter defaultCenter] addObserver:self
+ 											 selector:@selector(onWindowDidBecomeKey:)
+ 												 name:UIWindowDidBecomeKeyNotification
+ 											   object:newWindow];
+ 	[[NSNotificationCenter defaultCenter] addObserver:self
+ 											 selector:@selector(onWindowDidResignKey:)
+ 												 name:UIWindowDidResignKeyNotification
+ 											   object:newWindow];
  }
  
  - (void)onWindowDidBecomeKey:(NSNotification *)note {
- 	onFocus((__bridge CFTypeRef)self, YES);
+ 	if (self.isFirstResponder) {
+ 		onFocus((__bridge CFTypeRef)self, YES);
+ 	}
  }
  
  - (void)onWindowDidResignKey:(NSNotification *)note {
- 	onFocus((__bridge CFTypeRef)self, NO);
+ 	if (self.isFirstResponder) {
+ 		onFocus((__bridge CFTypeRef)self, NO);
+ 	}
  }
  
  - (void)dealloc {