This fixes a bug where selecting "Always on top" in the plugin editor
window in Cubase 11 on Windows 11 on a display with > 100% scale would
cause the editor to display with the wrong scale factor.
It seems that Cubase calls removed() then attached() on the plugin view,
destroying and recreating the editor wrapper component. The editor
opened with 100% scale, but requests from the host to set the "real"
scale factor were ignored because the JUCE wrapper thought that the
requested scale had already been applied.
Applying the cached scale factor directly after constructing the editor
keeps everything in a consistent state, and seems to resolve the issue.
When opening the "settings" menu of Arturia Pigments VST2, the editor
window would move itself over the JUCE non-native titlebar in the
AudioPluginHost. Then, when the editor was moved back into the correct
location, the titlebar would not be redrawn, leaving it in an incorrect
state.
This change forces a repaint of the editor's peer whenever the size
changes, forcing the titlebar to repaint after the editor has moved.
This fixes an issue where specifying an audio device type before calling
initialise could cause a different device to become active, even if the
requested device type had usable devices.
With this change in place, a new device type will only be selected if
the current device type has no devices.
This change allows mouse events (including enter and exit events) to
reach unfocused views on macOS. This matches the behaviour of unfocused
windows on Linux and Windows, where components paint in their "hovered"
states even when the application window is in the background.
As a byproduct of using tracking areas on macOS, we can remove the fake
mouse move generator.
This new factoring is a bit more typesafe, as it avoids casting
internals to void*.
It also allows cursors to scale appropriately on high resolution
displays on Windows.