Add MeasureWindow flag to Window helps if you want window with scrollbars but first measure content size.

This commit is contained in:
and3md 2017-06-29 20:19:49 +02:00
parent 2bebff9404
commit ab1ddc7529
4 changed files with 9 additions and 1 deletions

View File

@ -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

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);