From ab1ddc7529ea8d444439a6963d4fc6ea1479cb5a Mon Sep 17 00:00:00 2001 From: and3md Date: Thu, 29 Jun 2017 20:19:49 +0200 Subject: [PATCH] Add MeasureWindow flag to Window helps if you want window with scrollbars but first measure content size. --- src/dlangui/platforms/common/platform.d | 2 ++ src/dlangui/platforms/sdl/sdlapp.d | 3 +++ src/dlangui/platforms/windows/winapp.d | 3 ++- src/dlangui/platforms/x11/x11app.d | 2 ++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/dlangui/platforms/common/platform.d b/src/dlangui/platforms/common/platform.d index 18b03337..02736566 100644 --- a/src/dlangui/platforms/common/platform.d +++ b/src/dlangui/platforms/common/platform.d @@ -52,6 +52,8 @@ enum WindowFlag : uint { Fullscreen = 2, /// modal window - grabs input focus Modal = 4, + /// measure window size on window.show() - helps if you want scrollWindow but on show() you want to set window to mainWidget measured size + MeasureSize = 8, } /// Window states diff --git a/src/dlangui/platforms/sdl/sdlapp.d b/src/dlangui/platforms/sdl/sdlapp.d index 560f623c..9e47a5c0 100644 --- a/src/dlangui/platforms/sdl/sdlapp.d +++ b/src/dlangui/platforms/sdl/sdlapp.d @@ -352,6 +352,9 @@ class SDLWindow : Window { } if (_mainWidget) { _mainWidget.measure(SIZE_UNSPECIFIED, SIZE_UNSPECIFIED); + if (flags & WindowFlag.MeasureSize) { + resizeWindow(Point(_mainWidget.measuredWidth, _mainWidget.measuredHeight)); + } adjustWindowOrContentSize(_mainWidget.measuredWidth, _mainWidget.measuredHeight); } diff --git a/src/dlangui/platforms/windows/winapp.d b/src/dlangui/platforms/windows/winapp.d index 2eda59c6..0d284fcf 100644 --- a/src/dlangui/platforms/windows/winapp.d +++ b/src/dlangui/platforms/windows/winapp.d @@ -432,9 +432,10 @@ class Win32Window : Window { _mainWidget = new Widget(); } ReleaseCapture(); - if (_mainWidget) { _mainWidget.measure(SIZE_UNSPECIFIED, SIZE_UNSPECIFIED); + if (flags & WindowFlag.MeasureSize) + resizeWindow(Point(_mainWidget.measuredWidth, _mainWidget.measuredHeight)); adjustWindowOrContentSize(_mainWidget.measuredWidth, _mainWidget.measuredHeight); } diff --git a/src/dlangui/platforms/x11/x11app.d b/src/dlangui/platforms/x11/x11app.d index a5c01e62..211df819 100644 --- a/src/dlangui/platforms/x11/x11app.d +++ b/src/dlangui/platforms/x11/x11app.d @@ -430,6 +430,8 @@ class X11Window : DWindow { } if (_mainWidget) { _mainWidget.measure(SIZE_UNSPECIFIED, SIZE_UNSPECIFIED); + if (flags & WindowFlag.MeasureSize) + resizeWindow(Point(_mainWidget.measuredWidth, _mainWidget.measuredHeight)); _windowRect.right = _dx;// hack to set windowRect, remove when _windowRect will be full supported on X11 _windowRect.bottom = _dy; adjustWindowOrContentSize(_mainWidget.measuredWidth, _mainWidget.measuredHeight);