diff --git a/UI/api-interface.cpp b/UI/api-interface.cpp index 07a991a0d..c69b3ef29 100644 --- a/UI/api-interface.cpp +++ b/UI/api-interface.cpp @@ -310,6 +310,11 @@ struct OBSStudioAPI : obs_frontend_callbacks { QObject::connect(action, &QAction::triggered, func); } + void *obs_frontend_add_dock(void *dock) override + { + return (void*)main->AddDockWidget((QDockWidget *)dock); + } + void obs_frontend_add_event_callback(obs_frontend_event_cb callback, void *private_data) override { diff --git a/UI/obs-frontend-api/obs-frontend-api.cpp b/UI/obs-frontend-api/obs-frontend-api.cpp index 8d9806ba2..3fe84f4c3 100644 --- a/UI/obs-frontend-api/obs-frontend-api.cpp +++ b/UI/obs-frontend-api/obs-frontend-api.cpp @@ -269,6 +269,13 @@ void obs_frontend_add_tools_menu_item(const char *name, private_data); } +void *obs_frontend_add_dock(void *dock) +{ + return !!callbacks_valid() + ? c->obs_frontend_add_dock(dock) + : nullptr; +} + void obs_frontend_add_event_callback(obs_frontend_event_cb callback, void *private_data) { diff --git a/UI/obs-frontend-api/obs-frontend-api.h b/UI/obs-frontend-api/obs-frontend-api.h index c41111d3e..52f0beed2 100644 --- a/UI/obs-frontend-api/obs-frontend-api.h +++ b/UI/obs-frontend-api/obs-frontend-api.h @@ -111,6 +111,9 @@ EXPORT void *obs_frontend_add_tools_menu_qaction(const char *name); EXPORT void obs_frontend_add_tools_menu_item(const char *name, obs_frontend_cb callback, void *private_data); +/* takes QDockWidget and returns QAction */ +EXPORT void *obs_frontend_add_dock(void *dock); + typedef void (*obs_frontend_event_cb)(enum obs_frontend_event event, void *private_data); diff --git a/UI/obs-frontend-api/obs-frontend-internal.hpp b/UI/obs-frontend-api/obs-frontend-internal.hpp index 8eb2f8f6d..3ed9283a8 100644 --- a/UI/obs-frontend-api/obs-frontend-internal.hpp +++ b/UI/obs-frontend-api/obs-frontend-internal.hpp @@ -53,6 +53,8 @@ struct obs_frontend_callbacks { virtual void obs_frontend_add_tools_menu_item(const char *name, obs_frontend_cb callback, void *private_data)=0; + virtual void *obs_frontend_add_dock(void *dock)=0; + virtual void obs_frontend_add_event_callback( obs_frontend_event_cb callback, void *private_data)=0; virtual void obs_frontend_remove_event_callback(