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/…
==============================================================================
--- 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=…
==============================================================================
--- 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