gui fixes, vst3 checkSizeConstraints

This commit is contained in:
Stefano D'Angelo 2024-05-28 14:30:22 +02:00
parent 4fcaedf689
commit dedff39372
2 changed files with 15 additions and 3 deletions

View File

@ -1197,8 +1197,19 @@ static Steinberg_tresult plugViewCheckSizeConstraint(void* thisInterface, struct
(void)rect;
TRACE("plugView chekSizeContraint %p\n", thisInterface);
//TODO
# if DATA_UI_USER_RESIZABLE
return Steinberg_kResultTrue;
# else
# ifdef __linux__
plugView *v = (plugView *)((char *)thisInterface - offsetof(plugView, vtblIPlugView));
XWindowAttributes attr;
XGetWindowAttributes(v->display, (Window)(*((char **)v->ui)), &attr);
rect->right = rect->left + attr.width;
rect->bottom = rect->top + attr.height;
# endif
return Steinberg_kResultFalse;
# endif
}
# ifdef __linux__

View File

@ -196,6 +196,7 @@ static plugin_ui *plugin_ui_create(char has_parent, void *parent, plugin_ui_call
instance->view = puglNewView(instance->world);
puglSetSizeHint(instance->view, PUGL_DEFAULT_SIZE, WIDTH, HEIGHT);
puglSetViewHint(instance->view, PUGL_RESIZABLE, PUGL_TRUE);
puglSetHandle(instance->view, instance);
puglSetBackend(instance->view, puglCairoBackend());
PuglRect frame = { 0, 0, WIDTH, HEIGHT };
puglSetFrame(instance->view, frame);
@ -207,10 +208,10 @@ static plugin_ui *plugin_ui_create(char has_parent, void *parent, plugin_ui_call
puglFreeWorld(instance->world);
return NULL;
}
puglShow(instance->view, PUGL_SHOW_RAISE);
puglSetHandle(instance->view, instance);
instance->widget = (void *)puglGetNativeView(instance->view);
instance->cbs = *cbs;
puglSetFrame(instance->view, frame); // Intentionally duplicated because of ardour/lv2/mac strange event order call
puglShow(instance->view, PUGL_SHOW_RAISE); // Cocoa calls events at this so it's better this happens late
return instance;
}