diff --git a/src/MijnBesluit.Uitroller/Instellingenvenster.xaml b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml
index 0a06723..98b4ff9 100644
--- a/src/MijnBesluit.Uitroller/Instellingenvenster.xaml
+++ b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml
@@ -1,14 +1,16 @@
+ venster is (geen gedeeld resource-woordenboek in dit project). Indeling (Grid per groep:
+ label/veld/knop, groepen recht onder elkaar) is overgenomen van RenH.Uitroller, zodat
+ instellingenschermen van verschillende projecten er hetzelfde uitzien. -->
@@ -25,7 +27,7 @@
-
+
@@ -81,6 +83,7 @@
-
-
@@ -119,105 +116,108 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/src/MijnBesluit.Uitroller/Instellingenvenster.xaml.cs b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml.cs
index b5e06bc..804c817 100644
--- a/src/MijnBesluit.Uitroller/Instellingenvenster.xaml.cs
+++ b/src/MijnBesluit.Uitroller/Instellingenvenster.xaml.cs
@@ -14,12 +14,19 @@ namespace MijnBesluit.Uitroller;
public partial class Instellingenvenster : Window
{
private readonly Instellingen _instellingen;
+ private readonly Vensterstand _vensterstand =
+ Vensterstand.Lees(Instellingen.InstellingenVensterPad, Instellingen.InstellingenVensterPadNaastExe);
public Instellingenvenster(Instellingen instellingen)
{
InitializeComponent();
_instellingen = instellingen;
VeldenVullen();
+
+ // Positie/grootte van de vorige keer terugzetten en bij sluiten weer bewaren (eigen
+ // bestand, los van het hoofdvenster). Geport van RenH.Uitroller.
+ VensterstandTerugzetten();
+ Closing += (_, __) => VensterstandBewaren();
}
private void VeldenVullen()
@@ -38,6 +45,51 @@ public partial class Instellingenvenster : Window
VeldGiteaVerversen.Text = _instellingen.GiteaVerversSeconden.ToString();
}
+ /// Zet het venster terug op de onthouden plek en grootte, mits die nog (deels) op een
+ /// beeldscherm valt (anders opent hij gecentreerd op de eigenaar, zoals in de XAML).
+ private void VensterstandTerugzetten()
+ {
+ if (!_vensterstand.Bruikbaar) return;
+
+ double schermL = SystemParameters.VirtualScreenLeft;
+ double schermB = SystemParameters.VirtualScreenTop;
+ double schermBr = SystemParameters.VirtualScreenWidth;
+ double schermH = SystemParameters.VirtualScreenHeight;
+
+ const double kier = 60;
+ bool zichtbaar =
+ (_vensterstand.Links + _vensterstand.Breedte) > schermL + kier &&
+ _vensterstand.Links < schermL + schermBr - kier &&
+ (_vensterstand.Boven + _vensterstand.Hoogte) > schermB + kier &&
+ _vensterstand.Boven < schermB + schermH - kier;
+
+ if (!zichtbaar) return;
+
+ WindowStartupLocation = WindowStartupLocation.Manual;
+ Left = _vensterstand.Links;
+ Top = _vensterstand.Boven;
+ Width = _vensterstand.Breedte;
+ Height = _vensterstand.Hoogte;
+ if (_vensterstand.Gemaximaliseerd) WindowState = WindowState.Maximized;
+ }
+
+ /// Bewaart de huidige plek en grootte (RestoreBounds bij gemaximaliseerd), in het eigen
+ /// bestand van het instellingenscherm.
+ private void VensterstandBewaren()
+ {
+ Rect b = WindowState == WindowState.Normal
+ ? new Rect(Left, Top, Width, Height)
+ : RestoreBounds;
+ if (b.IsEmpty || b.Width < 1 || b.Height < 1) return;
+
+ _vensterstand.Links = b.Left;
+ _vensterstand.Boven = b.Top;
+ _vensterstand.Breedte = b.Width;
+ _vensterstand.Hoogte = b.Height;
+ _vensterstand.Gemaximaliseerd = WindowState == WindowState.Maximized;
+ _vensterstand.Bewaar(Instellingen.InstellingenVensterPad);
+ }
+
private static void Kies(System.Windows.Controls.TextBox veld)
{
var dlg = new Microsoft.Win32.OpenFolderDialog { Title = "Kies een map" };