{"action":"created","issue":{"url":"https://api.github.com/repos/swaywm/sway/issues/2062","repository_url":"https://api.github.com/repos/swaywm/sway","labels_url":"https://api.github.com/repos/swaywm/sway/issues/2062/labels{/name}","comments_url":"https://api.github.com/repos/swaywm/sway/issues/2062/comments","events_url":"https://api.github.com/repos/swaywm/sway/issues/2062/events","html_url":"https://github.com/swaywm/sway/pull/2062","id":327018076,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkwOTI0MzM5","number":2062,"title":"Fix popups","user":{"login":"RyanDwyer","id":2436833,"node_id":"MDQ6VXNlcjI0MzY4MzM=","avatar_url":"https://avatars3.githubusercontent.com/u/2436833?v=4","gravatar_id":"","url":"https://api.github.com/users/RyanDwyer","html_url":"https://github.com/RyanDwyer","followers_url":"https://api.github.com/users/RyanDwyer/followers","following_url":"https://api.github.com/users/RyanDwyer/following{/other_user}","gists_url":"https://api.github.com/users/RyanDwyer/gists{/gist_id}","starred_url":"https://api.github.com/users/RyanDwyer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RyanDwyer/subscriptions","organizations_url":"https://api.github.com/users/RyanDwyer/orgs","repos_url":"https://api.github.com/users/RyanDwyer/repos","events_url":"https://api.github.com/users/RyanDwyer/events{/privacy}","received_events_url":"https://api.github.com/users/RyanDwyer/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":23,"created_at":"2018-05-28T12:57:37Z","updated_at":"2018-07-23T12:08:24Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/swaywm/sway/pulls/2062","html_url":"https://github.com/swaywm/sway/pull/2062","diff_url":"https://github.com/swaywm/sway/pull/2062.diff","patch_url":"https://github.com/swaywm/sway/pull/2062.patch"},"body":"This adds proper support for popups overhanging the bounds of their swayc.\r\n\r\nAn example of the problem this solves:\r\n\r\n* Place a gedit and a terminal side by side with gedit on the left.\r\n* Right click near the right edge of gedit, so the popup overlaps the terminal.\r\n* Before this PR, the terminal would be rendered on top of the popup and you wouldn't be able to hover or click the popup's overhanging part.\r\n\r\nThe same problem is evident with floating views showing a popup outside the bounds of the floating swayc.\r\n\r\nFor locating a surface at a given coordinate, the new logic is to iterate all the floating popups first, then floating toplevels and decorations, then tiled popups, then tiled toplevels and decorations.\r\n\r\nFor rendering popups, it renders all toplevels and decorations first, then popups afterwards.\r\n\r\nSome discussion points:\r\n* If you have a tabbed container, open a popup that overhangs the tabbed container, then switch to a different tab, I've made the popup disappear until you tab back. I assume this is desired?\r\n* We might find performance gains if we store a list of mapped popups somewhere global such as `sway_server`, rather than iterating through the tree multiple times when using `container_at` and when rendering.\r\n* When a popup is unmapped, only the swayc's bounds are damaged. I'd like to make this a separate PR because it's not a result of my doing, and I'd rather work on atomic for now."},"comment":{"url":"https://api.github.com/repos/swaywm/sway/issues/comments/407035812","html_url":"https://github.com/swaywm/sway/pull/2062#issuecomment-407035812","issue_url":"https://api.github.com/repos/swaywm/sway/issues/2062","id":407035812,"node_id":"MDEyOklzc3VlQ29tbWVudDQwNzAzNTgxMg==","user":{"login":"SirCmpwn","id":1310872,"node_id":"MDQ6VXNlcjEzMTA4NzI=","avatar_url":"https://avatars0.githubusercontent.com/u/1310872?v=4","gravatar_id":"","url":"https://api.github.com/users/SirCmpwn","html_url":"https://github.com/SirCmpwn","followers_url":"https://api.github.com/users/SirCmpwn/followers","following_url":"https://api.github.com/users/SirCmpwn/following{/other_user}","gists_url":"https://api.github.com/users/SirCmpwn/gists{/gist_id}","starred_url":"https://api.github.com/users/SirCmpwn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SirCmpwn/subscriptions","organizations_url":"https://api.github.com/users/SirCmpwn/orgs","repos_url":"https://api.github.com/users/SirCmpwn/repos","events_url":"https://api.github.com/users/SirCmpwn/events{/privacy}","received_events_url":"https://api.github.com/users/SirCmpwn/received_events","type":"User","site_admin":false},"created_at":"2018-07-23T12:08:24Z","updated_at":"2018-07-23T12:08:24Z","author_association":"MEMBER","body":"What's the story here?"}}
{"actor":{"display_login":"SirCmpwn"}}