{"action":"created","comment":{"url":"https://api.github.com/repos/flutter/engine/pulls/comments/98767723","pull_request_review_id":19420298,"id":98767723,"diff_hunk":"@@ -490,6 +490,34 @@ - (void)dealloc {\n   [super dealloc];\n }\n \n+#pragma mark - Status Bar touch event handling\n+\n+// Standard iOS status bar height in pixels.\n+constexpr CGFloat kStandardStatusBarHeight = 20.0;\n+\n+- (void)handleStatusBarTouches:(UIEvent *)event {\n+  // If the status bar is double-height, don't handle status bar taps. iOS\n+  // should open the app associated with the status bar.\n+  CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;\n+  if (statusBarFrame.size.height != kStandardStatusBarHeight) {\n+    return;\n+  }\n+\n+  // If we detect a touch in the status bar, synthesize a fake touch begin/end.\n+  for (UITouch *touch in event.allTouches) {\n+    if (touch.phase == UITouchPhaseBegan && touch.tapCount > 0) {\n+      CGPoint windowLoc = [touch locationInView:nil];\n+      CGPoint screenLoc = [touch.window convertPoint:windowLoc toWindow:nil];\n+      if (CGRectContainsPoint(statusBarFrame, screenLoc)) {\n+        NSSet *statusbarTouches = [NSSet setWithObject:touch];\n+        [self dispatchTouches:statusbarTouches phase:UITouchPhaseBegan];\n+        [self dispatchTouches:statusbarTouches phase:UITouchPhaseEnded];","path":"shell/platform/darwin/ios/framework/Source/FlutterViewController.mm","position":25,"original_position":25,"commit_id":"7077366e11d873ce7e875af9d31d006952f40a07","original_commit_id":"7077366e11d873ce7e875af9d31d006952f40a07","user":{"login":"chinmaygarde","id":44085,"avatar_url":"https://avatars.githubusercontent.com/u/44085?v=3","gravatar_id":"","url":"https://api.github.com/users/chinmaygarde","html_url":"https://github.com/chinmaygarde","followers_url":"https://api.github.com/users/chinmaygarde/followers","following_url":"https://api.github.com/users/chinmaygarde/following{/other_user}","gists_url":"https://api.github.com/users/chinmaygarde/gists{/gist_id}","starred_url":"https://api.github.com/users/chinmaygarde/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chinmaygarde/subscriptions","organizations_url":"https://api.github.com/users/chinmaygarde/orgs","repos_url":"https://api.github.com/users/chinmaygarde/repos","events_url":"https://api.github.com/users/chinmaygarde/events{/privacy}","received_events_url":"https://api.github.com/users/chinmaygarde/received_events","type":"User","site_admin":false},"body":"It is a bit weird that if we ever check the phase of the touch passed into `dispatchTouches:`, it will read UITouchPhaseBegan but the second argument is UITouchPhaseEnded. Oh well. ","created_at":"2017-01-31T20:54:24Z","updated_at":"2017-01-31T20:54:35Z","html_url":"https://github.com/flutter/engine/pull/3375#discussion_r98767723","pull_request_url":"https://api.github.com/repos/flutter/engine/pulls/3375","_links":{"self":{"href":"https://api.github.com/repos/flutter/engine/pulls/comments/98767723"},"html":{"href":"https://github.com/flutter/engine/pull/3375#discussion_r98767723"},"pull_request":{"href":"https://api.github.com/repos/flutter/engine/pulls/3375"}}},"pull_request":{"url":"https://api.github.com/repos/flutter/engine/pulls/3375","id":103807925,"html_url":"https://github.com/flutter/engine/pull/3375","diff_url":"https://github.com/flutter/engine/pull/3375.diff","patch_url":"https://github.com/flutter/engine/pull/3375.patch","issue_url":"https://api.github.com/repos/flutter/engine/issues/3375","number":3375,"state":"open","locked":false,"title":"Detect iOS statusbar touch events","user":{"login":"cbracken","id":351029,"avatar_url":"https://avatars.githubusercontent.com/u/351029?v=3","gravatar_id":"","url":"https://api.github.com/users/cbracken","html_url":"https://github.com/cbracken","followers_url":"https://api.github.com/users/cbracken/followers","following_url":"https://api.github.com/users/cbracken/following{/other_user}","gists_url":"https://api.github.com/users/cbracken/gists{/gist_id}","starred_url":"https://api.github.com/users/cbracken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbracken/subscriptions","organizations_url":"https://api.github.com/users/cbracken/orgs","repos_url":"https://api.github.com/users/cbracken/repos","events_url":"https://api.github.com/users/cbracken/events{/privacy}","received_events_url":"https://api.github.com/users/cbracken/received_events","type":"User","site_admin":false},"body":"","created_at":"2017-01-30T19:56:37Z","updated_at":"2017-01-31T20:54:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4501eda73559bb051c98597db2ed3019aac6fee0","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/flutter/engine/pulls/3375/commits","review_comments_url":"https://api.github.com/repos/flutter/engine/pulls/3375/comments","review_comment_url":"https://api.github.com/repos/flutter/engine/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flutter/engine/issues/3375/comments","statuses_url":"https://api.github.com/repos/flutter/engine/statuses/7077366e11d873ce7e875af9d31d006952f40a07","head":{"label":"cbracken:statusbarTouch","ref":"statusbarTouch","sha":"7077366e11d873ce7e875af9d31d006952f40a07","user":{"login":"cbracken","id":351029,"avatar_url":"https://avatars.githubusercontent.com/u/351029?v=3","gravatar_id":"","url":"https://api.github.com/users/cbracken","html_url":"https://github.com/cbracken","followers_url":"https://api.github.com/users/cbracken/followers","following_url":"https://api.github.com/users/cbracken/following{/other_user}","gists_url":"https://api.github.com/users/cbracken/gists{/gist_id}","starred_url":"https://api.github.com/users/cbracken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbracken/subscriptions","organizations_url":"https://api.github.com/users/cbracken/orgs","repos_url":"https://api.github.com/users/cbracken/repos","events_url":"https://api.github.com/users/cbracken/events{/privacy}","received_events_url":"https://api.github.com/users/cbracken/received_events","type":"User","site_admin":false},"repo":{"id":61756020,"name":"engine","full_name":"cbracken/engine","owner":{"login":"cbracken","id":351029,"avatar_url":"https://avatars.githubusercontent.com/u/351029?v=3","gravatar_id":"","url":"https://api.github.com/users/cbracken","html_url":"https://github.com/cbracken","followers_url":"https://api.github.com/users/cbracken/followers","following_url":"https://api.github.com/users/cbracken/following{/other_user}","gists_url":"https://api.github.com/users/cbracken/gists{/gist_id}","starred_url":"https://api.github.com/users/cbracken/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cbracken/subscriptions","organizations_url":"https://api.github.com/users/cbracken/orgs","repos_url":"https://api.github.com/users/cbracken/repos","events_url":"https://api.github.com/users/cbracken/events{/privacy}","received_events_url":"https://api.github.com/users/cbracken/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cbracken/engine","description":"The Flutter engine","fork":true,"url":"https://api.github.com/repos/cbracken/engine","forks_url":"https://api.github.com/repos/cbracken/engine/forks","keys_url":"https://api.github.com/repos/cbracken/engine/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cbracken/engine/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cbracken/engine/teams","hooks_url":"https://api.github.com/repos/cbracken/engine/hooks","issue_events_url":"https://api.github.com/repos/cbracken/engine/issues/events{/number}","events_url":"https://api.github.com/repos/cbracken/engine/events","assignees_url":"https://api.github.com/repos/cbracken/engine/assignees{/user}","branches_url":"https://api.github.com/repos/cbracken/engine/branches{/branch}","tags_url":"https://api.github.com/repos/cbracken/engine/tags","blobs_url":"https://api.github.com/repos/cbracken/engine/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cbracken/engine/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cbracken/engine/git/refs{/sha}","trees_url":"https://api.github.com/repos/cbracken/engine/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cbracken/engine/statuses/{sha}","languages_url":"https://api.github.com/repos/cbracken/engine/languages","stargazers_url":"https://api.github.com/repos/cbracken/engine/stargazers","contributors_url":"https://api.github.com/repos/cbracken/engine/contributors","subscribers_url":"https://api.github.com/repos/cbracken/engine/subscribers","subscription_url":"https://api.github.com/repos/cbracken/engine/subscription","commits_url":"https://api.github.com/repos/cbracken/engine/commits{/sha}","git_commits_url":"https://api.github.com/repos/cbracken/engine/git/commits{/sha}","comments_url":"https://api.github.com/repos/cbracken/engine/comments{/number}","issue_comment_url":"https://api.github.com/repos/cbracken/engine/issues/comments{/number}","contents_url":"https://api.github.com/repos/cbracken/engine/contents/{+path}","compare_url":"https://api.github.com/repos/cbracken/engine/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cbracken/engine/merges","archive_url":"https://api.github.com/repos/cbracken/engine/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cbracken/engine/downloads","issues_url":"https://api.github.com/repos/cbracken/engine/issues{/number}","pulls_url":"https://api.github.com/repos/cbracken/engine/pulls{/number}","milestones_url":"https://api.github.com/repos/cbracken/engine/milestones{/number}","notifications_url":"https://api.github.com/repos/cbracken/engine/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cbracken/engine/labels{/name}","releases_url":"https://api.github.com/repos/cbracken/engine/releases{/id}","deployments_url":"https://api.github.com/repos/cbracken/engine/deployments","created_at":"2016-06-22T22:37:07Z","updated_at":"2016-06-22T22:37:18Z","pushed_at":"2017-01-31T18:30:53Z","git_url":"git://github.com/cbracken/engine.git","ssh_url":"git@github.com:cbracken/engine.git","clone_url":"https://github.com/cbracken/engine.git","svn_url":"https://github.com/cbracken/engine","homepage":"http://flutter.io","size":85818,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flutter:master","ref":"master","sha":"d92d4c1b037bce54f950bba48f002e2c61e27221","user":{"login":"flutter","id":14101776,"avatar_url":"https://avatars.githubusercontent.com/u/14101776?v=3","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"repo":{"id":39211337,"name":"engine","full_name":"flutter/engine","owner":{"login":"flutter","id":14101776,"avatar_url":"https://avatars.githubusercontent.com/u/14101776?v=3","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/flutter/engine","description":"The Flutter engine","fork":false,"url":"https://api.github.com/repos/flutter/engine","forks_url":"https://api.github.com/repos/flutter/engine/forks","keys_url":"https://api.github.com/repos/flutter/engine/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flutter/engine/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flutter/engine/teams","hooks_url":"https://api.github.com/repos/flutter/engine/hooks","issue_events_url":"https://api.github.com/repos/flutter/engine/issues/events{/number}","events_url":"https://api.github.com/repos/flutter/engine/events","assignees_url":"https://api.github.com/repos/flutter/engine/assignees{/user}","branches_url":"https://api.github.com/repos/flutter/engine/branches{/branch}","tags_url":"https://api.github.com/repos/flutter/engine/tags","blobs_url":"https://api.github.com/repos/flutter/engine/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flutter/engine/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flutter/engine/git/refs{/sha}","trees_url":"https://api.github.com/repos/flutter/engine/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flutter/engine/statuses/{sha}","languages_url":"https://api.github.com/repos/flutter/engine/languages","stargazers_url":"https://api.github.com/repos/flutter/engine/stargazers","contributors_url":"https://api.github.com/repos/flutter/engine/contributors","subscribers_url":"https://api.github.com/repos/flutter/engine/subscribers","subscription_url":"https://api.github.com/repos/flutter/engine/subscription","commits_url":"https://api.github.com/repos/flutter/engine/commits{/sha}","git_commits_url":"https://api.github.com/repos/flutter/engine/git/commits{/sha}","comments_url":"https://api.github.com/repos/flutter/engine/comments{/number}","issue_comment_url":"https://api.github.com/repos/flutter/engine/issues/comments{/number}","contents_url":"https://api.github.com/repos/flutter/engine/contents/{+path}","compare_url":"https://api.github.com/repos/flutter/engine/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flutter/engine/merges","archive_url":"https://api.github.com/repos/flutter/engine/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flutter/engine/downloads","issues_url":"https://api.github.com/repos/flutter/engine/issues{/number}","pulls_url":"https://api.github.com/repos/flutter/engine/pulls{/number}","milestones_url":"https://api.github.com/repos/flutter/engine/milestones{/number}","notifications_url":"https://api.github.com/repos/flutter/engine/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flutter/engine/labels{/name}","releases_url":"https://api.github.com/repos/flutter/engine/releases{/id}","deployments_url":"https://api.github.com/repos/flutter/engine/deployments","created_at":"2015-07-16T17:39:56Z","updated_at":"2017-01-22T14:03:47Z","pushed_at":"2017-01-31T19:43:54Z","git_url":"git://github.com/flutter/engine.git","ssh_url":"git@github.com:flutter/engine.git","clone_url":"https://github.com/flutter/engine.git","svn_url":"https://github.com/flutter/engine","homepage":"http://flutter.io","size":85829,"stargazers_count":932,"watchers_count":932,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":182,"mirror_url":null,"open_issues_count":5,"forks":182,"open_issues":5,"watchers":932,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flutter/engine/pulls/3375"},"html":{"href":"https://github.com/flutter/engine/pull/3375"},"issue":{"href":"https://api.github.com/repos/flutter/engine/issues/3375"},"comments":{"href":"https://api.github.com/repos/flutter/engine/issues/3375/comments"},"review_comments":{"href":"https://api.github.com/repos/flutter/engine/pulls/3375/comments"},"review_comment":{"href":"https://api.github.com/repos/flutter/engine/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flutter/engine/pulls/3375/commits"},"statuses":{"href":"https://api.github.com/repos/flutter/engine/statuses/7077366e11d873ce7e875af9d31d006952f40a07"}}}}
{"actor":{"display_login":"chinmaygarde"}}