|
|
@@ -9305,6 +9305,7 @@ void OBSBasic::on_resetDocks_triggered(bool force)
|
|
|
for (int i = oldExtraDocks.size() - 1; i >= 0; i--) {
|
|
|
if (!oldExtraDocks[i]) {
|
|
|
oldExtraDocks.removeAt(i);
|
|
|
+ oldExtraDockNames.removeAt(i);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -9413,6 +9414,7 @@ void OBSBasic::on_lockDocks_toggled(bool lock)
|
|
|
for (int i = oldExtraDocks.size() - 1; i >= 0; i--) {
|
|
|
if (!oldExtraDocks[i]) {
|
|
|
oldExtraDocks.removeAt(i);
|
|
|
+ oldExtraDockNames.removeAt(i);
|
|
|
} else {
|
|
|
oldExtraDocks[i]->setFeatures(features);
|
|
|
}
|
|
|
@@ -10221,6 +10223,10 @@ void OBSBasic::ResizeOutputSizeOfSource()
|
|
|
|
|
|
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);
|
|
|
|
|
|
@@ -10235,6 +10241,7 @@ QAction *OBSBasic::AddDockWidget(QDockWidget *dock)
|
|
|
action->setCheckable(true);
|
|
|
assignDockToggle(dock, action);
|
|
|
oldExtraDocks.push_back(dock);
|
|
|
+ oldExtraDockNames.push_back(dock->objectName());
|
|
|
|
|
|
bool lock = ui->lockDocks->isChecked();
|
|
|
QDockWidget::DockWidgetFeatures features =
|
|
|
@@ -10249,12 +10256,30 @@ QAction *OBSBasic::AddDockWidget(QDockWidget *dock)
|
|
|
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)
|
|
|
{
|
|
|
@@ -10305,6 +10330,21 @@ void OBSBasic::RemoveDockWidget(const QString &name)
|
|
|
extraDocks.removeAt(idx);
|
|
|
}
|
|
|
|
|
|
+bool OBSBasic::IsDockObjectNameUsed(const QString &name)
|
|
|
+{
|
|
|
+ QStringList list;
|
|
|
+ list << "scenesDock"
|
|
|
+ << "sourcesDock"
|
|
|
+ << "mixerDock"
|
|
|
+ << "transitionsDock"
|
|
|
+ << "controlsDock"
|
|
|
+ << "statsDock";
|
|
|
+ list << oldExtraDockNames;
|
|
|
+ list << extraDockNames;
|
|
|
+
|
|
|
+ return list.contains(name);
|
|
|
+}
|
|
|
+
|
|
|
OBSBasic *OBSBasic::Get()
|
|
|
{
|
|
|
return reinterpret_cast<OBSBasic *>(App()->GetMainWindow());
|