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:
parent
fc4b06815a
commit
d4515e739b
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue