diff --git a/src/ui/Logic/LayoutManager.cs b/src/ui/Logic/LayoutManager.cs index b4aca20b7..cbb8b2431 100644 --- a/src/ui/Logic/LayoutManager.cs +++ b/src/ui/Logic/LayoutManager.cs @@ -12,7 +12,10 @@ namespace Nikse.SubtitleEdit.Logic public static class LayoutManager { public const int LayoutNoVideo = 11; - public static SplitContainer MainSplitContainer; + public static SplitContainer MainSplitContainer { get; set; } + + private static int _lastLayout = -1; + private static Dictionary LayoutInMemory { get; set; } public static void SetLayout(int layout, Form form, Control videoPlayer, SubtitleListView subtitleListView, GroupBox groupBoxWaveform, GroupBox groupBoxEdit, SplitterEventHandler splitMoved) { @@ -21,6 +24,21 @@ namespace Nikse.SubtitleEdit.Logic layout = 0; } + if (LayoutInMemory == null) + { + LayoutInMemory = new Dictionary(); + } + + if (_lastLayout >= 0) + { + if (LayoutInMemory.ContainsKey(_lastLayout)) + { + LayoutInMemory.Remove(_lastLayout); + } + + LayoutInMemory.Add(_lastLayout, SaveLayout()); + } + switch (layout) { case 0: @@ -60,6 +78,13 @@ namespace Nikse.SubtitleEdit.Logic SetLayout11(form, videoPlayer, subtitleListView, groupBoxWaveform, groupBoxEdit, splitMoved); break; } + + if (LayoutInMemory.ContainsKey(layout)) + { + RestoreLayout(LayoutInMemory[layout]); + } + + _lastLayout = layout; } // default layout (video right) @@ -562,7 +587,7 @@ namespace Nikse.SubtitleEdit.Logic // auto size spMain.SplitterDistance = form.Height / 2; - spLeftTop.SplitterDistance = (int) (form.Width * 0.4); + spLeftTop.SplitterDistance = (int)(form.Width * 0.4); spLeftBottom.SplitterDistance = Math.Max(10, spLeftBottom.Height - 125); spMain.SplitterMoved += splitMoved;