Index: source/tools/atlas/AtlasUI/CustomControls/SnapSplitterWindow/SnapSplitterWindow.h =================================================================== --- source/tools/atlas/AtlasUI/CustomControls/SnapSplitterWindow/SnapSplitterWindow.h +++ source/tools/atlas/AtlasUI/CustomControls/SnapSplitterWindow/SnapSplitterWindow.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -20,8 +20,11 @@ class SnapSplitterWindow : public wxSplitterWindow { public: - SnapSplitterWindow(wxWindow* parent, long style = wxSP_3D); + SnapSplitterWindow(wxWindow* parent, long style = wxSP_3D, const wxString& configPath = wxString()); + ~SnapSplitterWindow(); + void SetDefaultSashPosition(int sashPosition); + virtual bool SplitVertically(wxWindow* window1, wxWindow* window2, int sashPosition = 0); virtual bool SplitHorizontally(wxWindow* window1, wxWindow* window2, int sashPosition = 0); @@ -31,6 +34,8 @@ int m_DefaultSashPosition; int m_SnapTolerance; + wxString m_ConfigPath; + bool m_SashPositionWasChanged; DECLARE_EVENT_TABLE(); }; Index: source/tools/atlas/AtlasUI/CustomControls/SnapSplitterWindow/SnapSplitterWindow.cpp =================================================================== --- source/tools/atlas/AtlasUI/CustomControls/SnapSplitterWindow/SnapSplitterWindow.cpp +++ source/tools/atlas/AtlasUI/CustomControls/SnapSplitterWindow/SnapSplitterWindow.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,20 +19,32 @@ #include "SnapSplitterWindow.h" +#include "wx/confbase.h" + BEGIN_EVENT_TABLE(SnapSplitterWindow, wxSplitterWindow) EVT_SPLITTER_SASH_POS_CHANGING(wxID_ANY, SnapSplitterWindow::OnSashPosChanging) EVT_SPLITTER_DCLICK(wxID_ANY, SnapSplitterWindow::OnDoubleClick) END_EVENT_TABLE() -SnapSplitterWindow::SnapSplitterWindow(wxWindow* parent, long style) +SnapSplitterWindow::SnapSplitterWindow(wxWindow* parent, long style, const wxString& configPath) : wxSplitterWindow(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, style | wxSP_LIVE_UPDATE), - m_SnapTolerance(16) + m_SnapTolerance(16), + m_ConfigPath(configPath), + m_SashPositionWasChanged(false) { // Set min size, to disable unsplitting SetMinimumPaneSize(32); } +SnapSplitterWindow::~SnapSplitterWindow() +{ + wxConfigBase* cfg = wxConfigBase::Get(false); + if (!cfg || !m_SashPositionWasChanged) + return; + cfg->Write(m_ConfigPath, GetSashPosition()); +} + void SnapSplitterWindow::SetDefaultSashPosition(int sashPosition) { m_DefaultSashPosition = sashPosition; @@ -50,6 +62,13 @@ { if (sashPosition == 0) sashPosition = m_DefaultSashPosition; + + // We use the same config path for both horizontal and vertical splits, + // because we can't have both at the same moment. + wxConfigBase* cfg = wxConfigBase::Get(false); + if (cfg) + cfg->Read(m_ConfigPath, &sashPosition, sashPosition); + return wxSplitterWindow::SplitVertically(window1, window2, sashPosition); } @@ -57,6 +76,13 @@ { if (sashPosition == 0) sashPosition = m_DefaultSashPosition; + + // We use the same config path for both horizontal and vertical splits, + // because we can't have both at the same moment. + wxConfigBase* cfg = wxConfigBase::Get(false); + if (cfg) + cfg->Read(m_ConfigPath, &sashPosition, sashPosition); + return wxSplitterWindow::SplitHorizontally(window1, window2, sashPosition); } @@ -69,6 +95,8 @@ { evt.SetSashPosition(defaultPos); } + + m_SashPositionWasChanged = true; } void SnapSplitterWindow::OnDoubleClick(wxSplitterEvent& WXUNUSED(evt)) Index: source/tools/atlas/AtlasUI/ScenarioEditor/SectionLayout.cpp =================================================================== --- source/tools/atlas/AtlasUI/ScenarioEditor/SectionLayout.cpp +++ source/tools/atlas/AtlasUI/ScenarioEditor/SectionLayout.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -17,15 +17,11 @@ #include "precompiled.h" -#include "wx/filename.h" -#include "wx/wfstream.h" - #include "SectionLayout.h" #include "CustomControls/SnapSplitterWindow/SnapSplitterWindow.h" - +#include "General/Datafile.h" #include "ScenarioEditor.h" - #include "Sections/Cinema/Cinema.h" #include "Sections/Environment/Environment.h" #include "Sections/Map/Map.h" @@ -33,7 +29,8 @@ #include "Sections/Player/Player.h" #include "Sections/Terrain/Terrain.h" -#include "General/Datafile.h" +#include "wx/filename.h" +#include "wx/wfstream.h" ////////////////////////////////////////////////////////////////////////// @@ -257,8 +254,10 @@ void SectionLayout::SetWindow(wxWindow* window) { - m_HorizSplitter = new SnapSplitterWindow(window, wxSP_NOBORDER); - m_VertSplitter = new SnapSplitterWindow(m_HorizSplitter, wxSP_3D); + m_HorizSplitter = new SnapSplitterWindow( + window, wxSP_NOBORDER, _T("Scenario Editor/Layout/VerticalSplitter")); + m_VertSplitter = new SnapSplitterWindow( + m_HorizSplitter, wxSP_3D, _T("Scenario Editor/Layout/HorizontalSplitter")); } wxWindow* SectionLayout::GetCanvasParent() Index: source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Cinema/Cinema.cpp =================================================================== --- source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Cinema/Cinema.cpp +++ source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Cinema/Cinema.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Wildfire Games. +/* Copyright (C) 2020 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -21,7 +21,6 @@ #include "GameInterface/Messages.h" #include "ScenarioEditor/ScenarioEditor.h" -#include "CustomControls/ColorDialog/ColorDialog.h" using AtlasMessage::Shareable;