From Windows 10 onwards, the window under the mouse will receive
WM_MOUSEWHEEL messages regardless of focus state, so this hook appears
to be unnecessary.
The handling of two state variables had to be adjusted. One is
responsible for signalling that we navigated to a blank page due to the
WebBrowserComponent becoming invisible. The other variable in the
WebView2 implementation stores the URL that we should be navigating to
once the WebView2 instance has been created.
Prior to this commit navigating to the URL requested by goToURL could
fail for two reasons: either because it was called before the underlying
WebView2 instance was created, or because the WebBrowserComponent was
not yet visible.
The implementation follows Valimaki: Oscillator and Filter Algorithms
for Virtual Analog Synthesis (2006). Unlike the other modes, the BPF12
coefficients contained a typo, and had different properties to the other
modes.
We are ignoring warning 4324, which warns us that a FixedSizeFunction<4>
will have it's size increased to 8 bytes, due to the minimum alignment
requirement of 8 bytes.
- Required when the deployment target is macOS 15+
- As the ScreenCaptureKit framework isn't available on all supported versions
of Xcode it's dynamically loaded
When extra guarantees were added to ListenerList to guard against mutations of
the list from callbacks, it also resulted in removing a previously observable
guarantee that calls to the listeners could be made concurrently as long as
those listeners were themselves thread safe. This commit adds a new class that
restores that behaviour for anybody who needs it.
When handling WM_NCCALCSIZE, we reduce the size of the client area when
the window is maximised. If we don't do this, then the client area
matches the top-level window area, which is larger than the display's
safe area. As a result, the window appears too large, and the edges are
obscured under the edges of the display.
After reducing the client area in WM_NCCALCSIZE, the client area is no
longer equal to the top-level window area, so getBounds() must be
updated to return the window's *client* area rather than the top-level
window area.