{"push_id":806485470,"size":7,"distinct_size":7,"ref":"refs/heads/notify_global_key_listeners","head":"0d694e36e6780325974399fd4353b9c8db03b9d8","before":"99b3a48173ea3f61ade0028af9bdb89b643197bb","commits":[{"sha":"7a6b22e622cbd825d2b6664b616380859822617c","author":{"email":"261ec7bc01029d75f3df176083f56735e31b8587@chromium.org","name":"Adam Barth"},"message":"Add missing export","distinct":true,"url":"https://api.github.com/repos/abarth/engine/commits/7a6b22e622cbd825d2b6664b616380859822617c"},{"sha":"43349f82f679a978c1ff97cbb926557c0fb4d681","author":{"email":"261ec7bc01029d75f3df176083f56735e31b8587@chromium.org","name":"Adam Barth"},"message":"Fix analyzer warnings","distinct":true,"url":"https://api.github.com/repos/abarth/engine/commits/43349f82f679a978c1ff97cbb926557c0fb4d681"},{"sha":"16706a94aeace20669ff671a04f6be2dbcaddb4a","author":{"email":"261ec7bc01029d75f3df176083f56735e31b8587@chromium.org","name":"Adam Barth"},"message":"Update navigation example after Navigator changes\n\nNow this example uses the App widget to drive the adventure game.","distinct":true,"url":"https://api.github.com/repos/abarth/engine/commits/16706a94aeace20669ff671a04f6be2dbcaddb4a"},{"sha":"31585045ead3e00abfa275817a6cedc4014832ee","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@adambarth.com","name":"Adam Barth"},"message":"Merge pull request #1367 from abarth/update_navigation_example\n\nUpdate navigation example","distinct":true,"url":"https://api.github.com/repos/abarth/engine/commits/31585045ead3e00abfa275817a6cedc4014832ee"},{"sha":"db3923a0173c34edc47c0de927bd4c373df49c9a","author":{"email":"261ec7bc01029d75f3df176083f56735e31b8587@chromium.org","name":"Adam Barth"},"message":"Address review comments from @hixie","distinct":true,"url":"https://api.github.com/repos/abarth/engine/commits/db3923a0173c34edc47c0de927bd4c373df49c9a"},{"sha":"ef2c86864b61d513c2c0953447a0435e40b47688","author":{"email":"64b2b6d12bfe4baae7dad3d018f8cbf6b0e7a044@adambarth.com","name":"Adam Barth"},"message":"Merge pull request #1370 from abarth/nit\n\nAddress review comments from @hixie","distinct":true,"url":"https://api.github.com/repos/abarth/engine/commits/ef2c86864b61d513c2c0953447a0435e40b47688"},{"sha":"0d694e36e6780325974399fd4353b9c8db03b9d8","author":{"email":"261ec7bc01029d75f3df176083f56735e31b8587@chromium.org","name":"Adam Barth"},"message":"Actually notify GlobalKey listeners in fn3\n\nThis patch makes a number of changes:\n\n1) buildDirtyComponents now prevents all calls to setState, not just those\n   higher in the tree. This change is necessary for consistency with\n   MixedViewport and HomogeneousViewport because those widgets already build\n   subwidgets with that restriction. If the \"normal\" build didn't enforce that\n   rule, then some widgets would break when put inside a mixed or homogeneous\n   viewport.\n\n2) We now notify global key listeners at the end of each build phase. The\n   notification is dispatched in a state that blocks calls to setState, which\n   prevents these callbacks from rewinding the state machine.\n\n3) The one consumer of these notifications, Focus, now uses scheduleMicrotask\n   to defer calling setState until the next frame. We should see if other\n   consumers of GlobalKey removal notifications follow this pattern and, if so,\n   we might want to iterate on the design.","distinct":true,"url":"https://api.github.com/repos/abarth/engine/commits/0d694e36e6780325974399fd4353b9c8db03b9d8"}]}