user32/static: Use correct brush color for centered image background.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
aaea92198d
commit
927956db67
|
@ -18,11 +18,6 @@
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*
|
*
|
||||||
* Notes:
|
* Notes:
|
||||||
* - Windows XP introduced new behavior: The background of centered
|
|
||||||
* icons and bitmaps is painted differently. This is only done if
|
|
||||||
* a manifest is present.
|
|
||||||
* Because it has not yet been decided how to implement the two
|
|
||||||
* different modes in Wine, only the Windows XP mode is implemented.
|
|
||||||
* - Controls with SS_SIMPLE but without SS_NOPREFIX:
|
* - Controls with SS_SIMPLE but without SS_NOPREFIX:
|
||||||
* The text should not be changed. Windows doesn't clear the
|
* The text should not be changed. Windows doesn't clear the
|
||||||
* client rectangle, so the new text must be larger than the old one.
|
* client rectangle, so the new text must be larger than the old one.
|
||||||
|
@ -737,10 +732,9 @@ static void STATIC_PaintBitmapfn(HWND hwnd, HDC hdc, DWORD style )
|
||||||
{
|
{
|
||||||
HDC hMemDC;
|
HDC hMemDC;
|
||||||
HBITMAP hBitmap, oldbitmap;
|
HBITMAP hBitmap, oldbitmap;
|
||||||
HBRUSH hbrush;
|
|
||||||
|
|
||||||
/* message is still sent, even if the returned brush is not used */
|
/* message is still sent, even if the returned brush is not used */
|
||||||
hbrush = STATIC_SendWmCtlColorStatic(hwnd, hdc);
|
STATIC_SendWmCtlColorStatic(hwnd, hdc);
|
||||||
|
|
||||||
if ((hBitmap = (HBITMAP)GetWindowLongPtrW( hwnd, HICON_GWL_OFFSET ))
|
if ((hBitmap = (HBITMAP)GetWindowLongPtrW( hwnd, HICON_GWL_OFFSET ))
|
||||||
&& (GetObjectType(hBitmap) == OBJ_BITMAP)
|
&& (GetObjectType(hBitmap) == OBJ_BITMAP)
|
||||||
|
@ -748,26 +742,23 @@ static void STATIC_PaintBitmapfn(HWND hwnd, HDC hdc, DWORD style )
|
||||||
{
|
{
|
||||||
BITMAP bm;
|
BITMAP bm;
|
||||||
RECT rcClient;
|
RECT rcClient;
|
||||||
LOGBRUSH brush;
|
|
||||||
|
|
||||||
GetObjectW(hBitmap, sizeof(bm), &bm);
|
GetObjectW(hBitmap, sizeof(bm), &bm);
|
||||||
oldbitmap = SelectObject(hMemDC, hBitmap);
|
oldbitmap = SelectObject(hMemDC, hBitmap);
|
||||||
|
|
||||||
/* Set the background color for monochrome bitmaps
|
|
||||||
to the color of the background brush */
|
|
||||||
if (GetObjectW( hbrush, sizeof(brush), &brush ))
|
|
||||||
{
|
|
||||||
if (brush.lbStyle == BS_SOLID)
|
|
||||||
SetBkColor(hdc, brush.lbColor);
|
|
||||||
}
|
|
||||||
GetClientRect(hwnd, &rcClient);
|
GetClientRect(hwnd, &rcClient);
|
||||||
if (style & SS_CENTERIMAGE)
|
if (style & SS_CENTERIMAGE)
|
||||||
{
|
{
|
||||||
|
HBRUSH hbrush = CreateSolidBrush(GetPixel(hMemDC, 0, 0));
|
||||||
|
|
||||||
FillRect(hdc, &rcClient, hbrush);
|
FillRect(hdc, &rcClient, hbrush);
|
||||||
|
|
||||||
rcClient.left = (rcClient.right - rcClient.left)/2 - bm.bmWidth/2;
|
rcClient.left = (rcClient.right - rcClient.left)/2 - bm.bmWidth/2;
|
||||||
rcClient.top = (rcClient.bottom - rcClient.top)/2 - bm.bmHeight/2;
|
rcClient.top = (rcClient.bottom - rcClient.top)/2 - bm.bmHeight/2;
|
||||||
rcClient.right = rcClient.left + bm.bmWidth;
|
rcClient.right = rcClient.left + bm.bmWidth;
|
||||||
rcClient.bottom = rcClient.top + bm.bmHeight;
|
rcClient.bottom = rcClient.top + bm.bmHeight;
|
||||||
|
|
||||||
|
DeleteObject(hbrush);
|
||||||
}
|
}
|
||||||
StretchBlt(hdc, rcClient.left, rcClient.top, rcClient.right - rcClient.left,
|
StretchBlt(hdc, rcClient.left, rcClient.top, rcClient.right - rcClient.left,
|
||||||
rcClient.bottom - rcClient.top, hMemDC,
|
rcClient.bottom - rcClient.top, hMemDC,
|
||||||
|
|
Loading…
Reference in New Issue