Skip to content

Commit 5600865

Browse files
committed
Refresh position of non-INItializable EditorWindows when window is resized
1 parent cc0c629 commit 5600865

File tree

5 files changed

+33
-15
lines changed

5 files changed

+33
-15
lines changed

src/TSMapEditor/UI/Controls/EditorWindow.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Microsoft.Xna.Framework;
2-
using Microsoft.Xna.Framework.Graphics;
32
using Rampastring.Tools;
43
using Rampastring.XNAUI;
54
using Rampastring.XNAUI.XNAControls;
@@ -31,6 +30,8 @@ public EditorWindow(WindowManager windowManager) : base(windowManager)
3130

3231
protected bool CanBeMoved { get; set; } = true;
3332

33+
public bool CenterByDefault { get; set; } = true;
34+
3435
protected bool IsDragged;
3536
private Point lastCursorPoint;
3637

@@ -48,7 +49,10 @@ public override void Initialize()
4849

4950
private void WindowManager_RenderResolutionChanged(object sender, EventArgs e)
5051
{
51-
ConstrainPosition();
52+
if (CenterByDefault)
53+
CenterOnParent();
54+
else
55+
ConstrainPosition();
5256
}
5357

5458
public override void Kill()
@@ -91,7 +95,7 @@ protected virtual void Show()
9195
InteractedWith?.Invoke(this, EventArgs.Empty);
9296
}
9397

94-
private void ConstrainPosition()
98+
protected void ConstrainPosition()
9599
{
96100
if (ScaledWidth > WindowManager.RenderResolutionX)
97101
X = (WindowManager.RenderResolutionX - ScaledWidth) / 2;

src/TSMapEditor/UI/Controls/INItializableWindow.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ public INItializableWindow(WindowManager windowManager) : base(windowManager)
2828

2929
protected string SubDirectory { get; set; } = "Windows";
3030

31-
public bool CenterByDefault { get; set; } = true;
32-
3331
public T FindChild<T>(string childName, bool optional = false) where T : XNAControl
3432
{
3533
T child = FindChild<T>(Children, childName);
@@ -96,6 +94,19 @@ public override void Initialize()
9694
}
9795

9896
_initialized = true;
97+
98+
WindowManager.WindowSizeChangedByUser += WindowManager_WindowSizeChangedByUser;
99+
}
100+
101+
private void WindowManager_WindowSizeChangedByUser(object sender, EventArgs e)
102+
{
103+
RefreshLayout();
104+
}
105+
106+
public override void Kill()
107+
{
108+
WindowManager.WindowSizeChangedByUser -= WindowManager_WindowSizeChangedByUser;
109+
base.Kill();
99110
}
100111

101112
protected override void ParseControlINIAttribute(IniFile iniFile, string key, string value)
@@ -122,6 +133,8 @@ public void RefreshLayout()
122133

123134
if (CenterByDefault)
124135
CenterOnParent();
136+
137+
ConstrainPosition();
125138
}
126139

127140
private bool ReadINIForControl(XNAControl control, bool isForLayout = false)

src/TSMapEditor/UI/UIManager.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public override void Initialize()
9898

9999
// We should be the first control to subscribe to this event
100100
WindowManager.WindowSizeChangedByUser += WindowManager_WindowSizeChangedByUser;
101+
WindowManager.RenderResolutionChanged += WindowManager_RenderResolutionChanged;
101102

102103
InitTheme();
103104

@@ -283,6 +284,12 @@ private void ToggleFullscreen_Triggered(object sender, EventArgs e)
283284
}
284285
}
285286

287+
private void WindowManager_RenderResolutionChanged(object sender, EventArgs e)
288+
{
289+
Width = WindowManager.RenderResolutionX;
290+
Height = WindowManager.RenderResolutionY;
291+
}
292+
286293
private void RefreshRenderResolution()
287294
{
288295
if (Game.Window.ClientBounds.Width == 0 || Game.Window.ClientBounds.Height == 0)
@@ -294,9 +301,10 @@ private void RefreshRenderResolution()
294301
if (newRenderWidth != WindowManager.RenderResolutionX || newRenderHeight != WindowManager.RenderResolutionY)
295302
{
296303
WindowManager.SetRenderResolution(newRenderWidth, newRenderHeight);
304+
// Done by event-handling code in WindowManager_RenderResolutionChanged
305+
// Width = WindowManager.RenderResolutionX;
306+
// Height = WindowManager.RenderResolutionY;
297307
RenderResolutionChanged?.Invoke(this, EventArgs.Empty);
298-
Width = WindowManager.RenderResolutionX;
299-
Height = WindowManager.RenderResolutionY;
300308

301309
Parser.Instance.RefreshResolutionConstants(WindowManager);
302310
SetNotificationManagerSizeAndPosition();
@@ -513,6 +521,7 @@ private void ClearResources()
513521

514522
WindowManager.GameClosing -= WindowManager_GameClosing;
515523
WindowManager.WindowSizeChangedByUser -= WindowManager_WindowSizeChangedByUser;
524+
WindowManager.RenderResolutionChanged -= WindowManager_RenderResolutionChanged;
516525
KeyboardCommands.Instance.ToggleFullscreen.Triggered -= ToggleFullscreen_Triggered;
517526

518527
Disable();

src/TSMapEditor/UI/Windows/SelectObjectWindow.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ public override void Initialize()
6767
AddChild(infoPanel);
6868

6969
EnabledChanged += SelectObjectWindow_EnabledChanged;
70-
WindowManager.WindowSizeChangedByUser += WindowManager_WindowSizeChangedByUser;
7170
}
7271

7372
private void ConfirmSelection()
@@ -79,15 +78,9 @@ private void ConfirmSelection()
7978
}
8079
}
8180

82-
private void WindowManager_WindowSizeChangedByUser(object sender, EventArgs e)
83-
{
84-
RefreshLayout();
85-
}
86-
8781
public override void Kill()
8882
{
8983
Keyboard.OnKeyDown -= Keyboard_OnKeyDown;
90-
WindowManager.WindowSizeChangedByUser -= WindowManager_WindowSizeChangedByUser;
9184
base.Kill();
9285
}
9386

src/TSMapEditor/UI/Windows/TriggersWindow.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,6 @@ private void CreateRandomTriggerSetWindow_RandomTriggersSetCreated(object sender
371371

372372
private void WindowManager_WindowSizeChangedByUser(object sender, EventArgs e)
373373
{
374-
RefreshLayout();
375374
ListTriggers();
376375
}
377376

0 commit comments

Comments
 (0)