This repository has been archived on 2022-08-05. You can view files and clone it, but cannot push or open issues or pull requests.
Resizor/Resizor/WindowSizeSetter.cs

46 lines
1.4 KiB
C#

using System.Drawing;
using System.Linq;
using CC_Functions.W32;
namespace Resizor
{
internal class WindowSizeSetter
{
public readonly Wnd32 Window;
public Rectangle Pos;
private WindowSizeSetter(Wnd32 window, Rectangle pos)
{
Window = window;
Pos = pos;
}
public static void Make(Wnd32 window, Rectangle pos)
{
WindowSizeSetter[] match = Program.Ctx.WindowSizeSetters.Where(s => s.Window == window).ToArray();
switch (match.Length)
{
case 0:
Program.Ctx.WindowSizeSetters.Add(new WindowSizeSetter(window, pos));
break;
case 1:
match[0].Pos = pos;
break;
default:
for (int i = 0; i < match.Length; i++)
if (i == match.Length - 1)
match[0].Pos = pos;
else
Program.Ctx.WindowSizeSetters.Remove(match[i]);
break;
}
}
public static void TryRemove(Wnd32 window)
{
WindowSizeSetter[] match = Program.Ctx.WindowSizeSetters.Where(s => s.Window == window).ToArray();
if (match.Length > 0)
Program.Ctx.WindowSizeSetters.RemoveAll(s => s.Window == window);
}
}
}