mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 08:55:19 +00:00
Sync to Wine-0_9_16:
Alexandre Julliard <julliard@winehq.org> - comctl32: Don't use sizeof in traces to avoid printf format warnings. Dmitry Timoshkov <dmitry@codeweavers.com> - comctl32: Return FALSE in the WM_CLOSE PROPSHEET_DialogProc handler. Mike McCormack <mike@codeweavers.com> - comctl32: Use the listview's background colour when drawing with imagelist. - comctl32: Arrange the listview after deleting all items so we will place iconsat the top again. svn path=/trunk/; revision=22849
This commit is contained in:
parent
21d56df85d
commit
94384e8058
18 changed files with 1451 additions and 1470 deletions
|
@ -3769,9 +3769,10 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, INT nS
|
|||
himl = (uView == LVS_ICON ? infoPtr->himlNormal : infoPtr->himlSmall);
|
||||
if (himl && lvItem.iImage >= 0 && !IsRectEmpty(&rcIcon))
|
||||
{
|
||||
TRACE("iImage=%d\n", lvItem.iImage);
|
||||
ImageList_Draw(himl, lvItem.iImage, hdc, rcIcon.left, rcIcon.top,
|
||||
(lvItem.state & LVIS_SELECTED) && (infoPtr->bFocus) ? ILD_SELECTED : ILD_NORMAL);
|
||||
TRACE("iImage=%d\n", lvItem.iImage);
|
||||
ImageList_DrawEx(himl, lvItem.iImage, hdc, rcIcon.left, rcIcon.top,
|
||||
rcIcon.right - rcIcon.left, rcIcon.bottom - rcIcon.top, infoPtr->clrBk, CLR_DEFAULT,
|
||||
(lvItem.state & LVIS_SELECTED) && (infoPtr->bFocus) ? ILD_SELECTED : ILD_NORMAL);
|
||||
}
|
||||
|
||||
/* Don't bother painting item being edited */
|
||||
|
@ -4293,8 +4294,8 @@ static BOOL LISTVIEW_DeleteAllItems(LISTVIEW_INFO *infoPtr)
|
|||
infoPtr->nItemCount --;
|
||||
}
|
||||
|
||||
LISTVIEW_Arrange(infoPtr, LVA_DEFAULT);
|
||||
LISTVIEW_UpdateScroll(infoPtr);
|
||||
|
||||
LISTVIEW_InvalidateList(infoPtr);
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -1248,6 +1248,7 @@ static UINT GetTemplateSize(DLGTEMPLATE* pTemplate)
|
|||
const WORD* p = (const WORD *)pTemplate;
|
||||
BOOL istemplateex = (((MyDLGTEMPLATEEX*)pTemplate)->signature == 0xFFFF);
|
||||
WORD nrofitems;
|
||||
UINT ret;
|
||||
|
||||
if (istemplateex)
|
||||
{
|
||||
|
@ -1363,9 +1364,9 @@ static UINT GetTemplateSize(DLGTEMPLATE* pTemplate)
|
|||
--nrofitems;
|
||||
}
|
||||
|
||||
TRACE("%p %p size 0x%08x\n",p, (WORD*)pTemplate,sizeof(WORD)*(p - (WORD*)pTemplate));
|
||||
return (p - (WORD*)pTemplate)*sizeof(WORD);
|
||||
|
||||
ret = (p - (WORD*)pTemplate) * sizeof(WORD);
|
||||
TRACE("%p %p size 0x%08x\n", p, pTemplate, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -2862,6 +2863,42 @@ INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
|
|||
return bRet;
|
||||
}
|
||||
|
||||
static LPWSTR load_string( HINSTANCE instance, LPCWSTR str )
|
||||
{
|
||||
LPWSTR ret;
|
||||
UINT len;
|
||||
|
||||
if (IS_INTRESOURCE(str))
|
||||
{
|
||||
HRSRC hrsrc;
|
||||
HGLOBAL hmem;
|
||||
WCHAR *ptr;
|
||||
WORD i, id = LOWORD(str);
|
||||
|
||||
if (!(hrsrc = FindResourceW( instance, MAKEINTRESOURCEW((id >> 4) + 1), (LPWSTR)RT_STRING )))
|
||||
return NULL;
|
||||
if (!(hmem = LoadResource( instance, hrsrc ))) return NULL;
|
||||
if (!(ptr = LockResource( hmem ))) return NULL;
|
||||
for (i = id & 0x0f; i > 0; i--) ptr += *ptr + 1;
|
||||
len = *ptr;
|
||||
if (!len) return NULL;
|
||||
ret = Alloc( (len + 1) * sizeof(WCHAR) );
|
||||
if (ret)
|
||||
{
|
||||
memcpy( ret, ptr + 1, len * sizeof(WCHAR) );
|
||||
ret[len] = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int len = (strlenW(str) + 1) * sizeof(WCHAR);
|
||||
ret = Alloc( len );
|
||||
if (ret) memcpy( ret, str, len );
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
* CreatePropertySheetPage (COMCTL32.@)
|
||||
* CreatePropertySheetPageA (COMCTL32.@)
|
||||
|
@ -2906,12 +2943,7 @@ HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(
|
|||
if (HIWORD( ppsp->pszTitle ))
|
||||
PROPSHEET_AtoW( &ppsp->pszTitle, lpPropSheetPage->pszTitle );
|
||||
else
|
||||
{
|
||||
UINT id = LOWORD(ppsp->pszTitle);
|
||||
int len = LoadStringW( ppsp->hInstance, id, NULL, 0 ) + 1;
|
||||
ppsp->pszTitle = Alloc( len * sizeof(WCHAR) );
|
||||
LoadStringW( ppsp->hInstance, id, (LPWSTR)ppsp->pszTitle, len );
|
||||
}
|
||||
ppsp->pszTitle = load_string( ppsp->hInstance, ppsp->pszTitle );
|
||||
}
|
||||
else
|
||||
ppsp->pszTitle = NULL;
|
||||
|
@ -2924,12 +2956,7 @@ HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(
|
|||
if (HIWORD( ppsp->pszHeaderTitle ))
|
||||
PROPSHEET_AtoW(&ppsp->pszHeaderTitle, lpPropSheetPage->pszHeaderTitle);
|
||||
else
|
||||
{
|
||||
UINT id = LOWORD(ppsp->pszHeaderTitle);
|
||||
int len = LoadStringW( ppsp->hInstance, id, NULL, 0 ) + 1;
|
||||
ppsp->pszHeaderTitle = Alloc( len * sizeof(WCHAR) );
|
||||
LoadStringW( ppsp->hInstance, id, (LPWSTR)ppsp->pszHeaderTitle, len );
|
||||
}
|
||||
ppsp->pszHeaderTitle = load_string( ppsp->hInstance, ppsp->pszHeaderTitle );
|
||||
}
|
||||
else
|
||||
ppsp->pszHeaderTitle = NULL;
|
||||
|
@ -2939,12 +2966,7 @@ HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(
|
|||
if (HIWORD( ppsp->pszHeaderSubTitle ))
|
||||
PROPSHEET_AtoW(&ppsp->pszHeaderSubTitle, lpPropSheetPage->pszHeaderSubTitle);
|
||||
else
|
||||
{
|
||||
UINT id = LOWORD(ppsp->pszHeaderSubTitle);
|
||||
int len = LoadStringW( ppsp->hInstance, id, NULL, 0 ) + 1;
|
||||
ppsp->pszHeaderSubTitle = Alloc( len * sizeof(WCHAR) );
|
||||
LoadStringW( ppsp->hInstance, id, (LPWSTR)ppsp->pszHeaderSubTitle, len );
|
||||
}
|
||||
ppsp->pszHeaderSubTitle = load_string( ppsp->hInstance, ppsp->pszHeaderSubTitle );
|
||||
}
|
||||
else
|
||||
ppsp->pszHeaderSubTitle = NULL;
|
||||
|
@ -2986,21 +3008,7 @@ HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage
|
|||
}
|
||||
|
||||
if (ppsp->dwFlags & PSP_USETITLE)
|
||||
{
|
||||
if (HIWORD( ppsp->pszTitle ))
|
||||
{
|
||||
int len = strlenW(lpPropSheetPage->pszTitle) + 1;
|
||||
ppsp->pszTitle = Alloc( len * sizeof (WCHAR) );
|
||||
strcpyW( (WCHAR *)ppsp->pszTitle, lpPropSheetPage->pszTitle );
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT id = LOWORD(ppsp->pszTitle);
|
||||
int len = LoadStringW( ppsp->hInstance, id, NULL, 0 ) + 1;
|
||||
ppsp->pszTitle = Alloc( len * sizeof(WCHAR) );
|
||||
LoadStringW( ppsp->hInstance, id, (LPWSTR)ppsp->pszTitle, len );
|
||||
}
|
||||
}
|
||||
ppsp->pszTitle = load_string( ppsp->hInstance, ppsp->pszTitle );
|
||||
else
|
||||
ppsp->pszTitle = NULL;
|
||||
|
||||
|
@ -3008,40 +3016,12 @@ HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage
|
|||
ppsp->dwFlags &= ~(PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE);
|
||||
|
||||
if (ppsp->dwFlags & PSP_USEHEADERTITLE)
|
||||
{
|
||||
if (HIWORD( ppsp->pszHeaderTitle ))
|
||||
{
|
||||
int len = strlenW(lpPropSheetPage->pszHeaderTitle) + 1;
|
||||
ppsp->pszHeaderTitle = Alloc( len * sizeof (WCHAR) );
|
||||
strcpyW( (WCHAR *)ppsp->pszHeaderTitle, lpPropSheetPage->pszHeaderTitle );
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT id = LOWORD(ppsp->pszHeaderTitle);
|
||||
int len = LoadStringW( ppsp->hInstance, id, NULL, 0 ) + 1;
|
||||
ppsp->pszHeaderTitle = Alloc( len * sizeof(WCHAR) );
|
||||
LoadStringW( ppsp->hInstance, id, (LPWSTR)ppsp->pszHeaderTitle, len );
|
||||
}
|
||||
}
|
||||
ppsp->pszHeaderTitle = load_string( ppsp->hInstance, ppsp->pszHeaderTitle );
|
||||
else
|
||||
ppsp->pszHeaderTitle = NULL;
|
||||
|
||||
if (ppsp->dwFlags & PSP_USEHEADERSUBTITLE)
|
||||
{
|
||||
if (HIWORD( ppsp->pszHeaderSubTitle ))
|
||||
{
|
||||
int len = strlenW(lpPropSheetPage->pszHeaderSubTitle) + 1;
|
||||
ppsp->pszHeaderSubTitle = Alloc( len * sizeof (WCHAR) );
|
||||
strcpyW( (WCHAR *)ppsp->pszHeaderSubTitle, lpPropSheetPage->pszHeaderSubTitle );
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT id = LOWORD(ppsp->pszHeaderSubTitle);
|
||||
int len = LoadStringW( ppsp->hInstance, id, NULL, 0 ) + 1;
|
||||
ppsp->pszHeaderSubTitle = Alloc( len * sizeof(WCHAR) );
|
||||
LoadStringW( ppsp->hInstance, id, (LPWSTR)ppsp->pszHeaderSubTitle, len );
|
||||
}
|
||||
}
|
||||
ppsp->pszHeaderSubTitle = load_string( ppsp->hInstance, ppsp->pszHeaderSubTitle );
|
||||
else
|
||||
ppsp->pszHeaderSubTitle = NULL;
|
||||
|
||||
|
@ -3533,7 +3513,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case WM_CLOSE:
|
||||
PROPSHEET_Cancel(hwnd, 1);
|
||||
return TRUE;
|
||||
return FALSE; /* let DefDlgProc post us WM_COMMAND/IDCANCEL */
|
||||
|
||||
case WM_COMMAND:
|
||||
if (!PROPSHEET_DoCommand(hwnd, LOWORD(wParam)))
|
||||
|
|
Loading…
Reference in a new issue