From 47c8e5eae34bbfb84cc7556fd557b7dd807c7332 Mon Sep 17 00:00:00 2001 From: David Capello Date: Wed, 24 Aug 2022 17:29:29 -0300 Subject: [PATCH] Save/restore color bar splitter position correctly --- src/app/ui/main_window.cpp | 25 +++++++++++++++++++++++-- src/app/ui/main_window.h | 2 ++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/app/ui/main_window.cpp b/src/app/ui/main_window.cpp index 3f0b97523..4c59d1c28 100644 --- a/src/app/ui/main_window.cpp +++ b/src/app/ui/main_window.cpp @@ -61,6 +61,7 @@ using namespace ui; static const char* kLegacyLayoutMainWindowSection = "layout:main_window"; static const char* kLegacyLayoutTimelineSplitter = "timeline_splitter"; +static const char* kLegacyLayoutColorBarSplitter = "color_bar_splitter"; class ScreenScalePanic : public INotificationDelegate { public: @@ -195,6 +196,7 @@ void MainWindow::initialize() MainWindow::~MainWindow() { m_timelineResizeConn.disconnect(); + m_colorBarResizeConn.disconnect(); m_dock->resetDocks(); m_customizableDock->resetDocks(); @@ -381,9 +383,14 @@ void MainWindow::popTimeline() void MainWindow::setDefaultLayout() { m_timelineResizeConn.disconnect(); + m_colorBarResizeConn.disconnect(); + + auto colorBarWidth = get_config_double(kLegacyLayoutMainWindowSection, + kLegacyLayoutColorBarSplitter, + m_colorBar->sizeHint().w); 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::RIGHT, m_toolBar.get()); m_customizableDock->center()->center()->dock(ui::BOTTOM, @@ -396,9 +403,14 @@ void MainWindow::setDefaultLayout() void MainWindow::setDefaultMirrorLayout() { m_timelineResizeConn.disconnect(); + m_colorBarResizeConn.disconnect(); + + auto colorBarWidth = get_config_double(kLegacyLayoutMainWindowSection, + kLegacyLayoutColorBarSplitter, + m_colorBar->sizeHint().w); 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::LEFT, m_toolBar.get()); m_customizableDock->center()->center()->dock(ui::BOTTOM, @@ -650,6 +662,8 @@ void MainWindow::configureWorkspaceLayout() // TODO set visibility of color bar widgets m_colorBar->setVisible(normal && isDoc); + m_colorBarResizeConn = m_customizableDock->Resize.connect( + [this] { saveColorBarConfiguration(); }); m_toolBar->setVisible(normal && isDoc); m_statusBar->setVisible(normal); @@ -728,4 +742,11 @@ void MainWindow::saveTimelineConfiguration() std::clamp(timelineSplitterPos * 100.0, 1.0, 99.0)); } +void MainWindow::saveColorBarConfiguration() +{ + set_config_double(kLegacyLayoutMainWindowSection, + kLegacyLayoutColorBarSplitter, + m_colorBar->bounds().w); +} + } // namespace app diff --git a/src/app/ui/main_window.h b/src/app/ui/main_window.h index d5eff28a1..acab9dd6f 100644 --- a/src/app/ui/main_window.h +++ b/src/app/ui/main_window.h @@ -128,6 +128,7 @@ private: HomeView* getHomeView(); void configureWorkspaceLayout(); void saveTimelineConfiguration(); + void saveColorBarConfiguration(); ui::TooltipManager* m_tooltipManager; Dock* m_dock; @@ -152,6 +153,7 @@ private: std::unique_ptr m_devConsoleView; #endif obs::scoped_connection m_timelineResizeConn; + obs::scoped_connection m_colorBarResizeConn; }; } // namespace app