AUv2 plugins on Arm that are hosted out-of-process (e.g. in Logic 10.7)
can sometimes crash due to endlessly recursing through becomeKeyWindow.
This tends to happen when displaying a secondary window in a plugin,
e.g. an AlertWindow, then clicking on a secondary app, then clicking
back on the AlertWindow.
To avoid this case, we check that the peer isn't already key before
calling makeKeyWindow.
Unfortunately, we can't use isKeyWindow to avoid the recursion because
this may not return true until after becomeKeyWindow has returned.
The previous method for finding the dialog's owner was ineffective, and
it was still possible for other windows to obscure the file picker in
many cases. Using GetActiveWindow seems to produce the expected
behaviour.
Without this event Components such as Button would remain in a hover
state indefinitely after being clicked on a touch screen. The simulated
event matches the behaviour of the other platforms.
Without this MouseInputSource::getComponentUnderMouse() will report a
stale value after moving the cursor within a single peer using
MouseInputSource::setRawMousePosition().
This fixes an issue where e.g. pressing 'return' to select an item from
an IME list would directly insert a newline character, rather than
selecting the entry.
When using RDP to access a Fedora machine running Gnome, the only
available colourmap is 32-bit. The old implementation caused GUI apps to
crash when they attempted to use a null colourmap pointer.
When using Universal Control, the system seems to translate mouse scroll
events into swipe gestures, meaning that the gesture position is not
constant during the gesture.