mirror of
https://github.com/obsproject/obs-studio.git
synced 2025-12-27 23:45:48 +00:00
frontend/api: Remove obs_frontend_add_dock
Deprecated since cde5545f8f (30.0).
This commit is contained in:
parent
b7c399f6d8
commit
5730f86050
@ -462,19 +462,6 @@ Functions
|
||||
|
||||
---------------------------------------
|
||||
|
||||
.. function:: void* obs_frontend_add_dock(void *dock)
|
||||
|
||||
Adds a QDockWidget to the UI's Docks menu.
|
||||
|
||||
:param dock: QDockWidget to add/create
|
||||
:return: A pointer to the added QAction
|
||||
|
||||
.. deprecated:: 30.0
|
||||
Prefer :c:func:`obs_frontend_add_dock_by_id()` or
|
||||
:c:func:`obs_frontend_add_custom_qdock()` instead.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
.. function:: bool obs_frontend_add_dock_by_id(const char *id, const char *title, void *widget)
|
||||
|
||||
Adds a dock with the widget to the UI with a toggle in the Docks
|
||||
|
||||
@ -332,26 +332,6 @@ void OBSStudioAPI::obs_frontend_add_tools_menu_item(const char *name, obs_fronte
|
||||
QObject::connect(action, &QAction::triggered, func);
|
||||
}
|
||||
|
||||
void *OBSStudioAPI::obs_frontend_add_dock(void *dock)
|
||||
{
|
||||
QDockWidget *d = static_cast<QDockWidget *>(dock);
|
||||
|
||||
QString name = d->objectName();
|
||||
if (name.isEmpty() || main->IsDockObjectNameUsed(name)) {
|
||||
blog(LOG_WARNING, "The object name of the added dock is empty or already used,"
|
||||
" a temporary one will be set to avoid conflicts");
|
||||
|
||||
char *uuid = os_generate_uuid();
|
||||
name = QT_UTF8(uuid);
|
||||
bfree(uuid);
|
||||
name.append("_oldExtraDock");
|
||||
|
||||
d->setObjectName(name);
|
||||
}
|
||||
|
||||
return (void *)main->AddDockWidget(d);
|
||||
}
|
||||
|
||||
bool OBSStudioAPI::obs_frontend_add_dock_by_id(const char *id, const char *title, void *widget)
|
||||
{
|
||||
if (main->IsDockObjectNameUsed(QT_UTF8(id))) {
|
||||
|
||||
@ -120,8 +120,6 @@ struct OBSStudioAPI : obs_frontend_callbacks {
|
||||
|
||||
void obs_frontend_add_tools_menu_item(const char *name, obs_frontend_cb callback, void *private_data) override;
|
||||
|
||||
void *obs_frontend_add_dock(void *dock) override;
|
||||
|
||||
bool obs_frontend_add_dock_by_id(const char *id, const char *title, void *widget) override;
|
||||
|
||||
void obs_frontend_remove_dock(const char *id) override;
|
||||
|
||||
@ -311,11 +311,6 @@ void obs_frontend_add_tools_menu_item(const char *name, obs_frontend_cb callback
|
||||
c->obs_frontend_add_tools_menu_item(name, callback, private_data);
|
||||
}
|
||||
|
||||
void *obs_frontend_add_dock(void *dock)
|
||||
{
|
||||
return !!callbacks_valid() ? c->obs_frontend_add_dock(dock) : nullptr;
|
||||
}
|
||||
|
||||
bool obs_frontend_add_dock_by_id(const char *id, const char *title, void *widget)
|
||||
{
|
||||
return !!callbacks_valid() ? c->obs_frontend_add_dock_by_id(id, title, widget) : false;
|
||||
|
||||
@ -149,10 +149,6 @@ typedef void (*obs_frontend_cb)(void *private_data);
|
||||
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 */
|
||||
OBS_DEPRECATED
|
||||
EXPORT void *obs_frontend_add_dock(void *dock);
|
||||
|
||||
/* takes QWidget for widget */
|
||||
EXPORT bool obs_frontend_add_dock_by_id(const char *id, const char *title, void *widget);
|
||||
|
||||
|
||||
@ -58,8 +58,6 @@ 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 bool obs_frontend_add_dock_by_id(const char *id, const char *title, void *widget) = 0;
|
||||
virtual void obs_frontend_remove_dock(const char *id) = 0;
|
||||
virtual bool obs_frontend_add_custom_qdock(const char *id, void *dock) = 0;
|
||||
|
||||
@ -426,8 +426,6 @@ public slots:
|
||||
* -------------------------------------
|
||||
*/
|
||||
private:
|
||||
QList<QPointer<QDockWidget>> oldExtraDocks;
|
||||
QStringList oldExtraDockNames;
|
||||
QPointer<QDockWidget> statsDock;
|
||||
QByteArray startingDockLayout;
|
||||
QStringList extraDockNames;
|
||||
@ -439,7 +437,6 @@ private:
|
||||
QPointer<OBSDock> controlsDock;
|
||||
|
||||
public:
|
||||
QAction *AddDockWidget(QDockWidget *dock);
|
||||
void AddDockWidget(QDockWidget *dock, Qt::DockWidgetArea area, bool extraBrowser = false);
|
||||
void RemoveDockWidget(const QString &name);
|
||||
bool IsDockObjectNameUsed(const QString &name);
|
||||
@ -450,7 +447,6 @@ private slots:
|
||||
void on_lockDocks_toggled(bool lock);
|
||||
void on_sideDocks_toggled(bool side);
|
||||
|
||||
void RepairOldExtraDockName();
|
||||
void RepairCustomExtraDockName();
|
||||
|
||||
/* -------------------------------------
|
||||
|
||||
@ -21,23 +21,6 @@
|
||||
|
||||
#include <qt-wrappers.hpp>
|
||||
|
||||
void assignDockToggle(QDockWidget *dock, QAction *action)
|
||||
{
|
||||
auto handleWindowToggle = [action](bool vis) {
|
||||
action->blockSignals(true);
|
||||
action->setChecked(vis);
|
||||
action->blockSignals(false);
|
||||
};
|
||||
auto handleMenuToggle = [dock](bool check) {
|
||||
dock->blockSignals(true);
|
||||
dock->setVisible(check);
|
||||
dock->blockSignals(false);
|
||||
};
|
||||
|
||||
dock->connect(dock->toggleViewAction(), &QAction::toggled, handleWindowToggle);
|
||||
dock->connect(action, &QAction::toggled, handleMenuToggle);
|
||||
}
|
||||
|
||||
void setupDockAction(QDockWidget *dock)
|
||||
{
|
||||
QAction *action = dock->toggleViewAction();
|
||||
@ -62,19 +45,10 @@ void setupDockAction(QDockWidget *dock)
|
||||
|
||||
void OBSBasic::on_resetDocks_triggered(bool force)
|
||||
{
|
||||
/* prune deleted extra docks */
|
||||
for (int i = oldExtraDocks.size() - 1; i >= 0; i--) {
|
||||
if (!oldExtraDocks[i]) {
|
||||
oldExtraDocks.removeAt(i);
|
||||
oldExtraDockNames.removeAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef BROWSER_AVAILABLE
|
||||
if ((oldExtraDocks.size() || extraDocks.size() || extraCustomDocks.size() || extraBrowserDocks.size()) &&
|
||||
!force)
|
||||
if ((extraDocks.size() || extraCustomDocks.size() || extraBrowserDocks.size()) && !force)
|
||||
#else
|
||||
if ((oldExtraDocks.size() || extraDocks.size() || extraCustomDocks.size()) && !force)
|
||||
if ((extraDocks.size() || extraCustomDocks.size()) && !force)
|
||||
#endif
|
||||
{
|
||||
QMessageBox::StandardButton button =
|
||||
@ -84,17 +58,6 @@ void OBSBasic::on_resetDocks_triggered(bool force)
|
||||
return;
|
||||
}
|
||||
|
||||
/* undock/hide/center extra docks */
|
||||
for (int i = oldExtraDocks.size() - 1; i >= 0; i--) {
|
||||
if (oldExtraDocks[i]) {
|
||||
oldExtraDocks[i]->setVisible(true);
|
||||
oldExtraDocks[i]->setFloating(true);
|
||||
oldExtraDocks[i]->move(frameGeometry().topLeft() + rect().center() -
|
||||
oldExtraDocks[i]->rect().center());
|
||||
oldExtraDocks[i]->setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
#define RESET_DOCKLIST(dockList) \
|
||||
for (int i = dockList.size() - 1; i >= 0; i--) { \
|
||||
dockList[i]->setVisible(true); \
|
||||
@ -168,15 +131,6 @@ void OBSBasic::on_lockDocks_toggled(bool lock)
|
||||
for (int i = extraBrowserDocks.size() - 1; i >= 0; i--)
|
||||
extraBrowserDocks[i]->setFeatures(features);
|
||||
#endif
|
||||
|
||||
for (int i = oldExtraDocks.size() - 1; i >= 0; i--) {
|
||||
if (!oldExtraDocks[i]) {
|
||||
oldExtraDocks.removeAt(i);
|
||||
oldExtraDockNames.removeAt(i);
|
||||
} else {
|
||||
oldExtraDocks[i]->setFeatures(features);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OBSBasic::on_sideDocks_toggled(bool side)
|
||||
@ -194,62 +148,6 @@ void OBSBasic::on_sideDocks_toggled(bool side)
|
||||
}
|
||||
}
|
||||
|
||||
QAction *OBSBasic::AddDockWidget(QDockWidget *dock)
|
||||
{
|
||||
// Prevent the object name from being changed
|
||||
connect(dock, &QObject::objectNameChanged, this, &OBSBasic::RepairOldExtraDockName);
|
||||
|
||||
#ifdef BROWSER_AVAILABLE
|
||||
QAction *action = new QAction(dock->windowTitle(), ui->menuDocks);
|
||||
|
||||
if (!extraBrowserMenuDocksSeparator.isNull())
|
||||
ui->menuDocks->insertAction(extraBrowserMenuDocksSeparator, action);
|
||||
else
|
||||
ui->menuDocks->addAction(action);
|
||||
#else
|
||||
QAction *action = ui->menuDocks->addAction(dock->windowTitle());
|
||||
#endif
|
||||
action->setCheckable(true);
|
||||
action->setMenuRole(QAction::NoRole);
|
||||
assignDockToggle(dock, action);
|
||||
oldExtraDocks.push_back(dock);
|
||||
oldExtraDockNames.push_back(dock->objectName());
|
||||
|
||||
bool lock = ui->lockDocks->isChecked();
|
||||
QDockWidget::DockWidgetFeatures features =
|
||||
lock ? QDockWidget::NoDockWidgetFeatures
|
||||
: (QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable |
|
||||
QDockWidget::DockWidgetFloatable);
|
||||
|
||||
dock->setFeatures(features);
|
||||
|
||||
/* prune deleted docks */
|
||||
for (int i = oldExtraDocks.size() - 1; i >= 0; i--) {
|
||||
if (!oldExtraDocks[i]) {
|
||||
oldExtraDocks.removeAt(i);
|
||||
oldExtraDockNames.removeAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
return action;
|
||||
}
|
||||
|
||||
void OBSBasic::RepairOldExtraDockName()
|
||||
{
|
||||
QDockWidget *dock = reinterpret_cast<QDockWidget *>(sender());
|
||||
int idx = oldExtraDocks.indexOf(dock);
|
||||
QSignalBlocker block(dock);
|
||||
|
||||
if (idx == -1) {
|
||||
blog(LOG_WARNING, "A dock got its object name changed");
|
||||
return;
|
||||
}
|
||||
|
||||
blog(LOG_WARNING, "The dock '%s' got its object name restored", QT_TO_UTF8(oldExtraDockNames[idx]));
|
||||
|
||||
dock->setObjectName(oldExtraDockNames[idx]);
|
||||
}
|
||||
|
||||
void OBSBasic::AddDockWidget(QDockWidget *dock, Qt::DockWidgetArea area, bool extraBrowser)
|
||||
{
|
||||
if (dock->objectName().isEmpty())
|
||||
@ -310,7 +208,6 @@ bool OBSBasic::IsDockObjectNameUsed(const QString &name)
|
||||
<< "transitionsDock"
|
||||
<< "controlsDock"
|
||||
<< "statsDock";
|
||||
list << oldExtraDockNames;
|
||||
list << extraDockNames;
|
||||
list << extraCustomDockNames;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user