setResizable(true, false) working for VST3, but not VST2/AU

I’m a bit stumped by this one.

In my AudioProcessorEditor constructor the last thing I do is:

    setResizable (true, false);
    setResizeLimits (GUI_WIDTH * scaleUI, GUI_HEIGHT * scaleUI, GUI_WIDTH * scaleUI, GUI_HEIGHT * scaleUI * 2);
    setSize (GUI_WIDTH * scaleUI, GUI_HEIGHT * scaleUI);

where

const int GUI_WIDTH = 1200;
const int GUI_HEIGHT = 800;
float scaleUI = 0.666f;  // this can be 0.5, 0.666 or 1.0

In Live I can resize the VST3, but VST2 and AU are not resizable. In GarageBand when hovering the mouse over the window borders it shows me the resize mouse cursor, but resizing does not work.

Is this just a limitation of VST2/AU or have I just overlooked something/done it wrong?

edit:
I added

    setResizable (true, false);
    setResizeLimits (500, 500, 600, 600);
    setSize (550, 550);

to a blank Plugin Project and confirmed the same behaviour, so I guess it’s a limitation for VST2/AU?

edit2: bump, can anyone confirm that this is a limitation, or if I just did something silly?

At what point does it become acceptable to ping the JUCE team about unanswered questions? It’s a little frustrating seeing later questions answered by them and (seemingly) ignoring an earlier one.

FWIW, here VST2 and AU can be resized on OSX in Live 10.1

juce vanilla audio plugin with just setResizable(true, true);

yeah, that is fine for me also, but I would rather not use the corner resizer, for two reasons:

a) it looks weird in Logic
b) the actual edges of the plugin window give the impression that they can be dragged to resize (showing the double headed arrow mouse cursor), however it does not work


I’m assuming that it’s just not possible. :frowning:

It seems to be hard… I would be curious if anybody has seen a plugin that is resizable by dragging the border and not an apple built-in

2 Likes

Hmm, good question. I assume though that it is something to do with the VST2/AU wrappers, as in Live I get the same problem (minus the extra crap that Logic attaches to the window) : the window borders give the impression that the VST2/AU is resizable, but does not actually do anything. For the VST3 it’s working perfectly.

That was my experience as well, so the resizable corner is a workaround for the situation… I am due to investigate the situation outside juce, but don’t know yet, when I get around to do that

It would be great to know, if anybody managed, any plugin except the apple ones I meant

Can’t you just override the draw of this corner to not show anything ?
drawResizableWindowBorder in the LnF

1 Like

ok it’s not only the display that bother you.
Nevermind.

1 Like

Yeah, I think given the other behaviour the corner resizer is a necessary evil.

I currently use setResizable(true, true) and I get a report form the user telling me:

It should not be possible to resize Shade by grabbing the corner, only the «////« symbol. This is how e.g. Fabfilter, IK and iZotope plugins work.

Is that possible in Juce ?

Thanks !

I haven’t seen a plugin except for apples own, that allow resizing AUs by dragging the frame of the plugin, even though it shows the resize cursor. All resizeable plugins I saw, with or without JUCE, are using any sort of resizer dragger in their client area.

Would be happy to learn if anybody found another way, so far everybody I spoke to says it is not possible. My last hope would be somebody finds the messages in an API, where the resize calls are accessible.

What the user says is that at least the bottom window corner do not allow resize and only the inner edge would work in case of those plugin.
Right now, you think you can but it doesn’t and in some DAW, you just resize the window but the actual plugin content do not resize hence the bad feeling

Yes, I see. This is how I understand it and was confirmed by others who spent a lot of time investigating as well:

  • You can change the size programmatically by resizing the client (your plugin GUI aka AudioProcessorEditor). This is how the corner resizer works.
  • Logic shows the resizer cursor when you hover the frame. But the drag events from the border are not processed it seems. It seems to be the responsibility of the client component, but I haven’t found a way how to receive the drag events.
  • Judging from your observation (I haven’t seen that) some hosts resize the frame but don’t resize the client component, since I don’t think that is part of the SDK.

There seems to be a missing link in how the window events are communicated to the client GUI.

What puzzling me is that the user says it doesn’t happen for Fabfilter, IK and iZotope plugins.
aka the window resize corner do not work hence it’s less confusing.
I don’t have those so I can’t test

I don’t have them either, but seems fabfilter has different size options to choose from instead of a drag-resize:

If someone owns them and can add details that would be helpful

@daniel I have the Pro-R and the Pro-L2 (amazing plugins, BTW).

Both have corner drag in the VST3 version, but the VST2 version instead has a fixed size list.

Personally I’ve been able to have a corner draggable VST2 by using ResizableCornerComponent.

Great, thanks for confirming. Interesting that they have different approaches for VST2 and VST3.

Yes, that’s what I said above: the CornerResizer is part of the GUI client, i.e. the AudioProcessorEditor and it resizes programmatically on dragging. But the seemingly draggable borders of the host editor window have no effect.