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;