events: Sync pending pointer events without a window
Mutter issues a synchronous grab on the pointer for unfocused client windows to be able to catch the button events first and raise/focus client windows accordingly.
When there is a synchronous grab in effect, all events are queued until the grabbing client releases the event queue as it processes the events.
Mutter does release the events in its event handler function but does so only if it is able to find the window matching the event. If the window is a shell widget, that matching may fail and therefore Mutter will not release the events, hence causing a freeze in pointer events delivery.
To avoid the issue, make sure we sync the pointer events in case we can't find a matching window.