comctl32/combo: Simplify child controls position update helper.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2019-11-27 13:27:21 +03:00 committed by Alexandre Julliard
parent fc4b06815a
commit d4515e739b
1 changed files with 26 additions and 34 deletions

View File

@ -1350,42 +1350,34 @@ static LRESULT COMBO_GetText( HEADCOMBO *lphc, INT count, LPWSTR buf )
* This function sets window positions according to the updated * This function sets window positions according to the updated
* component placement struct. * component placement struct.
*/ */
static void CBResetPos( static void CBResetPos(HEADCOMBO *combo)
LPHEADCOMBO lphc,
const RECT *rectEdit,
const RECT *rectLB,
BOOL bRedraw)
{ {
BOOL bDrop = (CB_GETTYPE(lphc) != CBS_SIMPLE); BOOL drop = CB_GETTYPE(combo) != CBS_SIMPLE;
/* NOTE: logs sometimes have WM_LBUTTONUP before a cascade of /* NOTE: logs sometimes have WM_LBUTTONUP before a cascade of
* sizing messages */ * sizing messages */
if (combo->wState & CBF_EDIT)
SetWindowPos(combo->hWndEdit, 0, combo->textRect.left, combo->textRect.top,
combo->textRect.right - combo->textRect.left,
combo->textRect.bottom - combo->textRect.top,
SWP_NOZORDER | SWP_NOACTIVATE | (drop ? SWP_NOREDRAW : 0));
if( lphc->wState & CBF_EDIT ) SetWindowPos(combo->hWndLBox, 0, combo->droppedRect.left, combo->droppedRect.top,
SetWindowPos( lphc->hWndEdit, 0, combo->droppedRect.right - combo->droppedRect.left,
rectEdit->left, rectEdit->top, combo->droppedRect.bottom - combo->droppedRect.top,
rectEdit->right - rectEdit->left, SWP_NOACTIVATE | SWP_NOZORDER | (drop ? SWP_NOREDRAW : 0));
rectEdit->bottom - rectEdit->top,
SWP_NOZORDER | SWP_NOACTIVATE | ((bDrop) ? SWP_NOREDRAW : 0) );
SetWindowPos( lphc->hWndLBox, 0, if (drop)
rectLB->left, rectLB->top, {
rectLB->right - rectLB->left, if (combo->wState & CBF_DROPPED)
rectLB->bottom - rectLB->top, {
SWP_NOACTIVATE | SWP_NOZORDER | ((bDrop) ? SWP_NOREDRAW : 0) ); combo->wState &= ~CBF_DROPPED;
ShowWindow(combo->hWndLBox, SW_HIDE);
}
if( bDrop ) if (!(combo->wState & CBF_NOREDRAW))
{ RedrawWindow(combo->self, NULL, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW);
if( lphc->wState & CBF_DROPPED ) }
{
lphc->wState &= ~CBF_DROPPED;
ShowWindow( lphc->hWndLBox, SW_HIDE );
}
if( bRedraw && !(lphc->wState & CBF_NOREDRAW) )
RedrawWindow( lphc->self, NULL, 0,
RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW );
}
} }
@ -1433,7 +1425,7 @@ static void COMBO_Size( LPHEADCOMBO lphc )
CBCalcPlacement(lphc); CBCalcPlacement(lphc);
CBResetPos( lphc, &lphc->textRect, &lphc->droppedRect, TRUE ); CBResetPos(lphc);
} }
@ -1461,7 +1453,7 @@ static void COMBO_Font( LPHEADCOMBO lphc, HFONT hFont, BOOL bRedraw )
{ {
CBCalcPlacement(lphc); CBCalcPlacement(lphc);
CBResetPos( lphc, &lphc->textRect, &lphc->droppedRect, TRUE ); CBResetPos(lphc);
} }
else else
{ {
@ -1490,7 +1482,7 @@ static LRESULT COMBO_SetItemHeight( LPHEADCOMBO lphc, INT index, INT height )
{ {
CBCalcPlacement(lphc); CBCalcPlacement(lphc);
CBResetPos( lphc, &lphc->textRect, &lphc->droppedRect, TRUE ); CBResetPos(lphc);
} }
else else
{ {