diff --git a/Source/Editor/GUI/Docking/FloatWindowDockPanel.cs b/Source/Editor/GUI/Docking/FloatWindowDockPanel.cs
index f8ffe62ad..7bb85751a 100644
--- a/Source/Editor/GUI/Docking/FloatWindowDockPanel.cs
+++ b/Source/Editor/GUI/Docking/FloatWindowDockPanel.cs
@@ -72,7 +72,7 @@ namespace FlaxEditor.GUI.Docking
settings.Size = size;
settings.Position = location;
settings.MinimumSize = new Float2(1);
- settings.MaximumSize = new Float2(4096);
+ settings.MaximumSize = Float2.Zero; // Unlimited size
settings.Fullscreen = false;
settings.HasBorder = true;
settings.SupportsTransparency = false;
diff --git a/Source/Engine/Platform/CreateWindowSettings.cs b/Source/Engine/Platform/CreateWindowSettings.cs
index d4d9ce727..8f7cd8c0d 100644
--- a/Source/Engine/Platform/CreateWindowSettings.cs
+++ b/Source/Engine/Platform/CreateWindowSettings.cs
@@ -12,7 +12,7 @@ namespace FlaxEngine
Position = new Float2(100, 100),
Size = new Float2(640, 480),
MinimumSize = Float2.One,
- MaximumSize = new Float2(4100, 4100),
+ MaximumSize = Float2.Zero, // Unlimited size
StartPosition = WindowStartPosition.CenterParent,
HasBorder = true,
ShowInTaskbar = true,
diff --git a/Source/Engine/Platform/CreateWindowSettings.h b/Source/Engine/Platform/CreateWindowSettings.h
index 1ff596df9..9c543a05d 100644
--- a/Source/Engine/Platform/CreateWindowSettings.h
+++ b/Source/Engine/Platform/CreateWindowSettings.h
@@ -59,9 +59,9 @@ DECLARE_SCRIPTING_TYPE_MINIMAL(CreateWindowSettings);
API_FIELD() Float2 MinimumSize = Float2(1, 1);
///
- /// The maximum size.
+ /// The maximum size. Set to 0 to use unlimited size.
///
- API_FIELD() Float2 MaximumSize = Float2(8192, 4096);
+ API_FIELD() Float2 MaximumSize = Float2(0, 0);
///
/// The start position mode.
diff --git a/Source/Engine/Platform/Linux/LinuxWindow.cpp b/Source/Engine/Platform/Linux/LinuxWindow.cpp
index f308a0143..b3bae0276 100644
--- a/Source/Engine/Platform/Linux/LinuxWindow.cpp
+++ b/Source/Engine/Platform/Linux/LinuxWindow.cpp
@@ -150,9 +150,9 @@ LinuxWindow::LinuxWindow(const CreateWindowSettings& settings)
{
// Set resizing range
hints.min_width = (int)settings.MinimumSize.X;
- hints.max_width = (int)settings.MaximumSize.X;
+ hints.max_width = settings.MaximumSize.X > 0 ? (int)settings.MaximumSize.X : MAX_uint16;
hints.min_height = (int)settings.MinimumSize.Y;
- hints.max_height = (int)settings.MaximumSize.Y;
+ hints.max_height = settings.MaximumSize.Y > 0 ? (int)settings.MaximumSize.Y : MAX_uint16;
hints.flags |= USSize;
}
// honor the WM placement except for manual (overriding) placements
diff --git a/Source/Engine/Platform/Mac/MacWindow.cpp b/Source/Engine/Platform/Mac/MacWindow.cpp
index 38e8c95df..4c392fc4e 100644
--- a/Source/Engine/Platform/Mac/MacWindow.cpp
+++ b/Source/Engine/Platform/Mac/MacWindow.cpp
@@ -751,7 +751,8 @@ MacWindow::MacWindow(const CreateWindowSettings& settings)
[window setWindow:this];
[window setReleasedWhenClosed:NO];
[window setMinSize:NSMakeSize(settings.MinimumSize.X, settings.MinimumSize.Y)];
- [window setMaxSize:NSMakeSize(settings.MaximumSize.X, settings.MaximumSize.Y)];
+ if (settings.MaximumSize.SumValues() > 0)
+ [window setMaxSize:NSMakeSize(settings.MaximumSize.X, settings.MaximumSize.Y)];
[window setOpaque:!settings.SupportsTransparency];
[window setContentView:view];
if (settings.AllowInput)
diff --git a/Source/Engine/Platform/Windows/WindowsWindow.cpp b/Source/Engine/Platform/Windows/WindowsWindow.cpp
index ff65e9864..174160922 100644
--- a/Source/Engine/Platform/Windows/WindowsWindow.cpp
+++ b/Source/Engine/Platform/Windows/WindowsWindow.cpp
@@ -1056,22 +1056,23 @@ LRESULT WindowsWindow::WndProc(UINT msg, WPARAM wParam, LPARAM lParam)
case WM_GETMINMAXINFO:
{
const auto minMax = reinterpret_cast(lParam);
-
- int32 borderWidth = 0, borderHeight = 0;
- if (_settings.HasBorder)
- {
- const DWORD windowStyle = GetWindowLongW(_handle, GWL_STYLE);
- const DWORD windowExStyle = GetWindowLongW(_handle, GWL_EXSTYLE);
- RECT borderRect = { 0, 0, 0, 0 };
- AdjustWindowRectEx(&borderRect, windowStyle, false, windowExStyle);
- borderWidth = borderRect.right - borderRect.left;
- borderHeight = borderRect.bottom - borderRect.top;
- }
-
minMax->ptMinTrackSize.x = (int32)_settings.MinimumSize.X;
minMax->ptMinTrackSize.y = (int32)_settings.MinimumSize.Y;
- minMax->ptMaxTrackSize.x = (int32)_settings.MaximumSize.X + borderWidth;
- minMax->ptMaxTrackSize.y = (int32)_settings.MaximumSize.Y + borderHeight;
+ if (_settings.MaximumSize.SumValues() > 0)
+ {
+ int32 borderWidth = 0, borderHeight = 0;
+ if (_settings.HasBorder)
+ {
+ const DWORD windowStyle = GetWindowLongW(_handle, GWL_STYLE);
+ const DWORD windowExStyle = GetWindowLongW(_handle, GWL_EXSTYLE);
+ RECT borderRect = { 0, 0, 0, 0 };
+ AdjustWindowRectEx(&borderRect, windowStyle, false, windowExStyle);
+ borderWidth = borderRect.right - borderRect.left;
+ borderHeight = borderRect.bottom - borderRect.top;
+ }
+ minMax->ptMaxTrackSize.x = (int32)_settings.MaximumSize.X + borderWidth;
+ minMax->ptMaxTrackSize.y = (int32)_settings.MaximumSize.Y + borderHeight;
+ }
// Include Windows task bar size into maximized tool window
WINDOWPLACEMENT e;