[WINESYNC]

update comctl32 to Wine_0.9.20

svn path=/trunk/; revision=23807
This commit is contained in:
Ged Murphy 2006-08-30 19:18:49 +00:00
parent 900bf1a753
commit 6d52441d10
3 changed files with 57 additions and 48 deletions

View file

@ -2158,6 +2158,7 @@ ImageList_Replace (HIMAGELIST himl, INT i, HBITMAP hbmImage,
{ {
HDC hdcImage; HDC hdcImage;
BITMAP bmp; BITMAP bmp;
HBITMAP hOldBitmap;
TRACE("%p %d %p %p\n", himl, i, hbmImage, hbmMask); TRACE("%p %d %p %p\n", himl, i, hbmImage, hbmMask);
@ -2175,29 +2176,34 @@ ImageList_Replace (HIMAGELIST himl, INT i, HBITMAP hbmImage,
GetObjectA (hbmImage, sizeof(BITMAP), (LPVOID)&bmp); GetObjectA (hbmImage, sizeof(BITMAP), (LPVOID)&bmp);
/* Replace Image */ /* Replace Image */
SelectObject (hdcImage, hbmImage); hOldBitmap = SelectObject (hdcImage, hbmImage);
StretchBlt (himl->hdcImage, i * himl->cx, 0, himl->cx, himl->cy, StretchBlt (himl->hdcImage, i * himl->cx, 0, himl->cx, himl->cy,
hdcImage, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY); hdcImage, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
if (himl->hbmMask) if (himl->hbmMask)
{ {
/* Replace Mask */ HDC hdcTemp;
SelectObject (hdcImage, hbmMask); HBITMAP hOldBitmapTemp;
hdcTemp = CreateCompatibleDC(0);
hOldBitmapTemp = SelectObject(hdcTemp, hbmMask);
StretchBlt (himl->hdcMask, i * himl->cx, 0, himl->cx, himl->cy, StretchBlt (himl->hdcMask, i * himl->cx, 0, himl->cx, himl->cy,
hdcImage, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY); hdcTemp, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
SelectObject(hdcTemp, hOldBitmapTemp);
DeleteDC(hdcTemp);
/* Remove the background from the image /* Remove the background from the image
*/ */
StretchBlt (himl->hdcImage, BitBlt (himl->hdcImage,
i*himl->cx, 0, himl->cx, himl->cy, i*himl->cx, 0, bmp.bmWidth, bmp.bmHeight,
hdcImage, himl->hdcMask,
0, 0, bmp.bmWidth, bmp.bmHeight, i*himl->cx, 0,
0x220326); /* NOTSRCAND */ 0x220326); /* NOTSRCAND */
} }
SelectObject (hdcImage, hOldBitmap);
DeleteDC (hdcImage); DeleteDC (hdcImage);
return TRUE; return TRUE;

View file

@ -2079,6 +2079,21 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg,
continue; continue;
} }
} }
/* Invalidate the header area */
if ( (psInfo->ppshheader.dwFlags & (PSH_WIZARD97_OLD | PSH_WIZARD97_NEW)) &&
(psInfo->ppshheader.dwFlags & PSH_HEADER) )
{
HWND hwndLineHeader = GetDlgItem(hwndDlg, IDC_SUNKEN_LINEHEADER);
RECT r;
GetClientRect(hwndLineHeader, &r);
MapWindowPoints(hwndLineHeader, hwndDlg, (LPPOINT) &r, 2);
SetRect(&r, 0, 0, r.right + 1, r.top - 1);
InvalidateRect(hwndDlg, &r, TRUE);
}
/* /*
* Display the new page. * Display the new page.
*/ */
@ -3254,15 +3269,16 @@ static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam)
} }
else else
{ {
int margin;
hbr = GetSysColorBrush(COLOR_WINDOW); hbr = GetSysColorBrush(COLOR_WINDOW);
FillRect(hdc, &rzone, hbr); FillRect(hdc, &rzone, hbr);
/* Draw the header bitmap. It's always centered like a /* Draw the header bitmap. It's always centered like a
* common 49 x 49 bitmap. */ * common 49 x 49 bitmap. */
BitBlt(hdc, rzone.right - 49 - ((rzone.bottom - 49) / 2), margin = (rzone.bottom - 49) / 2;
(rzone.bottom - 49) / 2, BitBlt(hdc, rzone.right - 49 - margin, margin,
bm.bmWidth, bm.bmHeight, min(bm.bmWidth, 49), min(bm.bmHeight, 49),
hdcSrc, 0, 0, SRCCOPY); hdcSrc, 0, 0, SRCCOPY);
/* NOTE: Native COMCTL32 draws a white stripe over the bitmap /* NOTE: Native COMCTL32 draws a white stripe over the bitmap
* if its height is smaller than 49 pixels. Because the reason * if its height is smaller than 49 pixels. Because the reason
@ -3276,22 +3292,14 @@ static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam)
if (ppshpage->dwFlags & PSP_USEHEADERTITLE) { if (ppshpage->dwFlags & PSP_USEHEADERTITLE) {
SetRect(&r, 20, 10, 0, 0); SetRect(&r, 20, 10, 0, 0);
if (HIWORD(ppshpage->pszHeaderTitle)) if (HIWORD(ppshpage->pszHeaderTitle))
{ DrawTextW(hdc, ppshpage->pszHeaderTitle, -1, &r, DT_LEFT | DT_SINGLELINE | DT_NOCLIP);
if (psInfo->unicode)
DrawTextW(hdc, (LPWSTR)ppshpage->pszHeaderTitle,
-1, &r, DT_LEFT | DT_SINGLELINE | DT_NOCLIP);
else
DrawTextA(hdc, (LPCSTR)ppshpage->pszHeaderTitle,
-1, &r, DT_LEFT | DT_SINGLELINE | DT_NOCLIP);
}
else else
{ {
nLength = LoadStringW(ppshpage->hInstance, (UINT_PTR)ppshpage->pszHeaderTitle, nLength = LoadStringW(ppshpage->hInstance, (UINT_PTR)ppshpage->pszHeaderTitle,
szBuffer, 256); szBuffer, 256);
if (nLength != 0) if (nLength != 0)
{ {
DrawTextW(hdc, szBuffer, nLength, DrawTextW(hdc, szBuffer, nLength, &r, DT_LEFT | DT_SINGLELINE | DT_NOCLIP);
&r, DT_LEFT | DT_SINGLELINE | DT_NOCLIP);
} }
} }
} }
@ -3300,22 +3308,14 @@ static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam)
SelectObject(hdc, psInfo->hFont); SelectObject(hdc, psInfo->hFont);
SetRect(&r, 40, 25, rzone.right - 69, rzone.bottom); SetRect(&r, 40, 25, rzone.right - 69, rzone.bottom);
if (HIWORD(ppshpage->pszHeaderTitle)) if (HIWORD(ppshpage->pszHeaderTitle))
{ DrawTextW(hdc, ppshpage->pszHeaderSubTitle, -1, &r, DT_LEFT | DT_WORDBREAK);
if (psInfo->unicode)
DrawTextW(hdc, (LPWSTR)ppshpage->pszHeaderSubTitle,
-1, &r, DT_LEFT | DT_SINGLELINE);
else
DrawTextA(hdc, (LPCSTR)ppshpage->pszHeaderSubTitle,
-1, &r, DT_LEFT | DT_SINGLELINE);
}
else else
{ {
nLength = LoadStringW(ppshpage->hInstance, (UINT_PTR)ppshpage->pszHeaderSubTitle, nLength = LoadStringW(ppshpage->hInstance, (UINT_PTR)ppshpage->pszHeaderSubTitle,
szBuffer, 256); szBuffer, 256);
if (nLength != 0) if (nLength != 0)
{ {
DrawTextW(hdc, szBuffer, nLength, DrawTextW(hdc, szBuffer, nLength, &r, DT_LEFT | DT_WORDBREAK);
&r, DT_LEFT | DT_SINGLELINE);
} }
} }
} }
@ -3348,6 +3348,8 @@ static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam)
GetObjectW(psInfo->ppshheader.u4.hbmWatermark, sizeof(BITMAP), (LPVOID)&bm); GetObjectW(psInfo->ppshheader.u4.hbmWatermark, sizeof(BITMAP), (LPVOID)&bm);
hbmp = SelectObject(hdcSrc, psInfo->ppshheader.u4.hbmWatermark); hbmp = SelectObject(hdcSrc, psInfo->ppshheader.u4.hbmWatermark);
/* The watermark is truncated to a width of 164 pixels */
r.right = min(r.right, 164);
BitBlt(hdc, 0, offsety, min(bm.bmWidth, r.right), BitBlt(hdc, 0, offsety, min(bm.bmWidth, r.right),
min(bm.bmHeight, r.bottom), hdcSrc, 0, 0, SRCCOPY); min(bm.bmHeight, r.bottom), hdcSrc, 0, 0, SRCCOPY);

View file

@ -696,8 +696,9 @@ TOOLBAR_DrawImage(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, INT left, INT top
draw_masked = TRUE; draw_masked = TRUE;
} }
} }
else if ((tbcd->nmcd.uItemState & CDIS_HOT) else if (tbcd->nmcd.uItemState & CDIS_CHECKED ||
&& ((infoPtr->dwStyle & TBSTYLE_FLAT) || GetWindowTheme (infoPtr->hwndSelf))) ((tbcd->nmcd.uItemState & CDIS_HOT)
&& ((infoPtr->dwStyle & TBSTYLE_FLAT) || GetWindowTheme (infoPtr->hwndSelf))))
{ {
/* if hot, attempt to draw with hot image list, if fails, /* if hot, attempt to draw with hot image list, if fails,
use default image list */ use default image list */
@ -2688,48 +2689,48 @@ TOOLBAR_AddBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
switch (lpAddBmp->nID) switch (lpAddBmp->nID)
{ {
case IDB_STD_SMALL_COLOR: case IDB_STD_SMALL_COLOR:
hbmLoad = LoadBitmapW (COMCTL32_hModule, hbmLoad = CreateMappedBitmap (COMCTL32_hModule,
MAKEINTRESOURCEW(IDB_STD_SMALL)); IDB_STD_SMALL, 0, NULL, 0);
nIndex = ImageList_AddMasked (himlDef, nIndex = ImageList_AddMasked (himlDef,
hbmLoad, comctl32_color.clrBtnFace); hbmLoad, comctl32_color.clrBtnFace);
DeleteObject (hbmLoad); DeleteObject (hbmLoad);
break; break;
case IDB_STD_LARGE_COLOR: case IDB_STD_LARGE_COLOR:
hbmLoad = LoadBitmapW (COMCTL32_hModule, hbmLoad = CreateMappedBitmap (COMCTL32_hModule,
MAKEINTRESOURCEW(IDB_STD_LARGE)); IDB_STD_LARGE, 0, NULL, 0);
nIndex = ImageList_AddMasked (himlDef, nIndex = ImageList_AddMasked (himlDef,
hbmLoad, comctl32_color.clrBtnFace); hbmLoad, comctl32_color.clrBtnFace);
DeleteObject (hbmLoad); DeleteObject (hbmLoad);
break; break;
case IDB_VIEW_SMALL_COLOR: case IDB_VIEW_SMALL_COLOR:
hbmLoad = LoadBitmapW (COMCTL32_hModule, hbmLoad = CreateMappedBitmap (COMCTL32_hModule,
MAKEINTRESOURCEW(IDB_VIEW_SMALL)); IDB_VIEW_SMALL, 0, NULL, 0);
nIndex = ImageList_AddMasked (himlDef, nIndex = ImageList_AddMasked (himlDef,
hbmLoad, comctl32_color.clrBtnFace); hbmLoad, comctl32_color.clrBtnFace);
DeleteObject (hbmLoad); DeleteObject (hbmLoad);
break; break;
case IDB_VIEW_LARGE_COLOR: case IDB_VIEW_LARGE_COLOR:
hbmLoad = LoadBitmapW (COMCTL32_hModule, hbmLoad = CreateMappedBitmap (COMCTL32_hModule,
MAKEINTRESOURCEW(IDB_VIEW_LARGE)); IDB_VIEW_LARGE, 0, NULL, 0);
nIndex = ImageList_AddMasked (himlDef, nIndex = ImageList_AddMasked (himlDef,
hbmLoad, comctl32_color.clrBtnFace); hbmLoad, comctl32_color.clrBtnFace);
DeleteObject (hbmLoad); DeleteObject (hbmLoad);
break; break;
case IDB_HIST_SMALL_COLOR: case IDB_HIST_SMALL_COLOR:
hbmLoad = LoadBitmapW (COMCTL32_hModule, hbmLoad = CreateMappedBitmap (COMCTL32_hModule,
MAKEINTRESOURCEW(IDB_HIST_SMALL)); IDB_HIST_SMALL, 0, NULL, 0);
nIndex = ImageList_AddMasked (himlDef, nIndex = ImageList_AddMasked (himlDef,
hbmLoad, comctl32_color.clrBtnFace); hbmLoad, comctl32_color.clrBtnFace);
DeleteObject (hbmLoad); DeleteObject (hbmLoad);
break; break;
case IDB_HIST_LARGE_COLOR: case IDB_HIST_LARGE_COLOR:
hbmLoad = LoadBitmapW (COMCTL32_hModule, hbmLoad = CreateMappedBitmap (COMCTL32_hModule,
MAKEINTRESOURCEW(IDB_HIST_LARGE)); IDB_HIST_LARGE, 0, NULL, 0);
nIndex = ImageList_AddMasked (himlDef, nIndex = ImageList_AddMasked (himlDef,
hbmLoad, comctl32_color.clrBtnFace); hbmLoad, comctl32_color.clrBtnFace);
DeleteObject (hbmLoad); DeleteObject (hbmLoad);
@ -2743,7 +2744,7 @@ TOOLBAR_AddBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
} }
else else
{ {
hbmLoad = LoadBitmapW (lpAddBmp->hInst, (LPWSTR)lpAddBmp->nID); hbmLoad = CreateMappedBitmap(lpAddBmp->hInst, lpAddBmp->nID, 0, NULL, 0);
nIndex = ImageList_AddMasked (himlDef, hbmLoad, comctl32_color.clrBtnFace); nIndex = ImageList_AddMasked (himlDef, hbmLoad, comctl32_color.clrBtnFace);
DeleteObject (hbmLoad); DeleteObject (hbmLoad);
} }