{"action":"created","comment":{"url":"https://api.github.com/repos/endlessm/eos-desktop/pulls/comments/90009352","pull_request_review_id":10506525,"id":90009352,"diff_hunk":"@@ -739,6 +830,10 @@ shell_window_tracker_init (ShellWindowTracker *self)\n \n   self->launched_pid_to_app = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) g_object_unref);\n \n+  self->builder_to_app = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify) g_object_unref);","path":"src/shell-window-tracker.c","position":123,"original_position":123,"commit_id":"5ef0ec8d60bd344638cc9a0b112e7157ee949f7b","original_commit_id":"5ef0ec8d60bd344638cc9a0b112e7157ee949f7b","user":{"login":"cosimoc","id":13906,"avatar_url":"https://avatars.githubusercontent.com/u/13906?v=3","gravatar_id":"","url":"https://api.github.com/users/cosimoc","html_url":"https://github.com/cosimoc","followers_url":"https://api.github.com/users/cosimoc/followers","following_url":"https://api.github.com/users/cosimoc/following{/other_user}","gists_url":"https://api.github.com/users/cosimoc/gists{/gist_id}","starred_url":"https://api.github.com/users/cosimoc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cosimoc/subscriptions","organizations_url":"https://api.github.com/users/cosimoc/orgs","repos_url":"https://api.github.com/users/cosimoc/repos","events_url":"https://api.github.com/users/cosimoc/events{/privacy}","received_events_url":"https://api.github.com/users/cosimoc/received_events","type":"User","site_admin":false},"body":"Nothing ever refs what we inserts into this table, so we should not have `g_object_unref()` as the destroy function.\r\nHowever, you should make sure to remove the window also from this table when it's destroyed.","created_at":"2016-11-29T13:37:21Z","updated_at":"2016-11-29T13:38:44Z","html_url":"https://github.com/endlessm/eos-desktop/pull/194#discussion_r90009352","pull_request_url":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194","_links":{"self":{"href":"https://api.github.com/repos/endlessm/eos-desktop/pulls/comments/90009352"},"html":{"href":"https://github.com/endlessm/eos-desktop/pull/194#discussion_r90009352"},"pull_request":{"href":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194"}}},"pull_request":{"url":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194","id":91606953,"html_url":"https://github.com/endlessm/eos-desktop/pull/194","diff_url":"https://github.com/endlessm/eos-desktop/pull/194.diff","patch_url":"https://github.com/endlessm/eos-desktop/pull/194.patch","issue_url":"https://api.github.com/repos/endlessm/eos-desktop/issues/194","number":194,"state":"open","locked":false,"title":"T13608 \"Behind the Screen\" launcher and animation","user":{"login":"erikos","id":3714785,"avatar_url":"https://avatars.githubusercontent.com/u/3714785?v=3","gravatar_id":"","url":"https://api.github.com/users/erikos","html_url":"https://github.com/erikos","followers_url":"https://api.github.com/users/erikos/followers","following_url":"https://api.github.com/users/erikos/following{/other_user}","gists_url":"https://api.github.com/users/erikos/gists{/gist_id}","starred_url":"https://api.github.com/users/erikos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erikos/subscriptions","organizations_url":"https://api.github.com/users/erikos/orgs","repos_url":"https://api.github.com/users/erikos/repos","events_url":"https://api.github.com/users/erikos/events{/privacy}","received_events_url":"https://api.github.com/users/erikos/received_events","type":"User","site_admin":false},"body":"This is the work in the Shell for the \"Behind the Screen\" feature, what it does currently is:\r\n\r\nWhenever a Gedit app Window gets mapped, a button is drawn on top of that window. That association of the button and the window gets stored in a \"session\". We track size-changes and position-changes for that MetaWindow and keep that floating button at a fixed position, we do handle a window restack as well accordingly. \r\n\r\nThat button is a launcher for GNOME Builder. In that case we tell the shell-window-tracker about that launch and wait there for a given timeout until the Builder window appears. We handle that window then to not appear in places like alt-tab or the navigation bar. When the Builder Window appears in the mapping handle of the windowManager we store that association of the app and builder. As for the app we draw a button onto the window to be able to switch back to the app window. Same here, we do track size-changes and position-changes for that MetaWindow.\r\n\r\nWe keep track of the state, as in what Window is currently at the foreground. That way we can focus the right window when we do for example alt-tab, from an external app to the \"coding session\".\r\n\r\nWe do the cleanup for these trackings when we close the Builder app and the main app. One case not handled currently is when we close the main app, and the Builder app is still open. We have to discuss here first the best user interaction (have to handle possible changes in Builder etc).\r\n\r\nhttps://phabricator.endlessm.com/T13608\r\nhttps://phabricator.endlessm.com/T13628","created_at":"2016-10-31T13:15:50Z","updated_at":"2016-11-29T13:38:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ff574d9ab3da6af8a15bbe9f7c439c9c76edbcad","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194/commits","review_comments_url":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194/comments","review_comment_url":"https://api.github.com/repos/endlessm/eos-desktop/pulls/comments{/number}","comments_url":"https://api.github.com/repos/endlessm/eos-desktop/issues/194/comments","statuses_url":"https://api.github.com/repos/endlessm/eos-desktop/statuses/5ef0ec8d60bd344638cc9a0b112e7157ee949f7b","head":{"label":"endlessm:T13608","ref":"T13608","sha":"5ef0ec8d60bd344638cc9a0b112e7157ee949f7b","user":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"repo":{"id":32344042,"name":"eos-desktop","full_name":"endlessm/eos-desktop","owner":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/endlessm/eos-desktop","description":"Endless Desktop","fork":false,"url":"https://api.github.com/repos/endlessm/eos-desktop","forks_url":"https://api.github.com/repos/endlessm/eos-desktop/forks","keys_url":"https://api.github.com/repos/endlessm/eos-desktop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/endlessm/eos-desktop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/endlessm/eos-desktop/teams","hooks_url":"https://api.github.com/repos/endlessm/eos-desktop/hooks","issue_events_url":"https://api.github.com/repos/endlessm/eos-desktop/issues/events{/number}","events_url":"https://api.github.com/repos/endlessm/eos-desktop/events","assignees_url":"https://api.github.com/repos/endlessm/eos-desktop/assignees{/user}","branches_url":"https://api.github.com/repos/endlessm/eos-desktop/branches{/branch}","tags_url":"https://api.github.com/repos/endlessm/eos-desktop/tags","blobs_url":"https://api.github.com/repos/endlessm/eos-desktop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/endlessm/eos-desktop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/endlessm/eos-desktop/git/refs{/sha}","trees_url":"https://api.github.com/repos/endlessm/eos-desktop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/endlessm/eos-desktop/statuses/{sha}","languages_url":"https://api.github.com/repos/endlessm/eos-desktop/languages","stargazers_url":"https://api.github.com/repos/endlessm/eos-desktop/stargazers","contributors_url":"https://api.github.com/repos/endlessm/eos-desktop/contributors","subscribers_url":"https://api.github.com/repos/endlessm/eos-desktop/subscribers","subscription_url":"https://api.github.com/repos/endlessm/eos-desktop/subscription","commits_url":"https://api.github.com/repos/endlessm/eos-desktop/commits{/sha}","git_commits_url":"https://api.github.com/repos/endlessm/eos-desktop/git/commits{/sha}","comments_url":"https://api.github.com/repos/endlessm/eos-desktop/comments{/number}","issue_comment_url":"https://api.github.com/repos/endlessm/eos-desktop/issues/comments{/number}","contents_url":"https://api.github.com/repos/endlessm/eos-desktop/contents/{+path}","compare_url":"https://api.github.com/repos/endlessm/eos-desktop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/endlessm/eos-desktop/merges","archive_url":"https://api.github.com/repos/endlessm/eos-desktop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/endlessm/eos-desktop/downloads","issues_url":"https://api.github.com/repos/endlessm/eos-desktop/issues{/number}","pulls_url":"https://api.github.com/repos/endlessm/eos-desktop/pulls{/number}","milestones_url":"https://api.github.com/repos/endlessm/eos-desktop/milestones{/number}","notifications_url":"https://api.github.com/repos/endlessm/eos-desktop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/endlessm/eos-desktop/labels{/name}","releases_url":"https://api.github.com/repos/endlessm/eos-desktop/releases{/id}","deployments_url":"https://api.github.com/repos/endlessm/eos-desktop/deployments","created_at":"2015-03-16T18:15:46Z","updated_at":"2016-10-24T17:20:04Z","pushed_at":"2016-11-29T02:27:39Z","git_url":"git://github.com/endlessm/eos-desktop.git","ssh_url":"git@github.com:endlessm/eos-desktop.git","clone_url":"https://github.com/endlessm/eos-desktop.git","svn_url":"https://github.com/endlessm/eos-desktop","homepage":"http://endlessm.com","size":28631,"stargazers_count":16,"watchers_count":16,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":2,"forks":5,"open_issues":2,"watchers":16,"default_branch":"master"}},"base":{"label":"endlessm:master","ref":"master","sha":"cabe46b811e69eae90b2b91d9cf3ebdf59b2c2e5","user":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"repo":{"id":32344042,"name":"eos-desktop","full_name":"endlessm/eos-desktop","owner":{"login":"endlessm","id":1930958,"avatar_url":"https://avatars.githubusercontent.com/u/1930958?v=3","gravatar_id":"","url":"https://api.github.com/users/endlessm","html_url":"https://github.com/endlessm","followers_url":"https://api.github.com/users/endlessm/followers","following_url":"https://api.github.com/users/endlessm/following{/other_user}","gists_url":"https://api.github.com/users/endlessm/gists{/gist_id}","starred_url":"https://api.github.com/users/endlessm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/endlessm/subscriptions","organizations_url":"https://api.github.com/users/endlessm/orgs","repos_url":"https://api.github.com/users/endlessm/repos","events_url":"https://api.github.com/users/endlessm/events{/privacy}","received_events_url":"https://api.github.com/users/endlessm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/endlessm/eos-desktop","description":"Endless Desktop","fork":false,"url":"https://api.github.com/repos/endlessm/eos-desktop","forks_url":"https://api.github.com/repos/endlessm/eos-desktop/forks","keys_url":"https://api.github.com/repos/endlessm/eos-desktop/keys{/key_id}","collaborators_url":"https://api.github.com/repos/endlessm/eos-desktop/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/endlessm/eos-desktop/teams","hooks_url":"https://api.github.com/repos/endlessm/eos-desktop/hooks","issue_events_url":"https://api.github.com/repos/endlessm/eos-desktop/issues/events{/number}","events_url":"https://api.github.com/repos/endlessm/eos-desktop/events","assignees_url":"https://api.github.com/repos/endlessm/eos-desktop/assignees{/user}","branches_url":"https://api.github.com/repos/endlessm/eos-desktop/branches{/branch}","tags_url":"https://api.github.com/repos/endlessm/eos-desktop/tags","blobs_url":"https://api.github.com/repos/endlessm/eos-desktop/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/endlessm/eos-desktop/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/endlessm/eos-desktop/git/refs{/sha}","trees_url":"https://api.github.com/repos/endlessm/eos-desktop/git/trees{/sha}","statuses_url":"https://api.github.com/repos/endlessm/eos-desktop/statuses/{sha}","languages_url":"https://api.github.com/repos/endlessm/eos-desktop/languages","stargazers_url":"https://api.github.com/repos/endlessm/eos-desktop/stargazers","contributors_url":"https://api.github.com/repos/endlessm/eos-desktop/contributors","subscribers_url":"https://api.github.com/repos/endlessm/eos-desktop/subscribers","subscription_url":"https://api.github.com/repos/endlessm/eos-desktop/subscription","commits_url":"https://api.github.com/repos/endlessm/eos-desktop/commits{/sha}","git_commits_url":"https://api.github.com/repos/endlessm/eos-desktop/git/commits{/sha}","comments_url":"https://api.github.com/repos/endlessm/eos-desktop/comments{/number}","issue_comment_url":"https://api.github.com/repos/endlessm/eos-desktop/issues/comments{/number}","contents_url":"https://api.github.com/repos/endlessm/eos-desktop/contents/{+path}","compare_url":"https://api.github.com/repos/endlessm/eos-desktop/compare/{base}...{head}","merges_url":"https://api.github.com/repos/endlessm/eos-desktop/merges","archive_url":"https://api.github.com/repos/endlessm/eos-desktop/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/endlessm/eos-desktop/downloads","issues_url":"https://api.github.com/repos/endlessm/eos-desktop/issues{/number}","pulls_url":"https://api.github.com/repos/endlessm/eos-desktop/pulls{/number}","milestones_url":"https://api.github.com/repos/endlessm/eos-desktop/milestones{/number}","notifications_url":"https://api.github.com/repos/endlessm/eos-desktop/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/endlessm/eos-desktop/labels{/name}","releases_url":"https://api.github.com/repos/endlessm/eos-desktop/releases{/id}","deployments_url":"https://api.github.com/repos/endlessm/eos-desktop/deployments","created_at":"2015-03-16T18:15:46Z","updated_at":"2016-10-24T17:20:04Z","pushed_at":"2016-11-29T02:27:39Z","git_url":"git://github.com/endlessm/eos-desktop.git","ssh_url":"git@github.com:endlessm/eos-desktop.git","clone_url":"https://github.com/endlessm/eos-desktop.git","svn_url":"https://github.com/endlessm/eos-desktop","homepage":"http://endlessm.com","size":28631,"stargazers_count":16,"watchers_count":16,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":2,"forks":5,"open_issues":2,"watchers":16,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194"},"html":{"href":"https://github.com/endlessm/eos-desktop/pull/194"},"issue":{"href":"https://api.github.com/repos/endlessm/eos-desktop/issues/194"},"comments":{"href":"https://api.github.com/repos/endlessm/eos-desktop/issues/194/comments"},"review_comments":{"href":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194/comments"},"review_comment":{"href":"https://api.github.com/repos/endlessm/eos-desktop/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/endlessm/eos-desktop/pulls/194/commits"},"statuses":{"href":"https://api.github.com/repos/endlessm/eos-desktop/statuses/5ef0ec8d60bd344638cc9a0b112e7157ee949f7b"}}}}
{"actor":{"display_login":"cosimoc"}}