Save/restore color bar splitter position correctly

This commit is contained in:
David Capello 2022-08-24 17:29:29 -03:00
parent bba8b00bd2
commit 47c8e5eae3
2 changed files with 25 additions and 2 deletions

View File

@ -61,6 +61,7 @@ using namespace ui;
static const char* kLegacyLayoutMainWindowSection = "layout:main_window"; static const char* kLegacyLayoutMainWindowSection = "layout:main_window";
static const char* kLegacyLayoutTimelineSplitter = "timeline_splitter"; static const char* kLegacyLayoutTimelineSplitter = "timeline_splitter";
static const char* kLegacyLayoutColorBarSplitter = "color_bar_splitter";
class ScreenScalePanic : public INotificationDelegate { class ScreenScalePanic : public INotificationDelegate {
public: public:
@ -195,6 +196,7 @@ void MainWindow::initialize()
MainWindow::~MainWindow() MainWindow::~MainWindow()
{ {
m_timelineResizeConn.disconnect(); m_timelineResizeConn.disconnect();
m_colorBarResizeConn.disconnect();
m_dock->resetDocks(); m_dock->resetDocks();
m_customizableDock->resetDocks(); m_customizableDock->resetDocks();
@ -381,9 +383,14 @@ void MainWindow::popTimeline()
void MainWindow::setDefaultLayout() void MainWindow::setDefaultLayout()
{ {
m_timelineResizeConn.disconnect(); m_timelineResizeConn.disconnect();
m_colorBarResizeConn.disconnect();
auto colorBarWidth = get_config_double(kLegacyLayoutMainWindowSection,
kLegacyLayoutColorBarSplitter,
m_colorBar->sizeHint().w);
m_customizableDock->resetDocks(); m_customizableDock->resetDocks();
m_customizableDock->dock(ui::LEFT, m_colorBar.get()); m_customizableDock->dock(ui::LEFT, m_colorBar.get(), gfx::Size(colorBarWidth, 0));
m_customizableDock->center()->dock(ui::TOP, m_contextBar.get()); m_customizableDock->center()->dock(ui::TOP, m_contextBar.get());
m_customizableDock->center()->dock(ui::RIGHT, m_toolBar.get()); m_customizableDock->center()->dock(ui::RIGHT, m_toolBar.get());
m_customizableDock->center()->center()->dock(ui::BOTTOM, m_customizableDock->center()->center()->dock(ui::BOTTOM,
@ -396,9 +403,14 @@ void MainWindow::setDefaultLayout()
void MainWindow::setDefaultMirrorLayout() void MainWindow::setDefaultMirrorLayout()
{ {
m_timelineResizeConn.disconnect(); m_timelineResizeConn.disconnect();
m_colorBarResizeConn.disconnect();
auto colorBarWidth = get_config_double(kLegacyLayoutMainWindowSection,
kLegacyLayoutColorBarSplitter,
m_colorBar->sizeHint().w);
m_customizableDock->resetDocks(); m_customizableDock->resetDocks();
m_customizableDock->dock(ui::RIGHT, m_colorBar.get()); m_customizableDock->dock(ui::RIGHT, m_colorBar.get(), gfx::Size(colorBarWidth, 0));
m_customizableDock->center()->dock(ui::TOP, m_contextBar.get()); m_customizableDock->center()->dock(ui::TOP, m_contextBar.get());
m_customizableDock->center()->dock(ui::LEFT, m_toolBar.get()); m_customizableDock->center()->dock(ui::LEFT, m_toolBar.get());
m_customizableDock->center()->center()->dock(ui::BOTTOM, m_customizableDock->center()->center()->dock(ui::BOTTOM,
@ -650,6 +662,8 @@ void MainWindow::configureWorkspaceLayout()
// TODO set visibility of color bar widgets // TODO set visibility of color bar widgets
m_colorBar->setVisible(normal && isDoc); m_colorBar->setVisible(normal && isDoc);
m_colorBarResizeConn = m_customizableDock->Resize.connect(
[this] { saveColorBarConfiguration(); });
m_toolBar->setVisible(normal && isDoc); m_toolBar->setVisible(normal && isDoc);
m_statusBar->setVisible(normal); m_statusBar->setVisible(normal);
@ -728,4 +742,11 @@ void MainWindow::saveTimelineConfiguration()
std::clamp(timelineSplitterPos * 100.0, 1.0, 99.0)); std::clamp(timelineSplitterPos * 100.0, 1.0, 99.0));
} }
void MainWindow::saveColorBarConfiguration()
{
set_config_double(kLegacyLayoutMainWindowSection,
kLegacyLayoutColorBarSplitter,
m_colorBar->bounds().w);
}
} // namespace app } // namespace app

View File

@ -128,6 +128,7 @@ private:
HomeView* getHomeView(); HomeView* getHomeView();
void configureWorkspaceLayout(); void configureWorkspaceLayout();
void saveTimelineConfiguration(); void saveTimelineConfiguration();
void saveColorBarConfiguration();
ui::TooltipManager* m_tooltipManager; ui::TooltipManager* m_tooltipManager;
Dock* m_dock; Dock* m_dock;
@ -152,6 +153,7 @@ private:
std::unique_ptr<DevConsoleView> m_devConsoleView; std::unique_ptr<DevConsoleView> m_devConsoleView;
#endif #endif
obs::scoped_connection m_timelineResizeConn; obs::scoped_connection m_timelineResizeConn;
obs::scoped_connection m_colorBarResizeConn;
}; };
} // namespace app } // namespace app