diff --git a/dll/win32/comctl32/toolbar.c b/dll/win32/comctl32/toolbar.c index c43dc0c980..9eb7319f1a 100644 --- a/dll/win32/comctl32/toolbar.c +++ b/dll/win32/comctl32/toolbar.c @@ -1455,7 +1455,26 @@ TOOLBAR_WrapToolbar(TOOLBAR_INFO *infoPtr) btnPtr = infoPtr->buttons; x = infoPtr->nIndent; + +#ifdef __REACTOS__ + RECT rc; + if (GetParent(infoPtr->hwndSelf)) + { + /* this can get the parents width, to know how far we can extend + * this toolbar. We cannot use its height, as there may be multiple + * toolbars in a rebar control + */ + GetClientRect(GetParent(infoPtr->hwndSelf), &rc); + width = rc.right - rc.left; + } + else + { + GetWindowRect(infoPtr->hwndSelf, &rc); + width = rc.right - rc.left; + } +#else width = infoPtr->client_rect.right - infoPtr->client_rect.left; +#endif bButtonWrap = FALSE; @@ -3203,6 +3222,14 @@ TOOLBAR_AutoSize (TOOLBAR_INFO *infoPtr) TRACE("auto sizing, style=%#x\n", infoPtr->dwStyle); TRACE("nRows: %d, infoPtr->nButtonHeight: %d\n", infoPtr->nRows, infoPtr->nButtonHeight); +#ifdef __REACTOS__ + if ((infoPtr->dwStyle & TBSTYLE_WRAPABLE) || (infoPtr->dwExStyle & TBSTYLE_EX_VERTICAL)) + { + TOOLBAR_LayoutToolbar(infoPtr); + InvalidateRect( infoPtr->hwndSelf, NULL, TRUE ); + } +#endif + if (!(infoPtr->dwStyle & CCS_NORESIZE)) { RECT window_rect, parent_rect;