{"action":"closed","number":4848,"pull_request":{"url":"https://api.github.com/repos/godotengine/godot/pulls/4848","id":71775258,"html_url":"https://github.com/godotengine/godot/pull/4848","diff_url":"https://github.com/godotengine/godot/pull/4848.diff","patch_url":"https://github.com/godotengine/godot/pull/4848.patch","issue_url":"https://api.github.com/repos/godotengine/godot/issues/4848","number":4848,"state":"closed","locked":false,"title":"MenuButton: Avoid key event propagation if handled as hotkey","user":{"login":"neikeq","id":7718100,"avatar_url":"https://avatars.githubusercontent.com/u/7718100?v=3","gravatar_id":"","url":"https://api.github.com/users/neikeq","html_url":"https://github.com/neikeq","followers_url":"https://api.github.com/users/neikeq/followers","following_url":"https://api.github.com/users/neikeq/following{/other_user}","gists_url":"https://api.github.com/users/neikeq/gists{/gist_id}","starred_url":"https://api.github.com/users/neikeq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neikeq/subscriptions","organizations_url":"https://api.github.com/users/neikeq/orgs","repos_url":"https://api.github.com/users/neikeq/repos","events_url":"https://api.github.com/users/neikeq/events{/privacy}","received_events_url":"https://api.github.com/users/neikeq/received_events","type":"User","site_admin":false},"body":"Just avoid propagating it when already handled.\r\n\r\n~~e.g: When the 2D editor and the shader editor are both visible, pressing <kbd>CTRL+F</kbd> with a node selected, both editors will handle the event, no matter which one is focused. The 2D editor will do _\"Frame Selection\"_ and the shader editor will popup the search dialog.~~\r\n\r\n~~#### Do Not Merge!:\r\nThis PR is incomplete. It just avoids propagating the event if it was used. However, there is still other bug with `MenuButton` that need to be fixed. Until it's fixed, this PR may result in an even worse usability problem.\r\nThat bug is that there is no priority when propagating  unhandled key events to `MenuButton`s. Therefore, considering the previous example, if this PR is merged, the events will always be used by the shader editor's menu instead of the menu whose editor is focused, which is the expected behaviour.\r\nA possible fix could be to create a relation between the `MenuButton` and that editor/Container, and handle the hotkey event only if that editor is a parent of the focused Control (`is_a_parent_of()`). I don't know what would be the performance penalty though.\r\nHere is an issue about this last bug: #4856~~\r\n","created_at":"2016-05-27T21:29:14Z","updated_at":"2016-07-16T12:45:09Z","closed_at":"2016-07-16T12:45:09Z","merged_at":"2016-07-16T12:45:09Z","merge_commit_sha":"e2ad08c56b41ce5e33e0ed3f702f6133eb58f618","assignee":{"login":"neikeq","id":7718100,"avatar_url":"https://avatars.githubusercontent.com/u/7718100?v=3","gravatar_id":"","url":"https://api.github.com/users/neikeq","html_url":"https://github.com/neikeq","followers_url":"https://api.github.com/users/neikeq/followers","following_url":"https://api.github.com/users/neikeq/following{/other_user}","gists_url":"https://api.github.com/users/neikeq/gists{/gist_id}","starred_url":"https://api.github.com/users/neikeq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neikeq/subscriptions","organizations_url":"https://api.github.com/users/neikeq/orgs","repos_url":"https://api.github.com/users/neikeq/repos","events_url":"https://api.github.com/users/neikeq/events{/privacy}","received_events_url":"https://api.github.com/users/neikeq/received_events","type":"User","site_admin":false},"assignees":[{"login":"neikeq","id":7718100,"avatar_url":"https://avatars.githubusercontent.com/u/7718100?v=3","gravatar_id":"","url":"https://api.github.com/users/neikeq","html_url":"https://github.com/neikeq","followers_url":"https://api.github.com/users/neikeq/followers","following_url":"https://api.github.com/users/neikeq/following{/other_user}","gists_url":"https://api.github.com/users/neikeq/gists{/gist_id}","starred_url":"https://api.github.com/users/neikeq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neikeq/subscriptions","organizations_url":"https://api.github.com/users/neikeq/orgs","repos_url":"https://api.github.com/users/neikeq/repos","events_url":"https://api.github.com/users/neikeq/events{/privacy}","received_events_url":"https://api.github.com/users/neikeq/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/godotengine/godot/milestones/5","html_url":"https://github.com/godotengine/godot/milestones/2.1","labels_url":"https://api.github.com/repos/godotengine/godot/milestones/5/labels","id":1449703,"number":5,"title":"2.1","description":"","creator":{"login":"akien-mga","id":4701338,"avatar_url":"https://avatars.githubusercontent.com/u/4701338?v=3","gravatar_id":"","url":"https://api.github.com/users/akien-mga","html_url":"https://github.com/akien-mga","followers_url":"https://api.github.com/users/akien-mga/followers","following_url":"https://api.github.com/users/akien-mga/following{/other_user}","gists_url":"https://api.github.com/users/akien-mga/gists{/gist_id}","starred_url":"https://api.github.com/users/akien-mga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akien-mga/subscriptions","organizations_url":"https://api.github.com/users/akien-mga/orgs","repos_url":"https://api.github.com/users/akien-mga/repos","events_url":"https://api.github.com/users/akien-mga/events{/privacy}","received_events_url":"https://api.github.com/users/akien-mga/received_events","type":"User","site_admin":false},"open_issues":113,"closed_issues":684,"state":"open","created_at":"2015-12-08T11:42:22Z","updated_at":"2016-07-16T12:45:09Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/godotengine/godot/pulls/4848/commits","review_comments_url":"https://api.github.com/repos/godotengine/godot/pulls/4848/comments","review_comment_url":"https://api.github.com/repos/godotengine/godot/pulls/comments{/number}","comments_url":"https://api.github.com/repos/godotengine/godot/issues/4848/comments","statuses_url":"https://api.github.com/repos/godotengine/godot/statuses/f9d1e03018bc9fa7d32fd99cb21d5bf58140c265","head":{"label":"neikeq:menu-accept-event","ref":"menu-accept-event","sha":"f9d1e03018bc9fa7d32fd99cb21d5bf58140c265","user":{"login":"neikeq","id":7718100,"avatar_url":"https://avatars.githubusercontent.com/u/7718100?v=3","gravatar_id":"","url":"https://api.github.com/users/neikeq","html_url":"https://github.com/neikeq","followers_url":"https://api.github.com/users/neikeq/followers","following_url":"https://api.github.com/users/neikeq/following{/other_user}","gists_url":"https://api.github.com/users/neikeq/gists{/gist_id}","starred_url":"https://api.github.com/users/neikeq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neikeq/subscriptions","organizations_url":"https://api.github.com/users/neikeq/orgs","repos_url":"https://api.github.com/users/neikeq/repos","events_url":"https://api.github.com/users/neikeq/events{/privacy}","received_events_url":"https://api.github.com/users/neikeq/received_events","type":"User","site_admin":false},"repo":{"id":31860636,"name":"godot","full_name":"neikeq/godot","owner":{"login":"neikeq","id":7718100,"avatar_url":"https://avatars.githubusercontent.com/u/7718100?v=3","gravatar_id":"","url":"https://api.github.com/users/neikeq","html_url":"https://github.com/neikeq","followers_url":"https://api.github.com/users/neikeq/followers","following_url":"https://api.github.com/users/neikeq/following{/other_user}","gists_url":"https://api.github.com/users/neikeq/gists{/gist_id}","starred_url":"https://api.github.com/users/neikeq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neikeq/subscriptions","organizations_url":"https://api.github.com/users/neikeq/orgs","repos_url":"https://api.github.com/users/neikeq/repos","events_url":"https://api.github.com/users/neikeq/events{/privacy}","received_events_url":"https://api.github.com/users/neikeq/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/neikeq/godot","description":"Godot Game Engine","fork":true,"url":"https://api.github.com/repos/neikeq/godot","forks_url":"https://api.github.com/repos/neikeq/godot/forks","keys_url":"https://api.github.com/repos/neikeq/godot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/neikeq/godot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/neikeq/godot/teams","hooks_url":"https://api.github.com/repos/neikeq/godot/hooks","issue_events_url":"https://api.github.com/repos/neikeq/godot/issues/events{/number}","events_url":"https://api.github.com/repos/neikeq/godot/events","assignees_url":"https://api.github.com/repos/neikeq/godot/assignees{/user}","branches_url":"https://api.github.com/repos/neikeq/godot/branches{/branch}","tags_url":"https://api.github.com/repos/neikeq/godot/tags","blobs_url":"https://api.github.com/repos/neikeq/godot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/neikeq/godot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/neikeq/godot/git/refs{/sha}","trees_url":"https://api.github.com/repos/neikeq/godot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/neikeq/godot/statuses/{sha}","languages_url":"https://api.github.com/repos/neikeq/godot/languages","stargazers_url":"https://api.github.com/repos/neikeq/godot/stargazers","contributors_url":"https://api.github.com/repos/neikeq/godot/contributors","subscribers_url":"https://api.github.com/repos/neikeq/godot/subscribers","subscription_url":"https://api.github.com/repos/neikeq/godot/subscription","commits_url":"https://api.github.com/repos/neikeq/godot/commits{/sha}","git_commits_url":"https://api.github.com/repos/neikeq/godot/git/commits{/sha}","comments_url":"https://api.github.com/repos/neikeq/godot/comments{/number}","issue_comment_url":"https://api.github.com/repos/neikeq/godot/issues/comments{/number}","contents_url":"https://api.github.com/repos/neikeq/godot/contents/{+path}","compare_url":"https://api.github.com/repos/neikeq/godot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/neikeq/godot/merges","archive_url":"https://api.github.com/repos/neikeq/godot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/neikeq/godot/downloads","issues_url":"https://api.github.com/repos/neikeq/godot/issues{/number}","pulls_url":"https://api.github.com/repos/neikeq/godot/pulls{/number}","milestones_url":"https://api.github.com/repos/neikeq/godot/milestones{/number}","notifications_url":"https://api.github.com/repos/neikeq/godot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/neikeq/godot/labels{/name}","releases_url":"https://api.github.com/repos/neikeq/godot/releases{/id}","deployments_url":"https://api.github.com/repos/neikeq/godot/deployments","created_at":"2015-03-08T18:35:47Z","updated_at":"2016-05-30T22:29:10Z","pushed_at":"2016-07-16T12:37:23Z","git_url":"git://github.com/neikeq/godot.git","ssh_url":"git@github.com:neikeq/godot.git","clone_url":"https://github.com/neikeq/godot.git","svn_url":"https://github.com/neikeq/godot","homepage":null,"size":103754,"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":"godotengine:master","ref":"master","sha":"24d86e33a6ef0d787a37639831ae582a397d821c","user":{"login":"godotengine","id":6318500,"avatar_url":"https://avatars.githubusercontent.com/u/6318500?v=3","gravatar_id":"","url":"https://api.github.com/users/godotengine","html_url":"https://github.com/godotengine","followers_url":"https://api.github.com/users/godotengine/followers","following_url":"https://api.github.com/users/godotengine/following{/other_user}","gists_url":"https://api.github.com/users/godotengine/gists{/gist_id}","starred_url":"https://api.github.com/users/godotengine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/godotengine/subscriptions","organizations_url":"https://api.github.com/users/godotengine/orgs","repos_url":"https://api.github.com/users/godotengine/repos","events_url":"https://api.github.com/users/godotengine/events{/privacy}","received_events_url":"https://api.github.com/users/godotengine/received_events","type":"Organization","site_admin":false},"repo":{"id":15634981,"name":"godot","full_name":"godotengine/godot","owner":{"login":"godotengine","id":6318500,"avatar_url":"https://avatars.githubusercontent.com/u/6318500?v=3","gravatar_id":"","url":"https://api.github.com/users/godotengine","html_url":"https://github.com/godotengine","followers_url":"https://api.github.com/users/godotengine/followers","following_url":"https://api.github.com/users/godotengine/following{/other_user}","gists_url":"https://api.github.com/users/godotengine/gists{/gist_id}","starred_url":"https://api.github.com/users/godotengine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/godotengine/subscriptions","organizations_url":"https://api.github.com/users/godotengine/orgs","repos_url":"https://api.github.com/users/godotengine/repos","events_url":"https://api.github.com/users/godotengine/events{/privacy}","received_events_url":"https://api.github.com/users/godotengine/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/godotengine/godot","description":"Godot Engine – Multi-platform 2D and 3D game engine","fork":false,"url":"https://api.github.com/repos/godotengine/godot","forks_url":"https://api.github.com/repos/godotengine/godot/forks","keys_url":"https://api.github.com/repos/godotengine/godot/keys{/key_id}","collaborators_url":"https://api.github.com/repos/godotengine/godot/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/godotengine/godot/teams","hooks_url":"https://api.github.com/repos/godotengine/godot/hooks","issue_events_url":"https://api.github.com/repos/godotengine/godot/issues/events{/number}","events_url":"https://api.github.com/repos/godotengine/godot/events","assignees_url":"https://api.github.com/repos/godotengine/godot/assignees{/user}","branches_url":"https://api.github.com/repos/godotengine/godot/branches{/branch}","tags_url":"https://api.github.com/repos/godotengine/godot/tags","blobs_url":"https://api.github.com/repos/godotengine/godot/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/godotengine/godot/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/godotengine/godot/git/refs{/sha}","trees_url":"https://api.github.com/repos/godotengine/godot/git/trees{/sha}","statuses_url":"https://api.github.com/repos/godotengine/godot/statuses/{sha}","languages_url":"https://api.github.com/repos/godotengine/godot/languages","stargazers_url":"https://api.github.com/repos/godotengine/godot/stargazers","contributors_url":"https://api.github.com/repos/godotengine/godot/contributors","subscribers_url":"https://api.github.com/repos/godotengine/godot/subscribers","subscription_url":"https://api.github.com/repos/godotengine/godot/subscription","commits_url":"https://api.github.com/repos/godotengine/godot/commits{/sha}","git_commits_url":"https://api.github.com/repos/godotengine/godot/git/commits{/sha}","comments_url":"https://api.github.com/repos/godotengine/godot/comments{/number}","issue_comment_url":"https://api.github.com/repos/godotengine/godot/issues/comments{/number}","contents_url":"https://api.github.com/repos/godotengine/godot/contents/{+path}","compare_url":"https://api.github.com/repos/godotengine/godot/compare/{base}...{head}","merges_url":"https://api.github.com/repos/godotengine/godot/merges","archive_url":"https://api.github.com/repos/godotengine/godot/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/godotengine/godot/downloads","issues_url":"https://api.github.com/repos/godotengine/godot/issues{/number}","pulls_url":"https://api.github.com/repos/godotengine/godot/pulls{/number}","milestones_url":"https://api.github.com/repos/godotengine/godot/milestones{/number}","notifications_url":"https://api.github.com/repos/godotengine/godot/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/godotengine/godot/labels{/name}","releases_url":"https://api.github.com/repos/godotengine/godot/releases{/id}","deployments_url":"https://api.github.com/repos/godotengine/godot/deployments","created_at":"2014-01-04T16:05:36Z","updated_at":"2016-07-16T02:10:23Z","pushed_at":"2016-07-16T12:45:09Z","git_url":"git://github.com/godotengine/godot.git","ssh_url":"git@github.com:godotengine/godot.git","clone_url":"https://github.com/godotengine/godot.git","svn_url":"https://github.com/godotengine/godot","homepage":"https://godotengine.org","size":147474,"stargazers_count":6136,"watchers_count":6136,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1634,"mirror_url":null,"open_issues_count":1139,"forks":1634,"open_issues":1139,"watchers":6136,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/godotengine/godot/pulls/4848"},"html":{"href":"https://github.com/godotengine/godot/pull/4848"},"issue":{"href":"https://api.github.com/repos/godotengine/godot/issues/4848"},"comments":{"href":"https://api.github.com/repos/godotengine/godot/issues/4848/comments"},"review_comments":{"href":"https://api.github.com/repos/godotengine/godot/pulls/4848/comments"},"review_comment":{"href":"https://api.github.com/repos/godotengine/godot/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/godotengine/godot/pulls/4848/commits"},"statuses":{"href":"https://api.github.com/repos/godotengine/godot/statuses/f9d1e03018bc9fa7d32fd99cb21d5bf58140c265"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"akien-mga","id":4701338,"avatar_url":"https://avatars.githubusercontent.com/u/4701338?v=3","gravatar_id":"","url":"https://api.github.com/users/akien-mga","html_url":"https://github.com/akien-mga","followers_url":"https://api.github.com/users/akien-mga/followers","following_url":"https://api.github.com/users/akien-mga/following{/other_user}","gists_url":"https://api.github.com/users/akien-mga/gists{/gist_id}","starred_url":"https://api.github.com/users/akien-mga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akien-mga/subscriptions","organizations_url":"https://api.github.com/users/akien-mga/orgs","repos_url":"https://api.github.com/users/akien-mga/repos","events_url":"https://api.github.com/users/akien-mga/events{/privacy}","received_events_url":"https://api.github.com/users/akien-mga/received_events","type":"User","site_admin":false},"comments":6,"review_comments":0,"commits":1,"additions":2,"deletions":1,"changed_files":1}}
{"actor":{"display_login":"akien-mga"}}