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* 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

View File

@ -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<DevConsoleView> m_devConsoleView;
#endif
obs::scoped_connection m_timelineResizeConn;
obs::scoped_connection m_colorBarResizeConn;
};
} // namespace app