mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 17:49:14 +00:00
UI: Refactor main docks toggle action
Use the QAction provided by QDockWidget with new Qt connection rather than creating a new one for each dock.
This commit is contained in:
parent
a870ae2fb9
commit
63e3e0acd0
|
@ -713,12 +713,6 @@
|
|||
<addaction name="lockDocks"/>
|
||||
<addaction name="resetDocks"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="toggleScenes"/>
|
||||
<addaction name="toggleSources"/>
|
||||
<addaction name="toggleMixer"/>
|
||||
<addaction name="toggleTransitions"/>
|
||||
<addaction name="toggleControls"/>
|
||||
<addaction name="toggleStats"/>
|
||||
</widget>
|
||||
<addaction name="menu_File"/>
|
||||
<addaction name="menuBasic_MainMenu_Edit"/>
|
||||
|
@ -2187,61 +2181,6 @@
|
|||
<string>Basic.MainMenu.Docks.LockDocks</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="toggleScenes">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.Main.Scenes</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="toggleSources">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.Main.Sources</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="toggleMixer">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Mixer</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="toggleTransitions">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.SceneTransitions</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="toggleControls">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.Main.Controls</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionHelpPortal">
|
||||
<property name="text">
|
||||
<string>Basic.MainMenu.Help.HelpPortal</string>
|
||||
|
@ -2262,17 +2201,6 @@
|
|||
<string>Basic.MainMenu.Help.Discord</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="toggleStats">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.Stats</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionShowAbout">
|
||||
<property name="text">
|
||||
<string>Basic.MainMenu.Help.About</string>
|
||||
|
|
|
@ -251,6 +251,32 @@ void assignDockToggle(QDockWidget *dock, QAction *action)
|
|||
dock->connect(action, &QAction::toggled, handleMenuToggle);
|
||||
}
|
||||
|
||||
void setupDockAction(QDockWidget *dock)
|
||||
{
|
||||
QAction *action = dock->toggleViewAction();
|
||||
|
||||
auto neverDisable = [action]() {
|
||||
QSignalBlocker block(action);
|
||||
action->setEnabled(true);
|
||||
};
|
||||
|
||||
auto newToggleView = [dock](bool check) {
|
||||
QSignalBlocker block(dock);
|
||||
dock->setVisible(check);
|
||||
};
|
||||
|
||||
// Replace the slot connected by default
|
||||
action->disconnect(SIGNAL(triggered(bool)));
|
||||
dock->connect(action, &QAction::triggered, newToggleView);
|
||||
|
||||
// Make the action unable to be disabled
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
action->connect(action, &QAction::changed, neverDisable);
|
||||
#else
|
||||
action->connect(action, &QAction::enabledChanged, neverDisable);
|
||||
#endif
|
||||
}
|
||||
|
||||
extern void RegisterTwitchAuth();
|
||||
extern void RegisterRestreamAuth();
|
||||
#if YOUTUBE_ENABLED
|
||||
|
@ -423,12 +449,20 @@ OBSBasic::OBSBasic(QWidget *parent)
|
|||
addNudge(Qt::SHIFT | Qt::Key_Left, MoveDir::Left, 10);
|
||||
addNudge(Qt::SHIFT | Qt::Key_Right, MoveDir::Right, 10);
|
||||
|
||||
assignDockToggle(ui->scenesDock, ui->toggleScenes);
|
||||
assignDockToggle(ui->sourcesDock, ui->toggleSources);
|
||||
assignDockToggle(ui->mixerDock, ui->toggleMixer);
|
||||
assignDockToggle(ui->transitionsDock, ui->toggleTransitions);
|
||||
assignDockToggle(ui->controlsDock, ui->toggleControls);
|
||||
assignDockToggle(statsDock, ui->toggleStats);
|
||||
/* Setup dock toggle action
|
||||
* And hide all docks before restoring parent geometry */
|
||||
#define SETUP_DOCK(dock) \
|
||||
setupDockAction(dock); \
|
||||
ui->menuDocks->addAction(dock->toggleViewAction()); \
|
||||
dock->setVisible(false);
|
||||
|
||||
SETUP_DOCK(ui->scenesDock);
|
||||
SETUP_DOCK(ui->sourcesDock);
|
||||
SETUP_DOCK(ui->mixerDock);
|
||||
SETUP_DOCK(ui->transitionsDock);
|
||||
SETUP_DOCK(ui->controlsDock);
|
||||
SETUP_DOCK(statsDock);
|
||||
#undef SETUP_DOCK
|
||||
|
||||
// Register shortcuts for Undo/Redo
|
||||
ui->actionMainUndo->setShortcut(Qt::CTRL | Qt::Key_Z);
|
||||
|
@ -440,14 +474,6 @@ OBSBasic::OBSBasic(QWidget *parent)
|
|||
ui->actionMainUndo->setShortcutContext(Qt::ApplicationShortcut);
|
||||
ui->actionMainRedo->setShortcutContext(Qt::ApplicationShortcut);
|
||||
|
||||
//hide all docking panes
|
||||
ui->toggleScenes->setChecked(false);
|
||||
ui->toggleSources->setChecked(false);
|
||||
ui->toggleMixer->setChecked(false);
|
||||
ui->toggleTransitions->setChecked(false);
|
||||
ui->toggleControls->setChecked(false);
|
||||
ui->toggleStats->setChecked(false);
|
||||
|
||||
QPoint curPos;
|
||||
|
||||
//restore parent window geometry
|
||||
|
@ -2015,10 +2041,12 @@ void OBSBasic::OBSInit()
|
|||
QAction *action = new QAction(QTStr("Basic.MainMenu.Docks."
|
||||
"CustomBrowserDocks"),
|
||||
this);
|
||||
ui->menuDocks->insertAction(ui->toggleScenes, action);
|
||||
ui->menuDocks->insertAction(ui->scenesDock->toggleViewAction(),
|
||||
action);
|
||||
connect(action, &QAction::triggered, this,
|
||||
&OBSBasic::ManageExtraBrowserDocks);
|
||||
ui->menuDocks->insertSeparator(ui->toggleScenes);
|
||||
ui->menuDocks->insertSeparator(
|
||||
ui->scenesDock->toggleViewAction());
|
||||
|
||||
LoadExtraBrowserDocks();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue