AudioProcessorEditor::resized() not being called under specific circumstances for windows plugin (see vid for exact explanation)

AudioProcessorEditor::resized() for my plugin is not being called when the user resizes the window using the window frame, but is called when the bottom right corner resizer is dragged. This is Juce 6.0.5 under Windows 10, testing a VST3 build with Ableton Live 10 and Bitwig Studio v3. Please see this video for exactly what is happening, as it is better explained visually: AudioProcessorEditor::resized() confusion - YouTube

An extract of the code at the end of my AudioProcessorEditor constructor looks like this (setResizeLimits() calls setResizable(true, true) for me, so I am not calling it here):

setResizeLimits(w, h, gui_scale_max*w, gui_scale_max*h);
        getConstrainer()->setFixedAspectRatio(static_cast<double>(w)/static_cast<double>(h));
        setSize(static_cast<int>(static_cast<double>(w) * gui_scale),
            static_cast<int>(static_cast<double>(h) * gui_scale));

Ideally I want to completely disable resizing via the window frame, and only resize via the bottom right hand corner resizer.

Thanks in advance for any help or ideas on this. There is a possibility I’ve been doing something stupid - been reading the docs & source code most of this morning but can’t quite get a handle on it.

I found the solution. Simply change this line in AudioProcessorEditor:

bool isResizable() const noexcept { /*return resizable;*/ return false; }

This is called by canResize() in the VST3 wrapper. The logic of bool shouldHaveCornerResizer = (useBottomRightCornerResizer && shouldBeResizable) inside the setResizable() function is not quite correct in my opinion, given how the VST3 plugin <-> host resizable negotiation works.

Ie, if I call setResizable(false, true), it should add a corner resizer but tell the host it isn’t resizable (isResizable() should return false), so that the user can resize via the corner only and not via the window frame.