{"action":"opened","issue":{"url":"https://api.github.com/repos/swaywm/wlroots/issues/1077","repository_url":"https://api.github.com/repos/swaywm/wlroots","labels_url":"https://api.github.com/repos/swaywm/wlroots/issues/1077/labels{/name}","comments_url":"https://api.github.com/repos/swaywm/wlroots/issues/1077/comments","events_url":"https://api.github.com/repos/swaywm/wlroots/issues/1077/events","html_url":"https://github.com/swaywm/wlroots/issues/1077","id":334677060,"node_id":"MDU6SXNzdWUzMzQ2NzcwNjA=","number":1077,"title":"seat: keep track of what buttons are pressed","user":{"login":"acrisci","id":3258764,"node_id":"MDQ6VXNlcjMyNTg3NjQ=","avatar_url":"https://avatars2.githubusercontent.com/u/3258764?v=4","gravatar_id":"","url":"https://api.github.com/users/acrisci","html_url":"https://github.com/acrisci","followers_url":"https://api.github.com/users/acrisci/followers","following_url":"https://api.github.com/users/acrisci/following{/other_user}","gists_url":"https://api.github.com/users/acrisci/gists{/gist_id}","starred_url":"https://api.github.com/users/acrisci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acrisci/subscriptions","organizations_url":"https://api.github.com/users/acrisci/orgs","repos_url":"https://api.github.com/users/acrisci/repos","events_url":"https://api.github.com/users/acrisci/events{/privacy}","received_events_url":"https://api.github.com/users/acrisci/received_events","type":"User","site_admin":false},"labels":[{"id":591667615,"node_id":"MDU6TGFiZWw1OTE2Njc2MTU=","url":"https://api.github.com/repos/swaywm/wlroots/labels/enhancement","name":"enhancement","color":"84b6eb","default":true},{"id":742568568,"node_id":"MDU6TGFiZWw3NDI1Njg1Njg=","url":"https://api.github.com/repos/swaywm/wlroots/labels/wlr-seat","name":"wlr-seat","color":"006b75","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-06-21T22:17:05Z","updated_at":"2018-06-21T22:17:05Z","closed_at":null,"author_association":"MEMBER","body":"The seat pointer interface seems to be very prickly about how every button press must be followed by a button release.\r\n\r\nFor instance, if I just send a random `wlr_seat_notify_pointer_button()` with release, the `pointer_state.button_count` will now be wrong for the rest of the time that the compositor runs (with no buttons pressed, the value will be -1) because it simply decrements the button count whenever it gets a release.\r\n\r\nI'm running into this now on #1018. Here, I don't want to send a button press when the compositor move starts. When the compositor move ends, it would be harmless to send a release for a button that was never pressed. However how it is now, that will completely screw up the seat state in a way that's difficult to debug and requires a compositor restart to fix.\r\n\r\nThe case of press without a release I would consider a developer error and we can't help that one."}}
{"actor":{"display_login":"acrisci"}}