Skip to content

Commit 0420ba4

Browse files
author
David Khristepher Santos
committed
Remember last position and state of Preview window
1 parent df039b9 commit 0420ba4

3 files changed

Lines changed: 62 additions & 2 deletions

File tree

Diffusion.Toolkit/Configuration/Settings.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public class Settings : SettingsContainer, IScanOptions
7575
private int _thumbnailSpacing;
7676
private ThumbnailViewMode _thumbnailViewMode;
7777
private RenderMode _renderMode;
78+
private PreviewWindowState _previewWindowState;
7879

7980
public Settings()
8081
{
@@ -124,6 +125,7 @@ public Settings()
124125

125126
NavigationSection = new NavigationSectionSettings();
126127
NavigationSection.Attach(this);
128+
PreviewWindowState = new PreviewWindowState();
127129

128130
//if (initialize)
129131
//{
@@ -509,4 +511,22 @@ public RenderMode RenderMode
509511
get => _renderMode;
510512
set => UpdateValue(ref _renderMode, value);
511513
}
514+
515+
public PreviewWindowState PreviewWindowState
516+
{
517+
get => _previewWindowState;
518+
set => UpdateValue(ref _previewWindowState, value);
519+
}
520+
521+
}
522+
523+
public class PreviewWindowState
524+
{
525+
public bool IsSet { get; set; }
526+
public WindowState State { get; set; }
527+
public double Top { get; set; }
528+
public double Left { get; set; }
529+
public double Width { get; set; }
530+
public double Height { get; set; }
531+
public bool IsFullScreen { get; set; }
512532
}

Diffusion.Toolkit/MainWindow.xaml.cs

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
using Diffusion.Database.Models;
4141
using Image = System.Windows.Controls.Image;
4242
using System.Windows.Media;
43+
using SixLabors.ImageSharp;
44+
using Size = System.Windows.Size;
4345

4446
namespace Diffusion.Toolkit
4547
{
@@ -365,7 +367,44 @@ private void PopoutPreview(bool hidePreview, bool maximized, bool fullscreen)
365367
_previewWindow?.SetCurrentImage(image);
366368
};
367369

368-
if (fullscreen)
370+
void UpdatePreviewWindowState()
371+
{
372+
_settings.PreviewWindowState.Top = _previewWindow.Top;
373+
_settings.PreviewWindowState.Left = _previewWindow.Left;
374+
_settings.PreviewWindowState.Height = _previewWindow.Height;
375+
_settings.PreviewWindowState.Width = _previewWindow.Width;
376+
_settings.PreviewWindowState.State = _previewWindow.WindowState;
377+
_settings.PreviewWindowState.IsFullScreen = _previewWindow.IsFullScreen;
378+
_settings.PreviewWindowState.IsSet = true;
379+
_settings.SetDirty();
380+
}
381+
382+
_previewWindow.LocationChanged += (sender, args) =>
383+
{
384+
UpdatePreviewWindowState();
385+
};
386+
387+
_previewWindow.SizeChanged += (sender, args) =>
388+
{
389+
UpdatePreviewWindowState();
390+
};
391+
392+
_previewWindow.StateChanged += (sender, args) =>
393+
{
394+
UpdatePreviewWindowState();
395+
};
396+
397+
if (_settings.PreviewWindowState.IsSet)
398+
{
399+
_previewWindow.WindowStartupLocation = WindowStartupLocation.Manual;
400+
_previewWindow.WindowState = _settings.PreviewWindowState.State;
401+
_previewWindow.Width = _settings.PreviewWindowState.Width;
402+
_previewWindow.Height = _settings.PreviewWindowState.Height;
403+
_previewWindow.Top = _settings.PreviewWindowState.Top;
404+
_previewWindow.Left = _settings.PreviewWindowState.Left;
405+
}
406+
407+
if (fullscreen || _settings.PreviewWindowState.IsFullScreen)
369408
{
370409
_previewWindow.ShowFullScreen();
371410
}

Diffusion.Toolkit/Release Notes/What's New v1.9.1.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@
1414
* Fix for root folder name at the root of a drive (e.g. `X:\`) showing as blank
1515
* Fix for AutoRefresh being broken by the last update
1616
* Date search fix for Query
17-
* Prevent clicking on query input to edit from dismissing it
17+
* Prevent clicking on query input to edit from dismissing it
18+
* Remember last position and state of Preview window

0 commit comments

Comments
 (0)