Author: jimtabor Date: Mon Sep 4 07:03:14 2006 New Revision: 23905
URL: http://svn.reactos.org/svn/reactos?rev=23905&view=rev Log: User32 combo.c: - Patch by Dmitry Timoshkov - do not force repainting on WM_WINDOWPOSCHANGED in combobox, it breaks Z-order based painting. - do nothing in the combobox WM_ERASEBKGND handler do all painting in WM_PAINT like Windows does.
Modified: trunk/reactos/dll/win32/user32/controls/combo.c trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/user32/controls/combo.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/controls/c... ============================================================================== --- trunk/reactos/dll/win32/user32/controls/combo.c (original) +++ trunk/reactos/dll/win32/user32/controls/combo.c Mon Sep 4 07:03:14 2006 @@ -909,34 +909,6 @@ return hBkgBrush; }
-/*********************************************************************** - * COMBO_EraseBackground - */ -static LRESULT COMBO_EraseBackground( - HWND hwnd, - LPHEADCOMBO lphc, - HDC hParamDC) -{ - HBRUSH hBkgBrush; - HDC hDC; - - if(lphc->wState & CBF_EDIT) - return TRUE; - - hDC = (hParamDC) ? hParamDC - : GetDC(hwnd); - /* - * Retrieve the background brush - */ - hBkgBrush = COMBO_PrepareColors(lphc, hDC); - - FillRect(hDC, &lphc->textRect, hBkgBrush); - - if (!hParamDC) - ReleaseDC(hwnd, hDC); - - return TRUE; -}
/*********************************************************************** * COMBO_Paint @@ -962,6 +934,8 @@ hBkgBrush = COMBO_PrepareColors(lphc, hDC);
hPrevBrush = SelectObject( hDC, hBkgBrush ); + if (!(lphc->wState & CBF_EDIT)) + FillRect(hDC, &lphc->textRect, hBkgBrush);
/* * In non 3.1 look, there is a sunken border on the combobox @@ -1603,7 +1577,7 @@ /*********************************************************************** * COMBO_Size */ -static void COMBO_Size( LPHEADCOMBO lphc ) +static void COMBO_Size( LPHEADCOMBO lphc, BOOL bRedraw ) { CBCalcPlacement(lphc->self, lphc, @@ -1611,7 +1585,7 @@ &lphc->buttonRect, &lphc->droppedRect);
- CBResetPos( lphc, &lphc->textRect, &lphc->droppedRect, TRUE ); + CBResetPos( lphc, &lphc->textRect, &lphc->droppedRect, bRedraw ); }
@@ -1904,15 +1878,15 @@ }
case WM_PRINTCLIENT: - if (lParam & PRF_ERASEBKGND) - COMBO_EraseBackground(hwnd, lphc, (HDC)wParam); - /* Fallthrough */ case WM_PAINT: /* wParam may contain a valid HDC! */ return COMBO_Paint(lphc, (HDC)wParam); + case WM_ERASEBKGND: - return COMBO_EraseBackground(hwnd, lphc, (HDC)wParam); + /* do all painting in WM_PAINT like Windows does */ + return 1; + case WM_GETDLGCODE: { LRESULT result = DLGC_WANTARROWS | DLGC_WANTCHARS; @@ -1933,10 +1907,13 @@ * get a WM_SIZE. Since we still want to update the Listbox, we have to * do it here. */ + /* we should not force repainting on WM_WINDOWPOSCHANGED, it breaks + * Z-order based painting. + */ /* fall through */ case WM_SIZE: if( lphc->hWndLBox && - !(lphc->wState & CBF_NORESIZE) ) COMBO_Size( lphc ); + !(lphc->wState & CBF_NORESIZE) ) COMBO_Size( lphc, message == WM_SIZE ); return TRUE; case WM_SETFONT: COMBO_Font( lphc, (HFONT)wParam, (BOOL)lParam );
Modified: trunk/reactos/media/doc/README.WINE URL: http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=2... ============================================================================== --- trunk/reactos/media/doc/README.WINE (original) +++ trunk/reactos/media/doc/README.WINE Mon Sep 4 07:03:14 2006 @@ -119,7 +119,7 @@
User32 - reactos/dll/win32/user32/controls/button.c # Synced at 20060621 - reactos/dll/win32/user32/controls/combo.c # Synced at 20060617 + reactos/dll/win32/user32/controls/combo.c # Synced at 20060904 reactos/dll/win32/user32/controls/edit.c # Synced at 20060710 reactos/dll/win32/user32/controls/icontitle.c # Synced at 20060617 reactos/dll/win32/user32/controls/listbox.c # Synced at 20060616