mirror of
https://github.com/reactos/reactos.git
synced 2025-05-22 10:35:54 +00:00
update comctl32 to Wine 1.1.13.
not including ros specific stuff for now while I work out what we still need svn path=/trunk/; revision=38822
This commit is contained in:
parent
f997492021
commit
ebec7c2e3f
31 changed files with 933 additions and 912 deletions
|
@ -817,7 +817,7 @@ static BOOL ANIMATE_Create(HWND hWnd, const CREATESTRUCTW *lpcs)
|
|||
}
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (ANIMATE_INFO *)Alloc(sizeof(ANIMATE_INFO));
|
||||
infoPtr = Alloc(sizeof(ANIMATE_INFO));
|
||||
if (!infoPtr) return FALSE;
|
||||
|
||||
/* store crossref hWnd <-> info structure */
|
||||
|
@ -962,7 +962,7 @@ static LRESULT WINAPI ANIMATE_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LP
|
|||
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n", uMsg, wParam, lParam);
|
||||
|
||||
return DefWindowProcW(hWnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -164,7 +164,7 @@ static void COMBOEX_DumpItem (CBE_ITEMDATA const *item)
|
|||
|
||||
static void COMBOEX_DumpInput (COMBOBOXEXITEMW const *input)
|
||||
{
|
||||
TRACE("input - mask=%08x, iItem=%d, pszText=%p, cchTM=%d, iImage=%d\n",
|
||||
TRACE("input - mask=%08x, iItem=%ld, pszText=%p, cchTM=%d, iImage=%d\n",
|
||||
input->mask, input->iItem, input->pszText, input->cchTextMax,
|
||||
input->iImage);
|
||||
if (input->mask & CBEIF_TEXT)
|
||||
|
@ -198,7 +198,7 @@ static INT COMBOEX_Notify (COMBOEX_INFO *infoPtr, INT code, NMHDR *hdr)
|
|||
|
||||
|
||||
static INT
|
||||
COMBOEX_NotifyItem (COMBOEX_INFO *infoPtr, INT code, NMCOMBOBOXEXW *hdr)
|
||||
COMBOEX_NotifyItem (COMBOEX_INFO *infoPtr, UINT code, NMCOMBOBOXEXW *hdr)
|
||||
{
|
||||
/* Change the Text item from Unicode to ANSI if necessary for NOTIFY */
|
||||
if (infoPtr->NtfUnicode)
|
||||
|
@ -211,7 +211,7 @@ COMBOEX_NotifyItem (COMBOEX_INFO *infoPtr, INT code, NMCOMBOBOXEXW *hdr)
|
|||
if ((hdr->ceItem.mask & CBEIF_TEXT) && is_textW(wstr)) {
|
||||
len = WideCharToMultiByte (CP_ACP, 0, wstr, -1, 0, 0, NULL, NULL);
|
||||
if (len > 0) {
|
||||
astr = (LPSTR)Alloc ((len + 1)*sizeof(CHAR));
|
||||
astr = Alloc ((len + 1)*sizeof(CHAR));
|
||||
if (!astr) return 0;
|
||||
WideCharToMultiByte (CP_ACP, 0, wstr, -1, astr, len, 0, 0);
|
||||
hdr->ceItem.pszText = (LPWSTR)astr;
|
||||
|
@ -320,7 +320,7 @@ static LPCWSTR COMBOEX_GetText(COMBOEX_INFO *infoPtr, CBE_ITEMDATA *item)
|
|||
|
||||
if (is_textW(nmce.ceItem.pszText)) {
|
||||
len = MultiByteToWideChar (CP_ACP, 0, (LPSTR)nmce.ceItem.pszText, -1, NULL, 0);
|
||||
buf = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
|
||||
buf = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (buf)
|
||||
MultiByteToWideChar (CP_ACP, 0, (LPSTR)nmce.ceItem.pszText, -1, buf, len);
|
||||
if (nmce.ceItem.mask & CBEIF_DI_SETITEM) {
|
||||
|
@ -348,7 +348,7 @@ static void COMBOEX_GetComboFontSize (COMBOEX_INFO *infoPtr, SIZE *size)
|
|||
|
||||
mydc = GetDC (0); /* why the entire screen???? */
|
||||
nfont = (HFONT)SendMessageW (infoPtr->hwndCombo, WM_GETFONT, 0, 0);
|
||||
ofont = (HFONT) SelectObject (mydc, nfont);
|
||||
ofont = SelectObject (mydc, nfont);
|
||||
GetTextExtentPointW (mydc, strA, 1, size);
|
||||
SelectObject (mydc, ofont);
|
||||
ReleaseDC (0, mydc);
|
||||
|
@ -431,10 +431,9 @@ static void COMBOEX_ReSize (COMBOEX_INFO *infoPtr)
|
|||
cy = max (iinfo.rcImage.bottom - iinfo.rcImage.top, cy);
|
||||
TRACE("upgraded height due to image: height=%d\n", cy);
|
||||
}
|
||||
SendMessageW (infoPtr->hwndSelf, CB_SETITEMHEIGHT, (WPARAM)-1, (LPARAM)cy);
|
||||
SendMessageW (infoPtr->hwndSelf, CB_SETITEMHEIGHT, -1, cy);
|
||||
if (infoPtr->hwndCombo) {
|
||||
SendMessageW (infoPtr->hwndCombo, CB_SETITEMHEIGHT,
|
||||
(WPARAM) 0, (LPARAM) cy);
|
||||
SendMessageW (infoPtr->hwndCombo, CB_SETITEMHEIGHT, 0, cy);
|
||||
if ( !(infoPtr->flags & CBES_EX_NOSIZELIMIT)) {
|
||||
RECT comboRect;
|
||||
if (GetWindowRect(infoPtr->hwndCombo, &comboRect)) {
|
||||
|
@ -468,7 +467,7 @@ static void COMBOEX_SetEditText (COMBOEX_INFO *infoPtr, CBE_ITEMDATA *item)
|
|||
}
|
||||
|
||||
|
||||
static CBE_ITEMDATA * COMBOEX_FindItem(COMBOEX_INFO *infoPtr, INT index)
|
||||
static CBE_ITEMDATA * COMBOEX_FindItem(COMBOEX_INFO *infoPtr, INT_PTR index)
|
||||
{
|
||||
CBE_ITEMDATA *item;
|
||||
INT i;
|
||||
|
@ -501,7 +500,7 @@ static inline BOOL COMBOEX_HasEdit(COMBOEX_INFO const *infoPtr)
|
|||
|
||||
/* *** CBEM_xxx message support *** */
|
||||
|
||||
static UINT COMBOEX_GetListboxText(COMBOEX_INFO *infoPtr, int n, LPWSTR buf)
|
||||
static UINT COMBOEX_GetListboxText(COMBOEX_INFO *infoPtr, INT_PTR n, LPWSTR buf)
|
||||
{
|
||||
CBE_ITEMDATA *item;
|
||||
LPCWSTR str;
|
||||
|
@ -528,9 +527,9 @@ static UINT COMBOEX_GetListboxText(COMBOEX_INFO *infoPtr, int n, LPWSTR buf)
|
|||
}
|
||||
|
||||
|
||||
static INT COMBOEX_DeleteItem (COMBOEX_INFO *infoPtr, INT index)
|
||||
static INT COMBOEX_DeleteItem (COMBOEX_INFO *infoPtr, INT_PTR index)
|
||||
{
|
||||
TRACE("(index=%d)\n", index);
|
||||
TRACE("(index=%ld)\n", index);
|
||||
|
||||
/* if item number requested does not exist then return failure */
|
||||
if ((index >= infoPtr->nb_items) || (index < 0)) return CB_ERR;
|
||||
|
@ -545,7 +544,7 @@ static INT COMBOEX_DeleteItem (COMBOEX_INFO *infoPtr, INT index)
|
|||
|
||||
static BOOL COMBOEX_GetItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit)
|
||||
{
|
||||
INT index = cit->iItem;
|
||||
INT_PTR index = cit->iItem;
|
||||
CBE_ITEMDATA *item;
|
||||
|
||||
TRACE("(...)\n");
|
||||
|
@ -608,7 +607,7 @@ static inline BOOL COMBOEX_HasEditChanged (COMBOEX_INFO const *infoPtr)
|
|||
|
||||
static INT COMBOEX_InsertItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW const *cit)
|
||||
{
|
||||
INT index;
|
||||
INT_PTR index;
|
||||
CBE_ITEMDATA *item;
|
||||
NMCOMBOBOXEXW nmcit;
|
||||
|
||||
|
@ -622,7 +621,7 @@ static INT COMBOEX_InsertItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW const *ci
|
|||
if (index > infoPtr->nb_items) return -1;
|
||||
|
||||
/* get zero-filled space and chain it in */
|
||||
if(!(item = (CBE_ITEMDATA *)Alloc (sizeof(*item)))) return -1;
|
||||
if(!(item = Alloc (sizeof(*item)))) return -1;
|
||||
|
||||
/* locate position to insert new item in */
|
||||
if (index == infoPtr->nb_items) {
|
||||
|
@ -654,7 +653,7 @@ static INT COMBOEX_InsertItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW const *ci
|
|||
|
||||
if (is_textW(cit->pszText)) len = strlenW (cit->pszText);
|
||||
if (len > 0) {
|
||||
item->pszText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
|
||||
item->pszText = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (!item->pszText) {
|
||||
Free(item);
|
||||
return -1;
|
||||
|
@ -700,7 +699,7 @@ static INT COMBOEX_InsertItemA (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA const *ci
|
|||
memcpy(&citW,cit,sizeof(COMBOBOXEXITEMA));
|
||||
if (cit->mask & CBEIF_TEXT && is_textA(cit->pszText)) {
|
||||
INT len = MultiByteToWideChar (CP_ACP, 0, cit->pszText, -1, NULL, 0);
|
||||
wstr = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
|
||||
wstr = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (!wstr) return -1;
|
||||
MultiByteToWideChar (CP_ACP, 0, cit->pszText, -1, wstr, len);
|
||||
citW.pszText = wstr;
|
||||
|
@ -766,7 +765,7 @@ static HIMAGELIST COMBOEX_SetImageList (COMBOEX_INFO *infoPtr, HIMAGELIST himl)
|
|||
|
||||
static BOOL COMBOEX_SetItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit)
|
||||
{
|
||||
INT index = cit->iItem;
|
||||
INT_PTR index = cit->iItem;
|
||||
CBE_ITEMDATA *item;
|
||||
|
||||
if (TRACE_ON(comboex)) COMBOEX_DumpInput (cit);
|
||||
|
@ -787,7 +786,7 @@ static BOOL COMBOEX_SetItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit)
|
|||
COMBOEX_FreeText(item);
|
||||
if (is_textW(cit->pszText)) len = strlenW(cit->pszText);
|
||||
if (len > 0) {
|
||||
item->pszText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
|
||||
item->pszText = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (!item->pszText) return FALSE;
|
||||
strcpyW(item->pszText, cit->pszText);
|
||||
} else if (cit->pszText == LPSTR_TEXTCALLBACKW)
|
||||
|
@ -808,7 +807,7 @@ static BOOL COMBOEX_SetItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit)
|
|||
if (TRACE_ON(comboex)) COMBOEX_DumpItem (item);
|
||||
|
||||
/* if original request was to update edit control, do some fast foot work */
|
||||
if (cit->iItem == -1) {
|
||||
if (cit->iItem == -1 && cit->mask & CBEIF_TEXT) {
|
||||
COMBOEX_SetEditText (infoPtr, item);
|
||||
RedrawWindow (infoPtr->hwndCombo, 0, 0, RDW_ERASE | RDW_INVALIDATE);
|
||||
}
|
||||
|
@ -824,7 +823,7 @@ static BOOL COMBOEX_SetItemA (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA const *cit)
|
|||
memcpy(&citW, cit, sizeof(COMBOBOXEXITEMA));
|
||||
if ((cit->mask & CBEIF_TEXT) && is_textA(cit->pszText)) {
|
||||
INT len = MultiByteToWideChar (CP_ACP, 0, cit->pszText, -1, NULL, 0);
|
||||
wstr = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
|
||||
wstr = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (!wstr) return FALSE;
|
||||
MultiByteToWideChar (CP_ACP, 0, cit->pszText, -1, wstr, len);
|
||||
citW.pszText = wstr;
|
||||
|
@ -871,7 +870,7 @@ COMBOEX_FindStringExact (COMBOEX_INFO *infoPtr, INT start, LPCWSTR str)
|
|||
}
|
||||
|
||||
|
||||
static DWORD_PTR COMBOEX_GetItemData (COMBOEX_INFO *infoPtr, INT index)
|
||||
static DWORD_PTR COMBOEX_GetItemData (COMBOEX_INFO *infoPtr, INT_PTR index)
|
||||
{
|
||||
CBE_ITEMDATA const *item1;
|
||||
CBE_ITEMDATA const *item2;
|
||||
|
@ -894,7 +893,7 @@ static DWORD_PTR COMBOEX_GetItemData (COMBOEX_INFO *infoPtr, INT index)
|
|||
}
|
||||
|
||||
|
||||
static INT COMBOEX_SetCursel (COMBOEX_INFO *infoPtr, INT index)
|
||||
static INT COMBOEX_SetCursel (COMBOEX_INFO *infoPtr, INT_PTR index)
|
||||
{
|
||||
CBE_ITEMDATA *item;
|
||||
INT sel;
|
||||
|
@ -902,7 +901,7 @@ static INT COMBOEX_SetCursel (COMBOEX_INFO *infoPtr, INT index)
|
|||
if (!(item = COMBOEX_FindItem(infoPtr, index)))
|
||||
return SendMessageW (infoPtr->hwndCombo, CB_SETCURSEL, index, 0);
|
||||
|
||||
TRACE("selecting item %d text=%s\n", index, debugstr_txt(item->pszText));
|
||||
TRACE("selecting item %ld text=%s\n", index, debugstr_txt(item->pszText));
|
||||
infoPtr->selected = index;
|
||||
|
||||
sel = (INT)SendMessageW (infoPtr->hwndCombo, CB_SETCURSEL, index, 0);
|
||||
|
@ -911,7 +910,7 @@ static INT COMBOEX_SetCursel (COMBOEX_INFO *infoPtr, INT index)
|
|||
}
|
||||
|
||||
|
||||
static DWORD_PTR COMBOEX_SetItemData (COMBOEX_INFO *infoPtr, INT index, DWORD_PTR data)
|
||||
static DWORD_PTR COMBOEX_SetItemData (COMBOEX_INFO *infoPtr, INT_PTR index, DWORD_PTR data)
|
||||
{
|
||||
CBE_ITEMDATA *item1;
|
||||
CBE_ITEMDATA const *item2;
|
||||
|
@ -976,7 +975,7 @@ static LRESULT COMBOEX_Create (HWND hwnd, CREATESTRUCTA const *cs)
|
|||
INT i;
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (COMBOEX_INFO *)Alloc (sizeof(COMBOEX_INFO));
|
||||
infoPtr = Alloc (sizeof(COMBOEX_INFO));
|
||||
if (!infoPtr) return -1;
|
||||
|
||||
/* initialize info structure */
|
||||
|
@ -1109,7 +1108,7 @@ static LRESULT COMBOEX_Create (HWND hwnd, CREATESTRUCTA const *cs)
|
|||
* Create an item structure to represent the data in the
|
||||
* EDIT control. It is allocated zero-filled.
|
||||
*/
|
||||
infoPtr->edit = (CBE_ITEMDATA *)Alloc (sizeof (CBE_ITEMDATA));
|
||||
infoPtr->edit = Alloc (sizeof (CBE_ITEMDATA));
|
||||
if (!infoPtr->edit) {
|
||||
COMBOEX_Destroy(infoPtr);
|
||||
return -1;
|
||||
|
@ -1119,13 +1118,14 @@ static LRESULT COMBOEX_Create (HWND hwnd, CREATESTRUCTA const *cs)
|
|||
}
|
||||
|
||||
|
||||
static LRESULT COMBOEX_Command (COMBOEX_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
static LRESULT COMBOEX_Command (COMBOEX_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
LRESULT lret;
|
||||
INT command = HIWORD(wParam);
|
||||
CBE_ITEMDATA *item = 0;
|
||||
WCHAR wintext[520];
|
||||
INT cursel, n, oldItem;
|
||||
INT cursel, n;
|
||||
INT_PTR oldItem;
|
||||
NMCBEENDEDITW cbeend;
|
||||
DWORD oldflags;
|
||||
HWND parent = infoPtr->hwndNotify;
|
||||
|
@ -1225,7 +1225,7 @@ static LRESULT COMBOEX_Command (COMBOEX_INFO *infoPtr, WPARAM wParam, LPARAM lPa
|
|||
*/
|
||||
oldItem = SendMessageW (infoPtr->hwndCombo, CB_GETCURSEL, 0, 0);
|
||||
if (!(item = COMBOEX_FindItem(infoPtr, oldItem))) {
|
||||
ERR("item %d not found. Problem!\n", oldItem);
|
||||
ERR("item %ld not found. Problem!\n", oldItem);
|
||||
break;
|
||||
}
|
||||
infoPtr->selected = oldItem;
|
||||
|
@ -1408,7 +1408,7 @@ static LRESULT COMBOEX_DrawItem (COMBOEX_INFO *infoPtr, DRAWITEMSTRUCT const *di
|
|||
item->mask &= ~CBEIF_TEXT;
|
||||
if( (len = GetWindowTextLengthW(infoPtr->hwndEdit)) ) {
|
||||
item->mask |= CBEIF_TEXT;
|
||||
item->pszText = (LPWSTR)Alloc ((len + 1)*sizeof(WCHAR));
|
||||
item->pszText = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (item->pszText)
|
||||
GetWindowTextW(infoPtr->hwndEdit, item->pszText, len+1);
|
||||
|
||||
|
@ -1713,7 +1713,7 @@ static LRESULT COMBOEX_WindowPosChanging (COMBOEX_INFO *infoPtr, WINDOWPOS *wp)
|
|||
static LRESULT WINAPI
|
||||
COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HWND hwndComboex = (HWND)GetPropW(hwnd, COMBOEX_SUBCLASS_PROP);
|
||||
HWND hwndComboex = GetPropW(hwnd, COMBOEX_SUBCLASS_PROP);
|
||||
COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwndComboex);
|
||||
NMCBEENDEDITW cbeend;
|
||||
WCHAR edit_text[260];
|
||||
|
@ -1751,7 +1751,7 @@ COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
hwnd, uMsg, wParam, lParam);
|
||||
|
||||
case WM_KEYDOWN: {
|
||||
INT oldItem, selected, step = 1;
|
||||
INT_PTR oldItem, selected, step = 1;
|
||||
CBE_ITEMDATA *item;
|
||||
|
||||
switch ((INT)wParam)
|
||||
|
@ -1788,7 +1788,7 @@ COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
oldItem = SendMessageW (infoPtr->hwndCombo, CB_GETCURSEL, 0, 0);
|
||||
InvalidateRect (infoPtr->hwndCombo, 0, 0);
|
||||
if (!(item = COMBOEX_FindItem(infoPtr, oldItem))) {
|
||||
ERR("item %d not found. Problem!\n", oldItem);
|
||||
ERR("item %ld not found. Problem!\n", oldItem);
|
||||
break;
|
||||
}
|
||||
infoPtr->selected = oldItem;
|
||||
|
@ -1830,7 +1830,7 @@ COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
if (selected != -1) {
|
||||
cmp_func_t cmptext = get_cmp_func(infoPtr);
|
||||
item = COMBOEX_FindItem (infoPtr, selected);
|
||||
TRACE("handling VK_RETURN, selected = %d, selected_text=%s\n",
|
||||
TRACE("handling VK_RETURN, selected = %ld, selected_text=%s\n",
|
||||
selected, debugstr_txt(item->pszText));
|
||||
TRACE("handling VK_RETURN, edittext=%s\n",
|
||||
debugstr_w(edit_text));
|
||||
|
@ -1911,7 +1911,7 @@ COMBOEX_EditWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
static LRESULT WINAPI
|
||||
COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HWND hwndComboex = (HWND)GetPropW(hwnd, COMBOEX_SUBCLASS_PROP);
|
||||
HWND hwndComboex = GetPropW(hwnd, COMBOEX_SUBCLASS_PROP);
|
||||
COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwndComboex);
|
||||
NMCBEENDEDITW cbeend;
|
||||
NMMOUSE nmmse;
|
||||
|
@ -2080,8 +2080,8 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
LPCWSTR lastwrk;
|
||||
cmp_func_t cmptext = get_cmp_func(infoPtr);
|
||||
|
||||
INT selected = SendMessageW (infoPtr->hwndCombo,
|
||||
CB_GETCURSEL, 0, 0);
|
||||
INT_PTR selected = SendMessageW (infoPtr->hwndCombo,
|
||||
CB_GETCURSEL, 0, 0);
|
||||
|
||||
/* lstrlenW( lastworkingURL ) */
|
||||
|
||||
|
@ -2094,7 +2094,7 @@ COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
lastwrk = COMBOEX_GetText(infoPtr, item);
|
||||
}
|
||||
|
||||
TRACE("handling EN_CHANGE, selected = %d, selected_text=%s\n",
|
||||
TRACE("handling EN_CHANGE, selected = %ld, selected_text=%s\n",
|
||||
selected, debugstr_w(lastwrk));
|
||||
TRACE("handling EN_CHANGE, edittext=%s\n",
|
||||
debugstr_w(edit_text));
|
||||
|
@ -2274,7 +2274,7 @@ COMBOEX_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
/* Window messages passed to parent */
|
||||
case WM_COMMAND:
|
||||
return COMBOEX_Command (infoPtr, wParam, lParam);
|
||||
return COMBOEX_Command (infoPtr, wParam);
|
||||
|
||||
case WM_NOTIFY:
|
||||
if (infoPtr->NtfUnicode)
|
||||
|
@ -2310,7 +2310,7 @@ COMBOEX_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return 0;
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",uMsg,wParam,lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
|
|
@ -148,6 +148,8 @@ HWND COMCTL32_CreateToolTip (HWND);
|
|||
VOID COMCTL32_RefreshSysColors(void);
|
||||
void COMCTL32_DrawInsertMark(HDC hDC, const RECT *lpRect, COLORREF clrInsertMark, BOOL bHorizontal);
|
||||
void COMCTL32_EnsureBitmapSize(HBITMAP *pBitmap, int cxMinWidth, int cyMinHeight, COLORREF crBackground);
|
||||
void COMCTL32_GetFontMetrics(HFONT hFont, TEXTMETRICW *ptm);
|
||||
BOOL COMCTL32_IsReflectedMessage(UINT uMsg);
|
||||
INT Str_GetPtrWtoA (LPCWSTR lpSrc, LPSTR lpDest, INT nMaxLen);
|
||||
INT Str_GetPtrAtoW (LPCSTR lpSrc, LPWSTR lpDest, INT nMaxLen);
|
||||
BOOL Str_SetPtrAtoW (LPWSTR *lppDest, LPCSTR lpSrc);
|
||||
|
@ -173,8 +175,8 @@ typedef struct
|
|||
|
||||
/* undocumented functions */
|
||||
|
||||
LPVOID WINAPI Alloc (DWORD);
|
||||
LPVOID WINAPI ReAlloc (LPVOID, DWORD);
|
||||
LPVOID WINAPI Alloc (DWORD) __WINE_ALLOC_SIZE(1);
|
||||
LPVOID WINAPI ReAlloc (LPVOID, DWORD) __WINE_ALLOC_SIZE(2);
|
||||
BOOL WINAPI Free (LPVOID);
|
||||
DWORD WINAPI GetSize (LPVOID);
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
<file>string.c</file>
|
||||
<file>syslink.c</file>
|
||||
<file>tab.c</file>
|
||||
<file>theme_button.c</file>
|
||||
<file>theme_combo.c</file>
|
||||
<file>theme_dialog.c</file>
|
||||
<file>theme_edit.c</file>
|
||||
|
|
|
@ -16,17 +16,20 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
|
||||
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
|
||||
STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Properties for %s"
|
||||
FONT 9, "MS UI Gothic"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
|
||||
PUSHBUTTON "キャンセル", IDCANCEL,58,122,50,14
|
||||
PUSHBUTTON "適用(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
|
||||
PUSHBUTTON "ヘルプ", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
|
||||
PUSHBUTTON "キャンセル", IDCANCEL,58,122,50,14
|
||||
PUSHBUTTON "適用(&A)", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED
|
||||
PUSHBUTTON "ヘルプ", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP
|
||||
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114
|
||||
END
|
||||
|
||||
|
@ -34,13 +37,13 @@ END
|
|||
IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
|
||||
CAPTION "Wizard"
|
||||
FONT 9, "MS UI Gothic"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "< 戻る(&B)", IDC_BACK_BUTTON,71,138,50,14
|
||||
DEFPUSHBUTTON "進む(&N) >", IDC_NEXT_BUTTON,121,138,50,14
|
||||
DEFPUSHBUTTON "完了", IDC_FINISH_BUTTON,121,138,50,14
|
||||
PUSHBUTTON "キャンセル", IDCANCEL,178,138,50,14
|
||||
PUSHBUTTON "ヘルプ", IDHELP,235,138,50,14,WS_GROUP
|
||||
PUSHBUTTON "< 戻る(&B)", IDC_BACK_BUTTON,71,138,50,14
|
||||
DEFPUSHBUTTON "進む(&N) >", IDC_NEXT_BUTTON,121,138,50,14
|
||||
DEFPUSHBUTTON "完了", IDC_FINISH_BUTTON,121,138,50,14
|
||||
PUSHBUTTON "キャンセル", IDCANCEL,178,138,50,14
|
||||
PUSHBUTTON "ヘルプ", IDHELP,235,138,50,14,WS_GROUP
|
||||
LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN
|
||||
CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
|
||||
LTEXT "", IDC_SUNKEN_LINEHEADER,0,35,290,1,SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE
|
||||
|
@ -50,17 +53,17 @@ END
|
|||
IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Customize Toolbar"
|
||||
FONT 9, "MS UI Gothic"
|
||||
FONT 9, "MS Shell Dlg"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "閉じる(&C)", IDCANCEL,308,6,44,14
|
||||
PUSHBUTTON "リセット(R&)", IDC_RESET_BTN,308,23,44,14
|
||||
PUSHBUTTON "ヘルプ(&H)", IDC_HELP_BTN,308,40,44,14
|
||||
PUSHBUTTON "上へ (&U)", IDC_MOVEUP_BTN,308,74,44,14
|
||||
PUSHBUTTON "下へ (&D)", IDC_MOVEDN_BTN,308,91,44,14
|
||||
DEFPUSHBUTTON "閉じる(&C)", IDCANCEL,308,6,44,14
|
||||
PUSHBUTTON "リセット(R&)", IDC_RESET_BTN,308,23,44,14
|
||||
PUSHBUTTON "ヘルプ(&H)", IDC_HELP_BTN,308,40,44,14
|
||||
PUSHBUTTON "上へ (&U)", IDC_MOVEUP_BTN,308,74,44,14
|
||||
PUSHBUTTON "下へ (&D)", IDC_MOVEDN_BTN,308,91,44,14
|
||||
LTEXT "A&vailable buttons:", -1,4,5,84,10
|
||||
LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON "追加(&A) ->", IDOK, 131, 42, 44, 14
|
||||
PUSHBUTTON "<- 削除(&R)", IDC_REMOVE_BTN,131,62,44,14
|
||||
PUSHBUTTON "追加(&A) ->", IDOK, 131, 42, 44, 14
|
||||
PUSHBUTTON "<- 削除(&R)", IDC_REMOVE_BTN,131,62,44,14
|
||||
LTEXT "&Toolbar buttons:", -1,182,5,78,10
|
||||
LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
@ -85,3 +88,5 @@ STRINGTABLE DISCARDABLE
|
|||
{
|
||||
HKY_NONE "None"
|
||||
}
|
||||
|
||||
#pragma code_page(default)
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL
|
||||
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
|
||||
|
||||
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
|
||||
STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
|
||||
|
|
|
@ -123,11 +123,11 @@ static const char manifest[] =
|
|||
|
||||
static const char manifest_filename[] = ARCH "_" NAME "_" PUBLIC_KEY "_" VERSION "_none_deadbeef.manifest";
|
||||
|
||||
LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
LPWSTR COMCTL32_wSubclass = NULL;
|
||||
static LPWSTR COMCTL32_wSubclass = NULL;
|
||||
HMODULE COMCTL32_hModule = 0;
|
||||
LANGID COMCTL32_uiLang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
|
||||
static LANGID COMCTL32_uiLang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
|
||||
HBRUSH COMCTL32_hPattern55AABrush = NULL;
|
||||
COMCTL32_SysColor comctl32_color;
|
||||
|
||||
|
@ -878,7 +878,7 @@ CreateMappedBitmap (HINSTANCE hInstance, INT_PTR idBitmap, UINT wFlags,
|
|||
hglb = LoadResource (hInstance, hRsrc);
|
||||
if (hglb == 0)
|
||||
return 0;
|
||||
lpBitmap = (LPBITMAPINFOHEADER)LockResource (hglb);
|
||||
lpBitmap = LockResource (hglb);
|
||||
if (lpBitmap == NULL)
|
||||
return 0;
|
||||
|
||||
|
@ -889,7 +889,7 @@ CreateMappedBitmap (HINSTANCE hInstance, INT_PTR idBitmap, UINT wFlags,
|
|||
else
|
||||
nColorTableSize = 0;
|
||||
nSize = lpBitmap->biSize + nColorTableSize * sizeof(RGBQUAD);
|
||||
lpBitmapInfo = (LPBITMAPINFOHEADER)GlobalAlloc (GMEM_FIXED, nSize);
|
||||
lpBitmapInfo = GlobalAlloc (GMEM_FIXED, nSize);
|
||||
if (lpBitmapInfo == NULL)
|
||||
return 0;
|
||||
RtlMoveMemory (lpBitmapInfo, lpBitmap, nSize);
|
||||
|
@ -932,7 +932,7 @@ CreateMappedBitmap (HINSTANCE hInstance, INT_PTR idBitmap, UINT wFlags,
|
|||
DeleteDC (hdcDst);
|
||||
}
|
||||
ReleaseDC (NULL, hdcScreen);
|
||||
GlobalFree ((HGLOBAL)lpBitmapInfo);
|
||||
GlobalFree (lpBitmapInfo);
|
||||
FreeResource (hglb);
|
||||
|
||||
return hbm;
|
||||
|
@ -1117,7 +1117,7 @@ BOOL WINAPI SetWindowSubclass (HWND hWnd, SUBCLASSPROC pfnSubclass,
|
|||
* from there. */
|
||||
|
||||
/* See if we have been called for this window */
|
||||
stack = (LPSUBCLASS_INFO)GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
stack = GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
if (!stack) {
|
||||
/* allocate stack */
|
||||
stack = Alloc (sizeof(SUBCLASS_INFO));
|
||||
|
@ -1196,7 +1196,7 @@ BOOL WINAPI GetWindowSubclass (HWND hWnd, SUBCLASSPROC pfnSubclass,
|
|||
TRACE ("(%p, %p, %lx, %p)\n", hWnd, pfnSubclass, uID, pdwRef);
|
||||
|
||||
/* See if we have been called for this window */
|
||||
stack = (LPSUBCLASS_INFO)GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
stack = GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
if (!stack)
|
||||
return FALSE;
|
||||
|
||||
|
@ -1239,7 +1239,7 @@ BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR u
|
|||
TRACE ("(%p, %p, %lx)\n", hWnd, pfnSubclass, uID);
|
||||
|
||||
/* Find the Subclass to remove */
|
||||
stack = (LPSUBCLASS_INFO)GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
stack = GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
if (!stack)
|
||||
return FALSE;
|
||||
|
||||
|
@ -1284,7 +1284,7 @@ BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR u
|
|||
* Window procedure for all subclassed windows.
|
||||
* Saves the current subclassing stack position to support nested messages
|
||||
*/
|
||||
LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
static LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
LPSUBCLASS_INFO stack;
|
||||
LPSUBCLASSPROCS proc;
|
||||
|
@ -1292,7 +1292,7 @@ LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
|
|||
|
||||
TRACE ("(%p, 0x%08x, 0x%08lx, 0x%08lx)\n", hWnd, uMsg, wParam, lParam);
|
||||
|
||||
stack = (LPSUBCLASS_INFO)GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
stack = GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
if (!stack) {
|
||||
ERR ("Our sub classing stack got erased for %p!! Nothing we can do\n", hWnd);
|
||||
return 0;
|
||||
|
@ -1343,7 +1343,7 @@ LRESULT WINAPI DefSubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
|||
TRACE ("(%p, 0x%08x, 0x%08lx, 0x%08lx)\n", hWnd, uMsg, wParam, lParam);
|
||||
|
||||
/* retrieve our little stack from the Properties */
|
||||
stack = (LPSUBCLASS_INFO)GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
stack = GetPropW (hWnd, COMCTL32_wSubclass);
|
||||
if (!stack) {
|
||||
ERR ("Our sub classing stack got erased for %p!! Nothing we can do\n", hWnd);
|
||||
return 0;
|
||||
|
@ -1561,6 +1561,61 @@ void COMCTL32_EnsureBitmapSize(HBITMAP *pBitmap, int cxMinWidth, int cyMinHeight
|
|||
return;
|
||||
}
|
||||
|
||||
void COMCTL32_GetFontMetrics(HFONT hFont, TEXTMETRICW *ptm)
|
||||
{
|
||||
HDC hdc = GetDC(NULL);
|
||||
HFONT hOldFont;
|
||||
|
||||
hOldFont = SelectObject(hdc, hFont);
|
||||
GetTextMetricsW(hdc, ptm);
|
||||
SelectObject(hdc, hOldFont);
|
||||
ReleaseDC(NULL, hdc);
|
||||
}
|
||||
|
||||
#ifndef OCM__BASE /* avoid including olectl.h */
|
||||
#define OCM__BASE (WM_USER+0x1c00)
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* COMCTL32_IsReflectedMessage [internal]
|
||||
*
|
||||
* Some parents reflect notify messages - for some messages sent by the child,
|
||||
* they send it back with the message code increased by OCM__BASE (0x2000).
|
||||
* This allows better subclassing of controls. We don't need to handle such
|
||||
* messages but we don't want to print ERRs for them, so this helper function
|
||||
* identifies them.
|
||||
*
|
||||
* Some of the codes are in the CCM_FIRST..CCM_LAST range, but there is no
|
||||
* colision with defined CCM_ codes.
|
||||
*/
|
||||
BOOL COMCTL32_IsReflectedMessage(UINT uMsg)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
case OCM__BASE + WM_COMMAND:
|
||||
case OCM__BASE + WM_CTLCOLORBTN:
|
||||
case OCM__BASE + WM_CTLCOLOREDIT:
|
||||
case OCM__BASE + WM_CTLCOLORDLG:
|
||||
case OCM__BASE + WM_CTLCOLORLISTBOX:
|
||||
case OCM__BASE + WM_CTLCOLORMSGBOX:
|
||||
case OCM__BASE + WM_CTLCOLORSCROLLBAR:
|
||||
case OCM__BASE + WM_CTLCOLORSTATIC:
|
||||
case OCM__BASE + WM_DRAWITEM:
|
||||
case OCM__BASE + WM_MEASUREITEM:
|
||||
case OCM__BASE + WM_DELETEITEM:
|
||||
case OCM__BASE + WM_VKEYTOITEM:
|
||||
case OCM__BASE + WM_CHARTOITEM:
|
||||
case OCM__BASE + WM_COMPAREITEM:
|
||||
case OCM__BASE + WM_HSCROLL:
|
||||
case OCM__BASE + WM_VSCROLL:
|
||||
case OCM__BASE + WM_PARENTNOTIFY:
|
||||
case OCM__BASE + WM_NOTIFY:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MirrorIcon [COMCTL32.414]
|
||||
*
|
||||
|
|
|
@ -707,7 +707,7 @@ DATETIME_HitTest (const DATETIME_INFO *infoPtr, POINT pt)
|
|||
|
||||
|
||||
static LRESULT
|
||||
DATETIME_LButtonDown (DATETIME_INFO *infoPtr, WORD wKey, INT x, INT y)
|
||||
DATETIME_LButtonDown (DATETIME_INFO *infoPtr, INT x, INT y)
|
||||
{
|
||||
POINT pt;
|
||||
int old, new;
|
||||
|
@ -769,7 +769,7 @@ DATETIME_LButtonDown (DATETIME_INFO *infoPtr, WORD wKey, INT x, INT y)
|
|||
|
||||
|
||||
static LRESULT
|
||||
DATETIME_LButtonUp (DATETIME_INFO *infoPtr, WORD wKey)
|
||||
DATETIME_LButtonUp (DATETIME_INFO *infoPtr)
|
||||
{
|
||||
if(infoPtr->bCalDepressed) {
|
||||
infoPtr->bCalDepressed = FALSE;
|
||||
|
@ -865,7 +865,7 @@ DATETIME_EraseBackground (const DATETIME_INFO *infoPtr, HDC hdc)
|
|||
|
||||
|
||||
static LRESULT
|
||||
DATETIME_Notify (DATETIME_INFO *infoPtr, int idCtrl, LPNMHDR lpnmh)
|
||||
DATETIME_Notify (DATETIME_INFO *infoPtr, LPNMHDR lpnmh)
|
||||
{
|
||||
TRACE ("Got notification %x from %p\n", lpnmh->code, lpnmh->hwndFrom);
|
||||
TRACE ("info: %p %p %p\n", infoPtr->hwndSelf, infoPtr->hMonthCal, infoPtr->hUpdown);
|
||||
|
@ -890,7 +890,7 @@ DATETIME_Notify (DATETIME_INFO *infoPtr, int idCtrl, LPNMHDR lpnmh)
|
|||
|
||||
|
||||
static LRESULT
|
||||
DATETIME_KeyDown (DATETIME_INFO *infoPtr, DWORD vkCode, LPARAM flags)
|
||||
DATETIME_KeyDown (DATETIME_INFO *infoPtr, DWORD vkCode)
|
||||
{
|
||||
int fieldNum = infoPtr->select & DTHT_DATEFIELD;
|
||||
int wrap = 0;
|
||||
|
@ -902,83 +902,6 @@ DATETIME_KeyDown (DATETIME_INFO *infoPtr, DWORD vkCode, LPARAM flags)
|
|||
FIXME ("Callbacks not implemented yet\n");
|
||||
}
|
||||
|
||||
if (vkCode >= '0' && vkCode <= '9') {
|
||||
/* this is a somewhat simplified version of what Windows does */
|
||||
SYSTEMTIME *date = &infoPtr->date;
|
||||
switch (infoPtr->fieldspec[fieldNum]) {
|
||||
case ONEDIGITYEAR:
|
||||
case TWODIGITYEAR:
|
||||
date->wYear = date->wYear - (date->wYear%100) +
|
||||
(date->wYear%10)*10 + (vkCode-'0');
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case INVALIDFULLYEAR:
|
||||
case FULLYEAR:
|
||||
date->wYear = (date->wYear%1000)*10 + (vkCode-'0');
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITMONTH:
|
||||
case TWODIGITMONTH:
|
||||
if ((date->wMonth%10) > 1 || (vkCode-'0') > 2)
|
||||
date->wMonth = vkCode-'0';
|
||||
else
|
||||
date->wMonth = (date->wMonth%10)*10+vkCode-'0';
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITDAY:
|
||||
case TWODIGITDAY:
|
||||
/* probably better checking here would help */
|
||||
if ((date->wDay%10) >= 3 && (vkCode-'0') > 1)
|
||||
date->wDay = vkCode-'0';
|
||||
else
|
||||
date->wDay = (date->wDay%10)*10+vkCode-'0';
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGIT12HOUR:
|
||||
case TWODIGIT12HOUR:
|
||||
if ((date->wHour%10) > 1 || (vkCode-'0') > 2)
|
||||
date->wHour = vkCode-'0';
|
||||
else
|
||||
date->wHour = (date->wHour%10)*10+vkCode-'0';
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGIT24HOUR:
|
||||
case TWODIGIT24HOUR:
|
||||
if ((date->wHour%10) > 2)
|
||||
date->wHour = vkCode-'0';
|
||||
else if ((date->wHour%10) == 2 && (vkCode-'0') > 3)
|
||||
date->wHour = vkCode-'0';
|
||||
else
|
||||
date->wHour = (date->wHour%10)*10+vkCode-'0';
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITMINUTE:
|
||||
case TWODIGITMINUTE:
|
||||
if ((date->wMinute%10) > 5)
|
||||
date->wMinute = vkCode-'0';
|
||||
else
|
||||
date->wMinute = (date->wMinute%10)*10+vkCode-'0';
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITSECOND:
|
||||
case TWODIGITSECOND:
|
||||
if ((date->wSecond%10) > 5)
|
||||
date->wSecond = vkCode-'0';
|
||||
else
|
||||
date->wSecond = (date->wSecond%10)*10+vkCode-'0';
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (vkCode) {
|
||||
case VK_ADD:
|
||||
case VK_UP:
|
||||
|
@ -1025,6 +948,94 @@ DATETIME_KeyDown (DATETIME_INFO *infoPtr, DWORD vkCode, LPARAM flags)
|
|||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
DATETIME_Char (DATETIME_INFO *infoPtr, WPARAM vkCode)
|
||||
{
|
||||
int fieldNum = infoPtr->select & DTHT_DATEFIELD;
|
||||
|
||||
if (vkCode >= '0' && vkCode <= '9') {
|
||||
int num = vkCode-'0';
|
||||
int newDays;
|
||||
|
||||
/* this is a somewhat simplified version of what Windows does */
|
||||
SYSTEMTIME *date = &infoPtr->date;
|
||||
switch (infoPtr->fieldspec[fieldNum]) {
|
||||
case ONEDIGITYEAR:
|
||||
case TWODIGITYEAR:
|
||||
date->wYear = date->wYear - (date->wYear%100) +
|
||||
(date->wYear%10)*10 + num;
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case INVALIDFULLYEAR:
|
||||
case FULLYEAR:
|
||||
date->wYear = (date->wYear%1000)*10 + num;
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITMONTH:
|
||||
case TWODIGITMONTH:
|
||||
if ((date->wMonth%10) > 1 || num > 2)
|
||||
date->wMonth = num;
|
||||
else
|
||||
date->wMonth = (date->wMonth%10)*10+num;
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITDAY:
|
||||
case TWODIGITDAY:
|
||||
newDays = (date->wDay%10)*10+num;
|
||||
if (newDays > MONTHCAL_MonthLength(date->wMonth, date->wYear))
|
||||
date->wDay = num;
|
||||
else
|
||||
date->wDay = newDays;
|
||||
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
|
||||
date->wDay,date->wMonth,date->wYear);
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGIT12HOUR:
|
||||
case TWODIGIT12HOUR:
|
||||
if ((date->wHour%10) > 1 || num > 2)
|
||||
date->wHour = num;
|
||||
else
|
||||
date->wHour = (date->wHour%10)*10+num;
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGIT24HOUR:
|
||||
case TWODIGIT24HOUR:
|
||||
if ((date->wHour%10) > 2)
|
||||
date->wHour = num;
|
||||
else if ((date->wHour%10) == 2 && num > 3)
|
||||
date->wHour = num;
|
||||
else
|
||||
date->wHour = (date->wHour%10)*10+num;
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITMINUTE:
|
||||
case TWODIGITMINUTE:
|
||||
if ((date->wMinute%10) > 5)
|
||||
date->wMinute = num;
|
||||
else
|
||||
date->wMinute = (date->wMinute%10)*10+num;
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
case ONEDIGITSECOND:
|
||||
case TWODIGITSECOND:
|
||||
if ((date->wSecond%10) > 5)
|
||||
date->wSecond = num;
|
||||
else
|
||||
date->wSecond = (date->wSecond%10)*10+num;
|
||||
DATETIME_SendDateTimeChangeNotify (infoPtr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
DATETIME_VScroll (DATETIME_INFO *infoPtr, WORD wScroll)
|
||||
{
|
||||
|
@ -1138,7 +1149,7 @@ DATETIME_SendSimpleNotify (const DATETIME_INFO *infoPtr, UINT code)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
DATETIME_Size (DATETIME_INFO *infoPtr, WORD flags, INT width, INT height)
|
||||
DATETIME_Size (DATETIME_INFO *infoPtr, INT width, INT height)
|
||||
{
|
||||
/* set size */
|
||||
infoPtr->rcClient.bottom = height;
|
||||
|
@ -1225,7 +1236,7 @@ static LRESULT
|
|||
DATETIME_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
|
||||
{
|
||||
static const WCHAR SysMonthCal32W[] = { 'S', 'y', 's', 'M', 'o', 'n', 't', 'h', 'C', 'a', 'l', '3', '2', 0 };
|
||||
DATETIME_INFO *infoPtr = (DATETIME_INFO *)Alloc (sizeof(DATETIME_INFO));
|
||||
DATETIME_INFO *infoPtr = Alloc (sizeof(DATETIME_INFO));
|
||||
STYLESTRUCT ss = { 0, lpcs->style };
|
||||
|
||||
if (!infoPtr) return -1;
|
||||
|
@ -1234,9 +1245,9 @@ DATETIME_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
infoPtr->dwStyle = lpcs->style;
|
||||
|
||||
infoPtr->nrFieldsAllocated = 32;
|
||||
infoPtr->fieldspec = (int *) Alloc (infoPtr->nrFieldsAllocated * sizeof(int));
|
||||
infoPtr->fieldRect = (RECT *) Alloc (infoPtr->nrFieldsAllocated * sizeof(RECT));
|
||||
infoPtr->buflen = (int *) Alloc (infoPtr->nrFieldsAllocated * sizeof(int));
|
||||
infoPtr->fieldspec = Alloc (infoPtr->nrFieldsAllocated * sizeof(int));
|
||||
infoPtr->fieldRect = Alloc (infoPtr->nrFieldsAllocated * sizeof(RECT));
|
||||
infoPtr->buflen = Alloc (infoPtr->nrFieldsAllocated * sizeof(int));
|
||||
infoPtr->hwndNotify = lpcs->hwndParent;
|
||||
infoPtr->select = -1; /* initially, nothing is selected */
|
||||
infoPtr->bDropdownEnabled = TRUE;
|
||||
|
@ -1323,7 +1334,7 @@ DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return SendMessageW (infoPtr->hMonthCal, WM_GETFONT, wParam, lParam);
|
||||
|
||||
case WM_NOTIFY:
|
||||
return DATETIME_Notify (infoPtr, (int)wParam, (LPNMHDR)lParam);
|
||||
return DATETIME_Notify (infoPtr, (LPNMHDR)lParam);
|
||||
|
||||
case WM_ENABLE:
|
||||
return DATETIME_Enable (infoPtr, (BOOL)wParam);
|
||||
|
@ -1339,7 +1350,10 @@ DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return DATETIME_Paint (infoPtr, (HDC)wParam);
|
||||
|
||||
case WM_KEYDOWN:
|
||||
return DATETIME_KeyDown (infoPtr, wParam, lParam);
|
||||
return DATETIME_KeyDown (infoPtr, wParam);
|
||||
|
||||
case WM_CHAR:
|
||||
return DATETIME_Char (infoPtr, wParam);
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
return DATETIME_KillFocus (infoPtr, (HWND)wParam);
|
||||
|
@ -1351,13 +1365,13 @@ DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return DATETIME_SetFocus (infoPtr, (HWND)wParam);
|
||||
|
||||
case WM_SIZE:
|
||||
return DATETIME_Size (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
return DATETIME_Size (infoPtr, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return DATETIME_LButtonDown (infoPtr, (WORD)wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
return DATETIME_LButtonDown (infoPtr, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return DATETIME_LButtonUp (infoPtr, (WORD)wParam);
|
||||
return DATETIME_LButtonUp (infoPtr);
|
||||
|
||||
case WM_VSCROLL:
|
||||
return DATETIME_VScroll (infoPtr, (WORD)wParam);
|
||||
|
@ -1381,7 +1395,7 @@ DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return (LRESULT) infoPtr->hFont;
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -106,7 +106,7 @@ HRESULT WINAPI DPA_LoadStream (HDPA *phDpa, DPALOADPROC loadProc,
|
|||
if (!phDpa || !loadProc || !pStream)
|
||||
return E_INVALIDARG;
|
||||
|
||||
*phDpa = (HDPA)NULL;
|
||||
*phDpa = NULL;
|
||||
|
||||
position.QuadPart = 0;
|
||||
|
||||
|
|
|
@ -257,7 +257,7 @@ FlatSB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return FlatSB_Destroy (hwnd, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -249,7 +249,7 @@ HEADER_SetItemBounds (HWND hwnd)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
HEADER_Size (HWND hwnd, WPARAM wParam)
|
||||
HEADER_Size (HWND hwnd)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -577,7 +577,7 @@ HEADER_Refresh (HWND hwnd, HDC hdc)
|
|||
|
||||
|
||||
static void
|
||||
HEADER_RefreshItem (HWND hwnd, HDC hdc, INT iItem)
|
||||
HEADER_RefreshItem (HWND hwnd, INT iItem)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -1073,7 +1073,7 @@ HEADER_DeleteItem (HWND hwnd, WPARAM wParam)
|
|||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);
|
||||
INT iItem = (INT)wParam;
|
||||
INT iOrder;
|
||||
INT i;
|
||||
UINT i;
|
||||
|
||||
TRACE("[iItem=%d]\n", iItem);
|
||||
|
||||
|
@ -1250,7 +1250,7 @@ HEADER_GetUnicodeFormat (HWND hwnd)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_HitTest (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_HitTest (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
LPHDHITTESTINFO phti = (LPHDHITTESTINFO)lParam;
|
||||
|
||||
|
@ -1332,7 +1332,7 @@ HEADER_InsertItemT (HWND hwnd, INT nItem, const HDITEMW *phdi, BOOL bUnicode)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_Layout (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_Layout (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
LPHDLAYOUT lpLayout = (LPHDLAYOUT)lParam;
|
||||
|
@ -1447,14 +1447,14 @@ HEADER_SetUnicodeFormat (HWND hwnd, WPARAM wParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_Create (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
HEADER_INFO *infoPtr;
|
||||
TEXTMETRICW tm;
|
||||
HFONT hOldFont;
|
||||
HDC hdc;
|
||||
|
||||
infoPtr = (HEADER_INFO *)Alloc (sizeof(HEADER_INFO));
|
||||
infoPtr = Alloc (sizeof(HEADER_INFO));
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
infoPtr->hwndNotify = ((LPCREATESTRUCTA)lParam)->hwndParent;
|
||||
|
@ -1490,7 +1490,7 @@ HEADER_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_Destroy (HWND hwnd)
|
||||
{
|
||||
HTHEME theme = GetWindowTheme(hwnd);
|
||||
CloseThemeData(theme);
|
||||
|
@ -1498,7 +1498,7 @@ HEADER_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
HEADER_NCDestroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_NCDestroy (HWND hwnd)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
HEADER_ITEM *lpItem;
|
||||
|
@ -1544,7 +1544,7 @@ HEADER_IsDragDistance(const HEADER_INFO *infoPtr, const POINT *pt)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
HEADER_LButtonDblClk (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_LButtonDblClk (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
POINT pt;
|
||||
UINT flags;
|
||||
|
@ -1564,7 +1564,7 @@ HEADER_LButtonDblClk (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_LButtonDown (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
DWORD dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
|
||||
|
@ -1589,7 +1589,7 @@ HEADER_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
/* Send WM_CUSTOMDRAW */
|
||||
hdc = GetDC (hwnd);
|
||||
HEADER_RefreshItem (hwnd, hdc, nItem);
|
||||
HEADER_RefreshItem (hwnd, nItem);
|
||||
ReleaseDC (hwnd, hdc);
|
||||
|
||||
TRACE("Pressed item %d!\n", nItem);
|
||||
|
@ -1620,7 +1620,7 @@ HEADER_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_LButtonUp (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
DWORD dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
|
||||
|
@ -1670,7 +1670,7 @@ HEADER_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
infoPtr->items[infoPtr->iMoveItem].bDown = FALSE;
|
||||
hdc = GetDC (hwnd);
|
||||
HEADER_RefreshItem (hwnd, hdc, infoPtr->iMoveItem);
|
||||
HEADER_RefreshItem (hwnd, infoPtr->iMoveItem);
|
||||
ReleaseDC (hwnd, hdc);
|
||||
|
||||
HEADER_SendNotifyWithHDItemT(hwnd, HDN_ITEMCLICKW, infoPtr->iMoveItem, NULL);
|
||||
|
@ -1735,7 +1735,7 @@ HEADER_NotifyFormat (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
HEADER_MouseLeave (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_MouseLeave (HWND hwnd)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
/* Reset hot-tracked item when mouse leaves control. */
|
||||
|
@ -1743,7 +1743,7 @@ HEADER_MouseLeave (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
HDC hdc = GetDC (hwnd);
|
||||
|
||||
infoPtr->iHotItem = -1;
|
||||
if (oldHotItem != -1) HEADER_RefreshItem (hwnd, hdc, oldHotItem);
|
||||
if (oldHotItem != -1) HEADER_RefreshItem (hwnd, oldHotItem);
|
||||
ReleaseDC (hwnd, hdc);
|
||||
|
||||
return 0;
|
||||
|
@ -1751,7 +1751,7 @@ HEADER_MouseLeave (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_MouseMove (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
DWORD dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
|
||||
|
@ -1814,7 +1814,7 @@ HEADER_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
infoPtr->items[infoPtr->iMoveItem].bDown = FALSE;
|
||||
if (oldState != infoPtr->items[infoPtr->iMoveItem].bDown) {
|
||||
hdc = GetDC (hwnd);
|
||||
HEADER_RefreshItem (hwnd, hdc, infoPtr->iMoveItem);
|
||||
HEADER_RefreshItem (hwnd, infoPtr->iMoveItem);
|
||||
ReleaseDC (hwnd, hdc);
|
||||
}
|
||||
|
||||
|
@ -1866,8 +1866,8 @@ HEADER_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
TRACKMOUSEEVENT tme;
|
||||
if (oldHotItem != infoPtr->iHotItem && !infoPtr->bDragging) {
|
||||
hdc = GetDC (hwnd);
|
||||
if (oldHotItem != -1) HEADER_RefreshItem (hwnd, hdc, oldHotItem);
|
||||
if (infoPtr->iHotItem != -1) HEADER_RefreshItem (hwnd, hdc, infoPtr->iHotItem);
|
||||
if (oldHotItem != -1) HEADER_RefreshItem (hwnd, oldHotItem);
|
||||
if (infoPtr->iHotItem != -1) HEADER_RefreshItem (hwnd, infoPtr->iHotItem);
|
||||
ReleaseDC (hwnd, hdc);
|
||||
}
|
||||
tme.cbSize = sizeof( tme );
|
||||
|
@ -1895,7 +1895,7 @@ HEADER_Paint (HWND hwnd, WPARAM wParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_RButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_RButtonUp (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
BOOL bRet;
|
||||
POINT pt;
|
||||
|
@ -1917,7 +1917,7 @@ HEADER_RButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HEADER_SetCursor (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
HEADER_SetCursor (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
|
||||
POINT pt;
|
||||
|
@ -2033,14 +2033,14 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return HEADER_GetUnicodeFormat (hwnd);
|
||||
|
||||
case HDM_HITTEST:
|
||||
return HEADER_HitTest (hwnd, wParam, lParam);
|
||||
return HEADER_HitTest (hwnd, lParam);
|
||||
|
||||
case HDM_INSERTITEMA:
|
||||
case HDM_INSERTITEMW:
|
||||
return HEADER_InsertItemT (hwnd, (INT)wParam, (LPHDITEMW)lParam, msg == HDM_INSERTITEMW);
|
||||
|
||||
case HDM_LAYOUT:
|
||||
return HEADER_Layout (hwnd, wParam, lParam);
|
||||
return HEADER_Layout (hwnd, lParam);
|
||||
|
||||
case HDM_ORDERTOINDEX:
|
||||
return HEADER_OrderToIndex(hwnd, wParam);
|
||||
|
@ -2067,13 +2067,13 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return HEADER_SetUnicodeFormat (hwnd, wParam);
|
||||
|
||||
case WM_CREATE:
|
||||
return HEADER_Create (hwnd, wParam, lParam);
|
||||
return HEADER_Create (hwnd, lParam);
|
||||
|
||||
case WM_DESTROY:
|
||||
return HEADER_Destroy (hwnd, wParam, lParam);
|
||||
return HEADER_Destroy (hwnd);
|
||||
|
||||
case WM_NCDESTROY:
|
||||
return HEADER_NCDestroy (hwnd, wParam, lParam);
|
||||
return HEADER_NCDestroy (hwnd);
|
||||
|
||||
case WM_ERASEBKGND:
|
||||
return 1;
|
||||
|
@ -2085,25 +2085,25 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return HEADER_GetFont (hwnd);
|
||||
|
||||
case WM_LBUTTONDBLCLK:
|
||||
return HEADER_LButtonDblClk (hwnd, wParam, lParam);
|
||||
return HEADER_LButtonDblClk (hwnd, lParam);
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return HEADER_LButtonDown (hwnd, wParam, lParam);
|
||||
return HEADER_LButtonDown (hwnd, lParam);
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return HEADER_LButtonUp (hwnd, wParam, lParam);
|
||||
return HEADER_LButtonUp (hwnd, lParam);
|
||||
|
||||
case WM_MOUSELEAVE:
|
||||
return HEADER_MouseLeave (hwnd, wParam, lParam);
|
||||
return HEADER_MouseLeave (hwnd);
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
return HEADER_MouseMove (hwnd, wParam, lParam);
|
||||
return HEADER_MouseMove (hwnd, lParam);
|
||||
|
||||
case WM_NOTIFYFORMAT:
|
||||
return HEADER_NotifyFormat (hwnd, wParam, lParam);
|
||||
|
||||
case WM_SIZE:
|
||||
return HEADER_Size (hwnd, wParam);
|
||||
return HEADER_Size (hwnd);
|
||||
|
||||
case WM_THEMECHANGED:
|
||||
return HEADER_ThemeChanged (hwnd);
|
||||
|
@ -2113,10 +2113,10 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return HEADER_Paint (hwnd, wParam);
|
||||
|
||||
case WM_RBUTTONUP:
|
||||
return HEADER_RButtonUp (hwnd, wParam, lParam);
|
||||
return HEADER_RButtonUp (hwnd, lParam);
|
||||
|
||||
case WM_SETCURSOR:
|
||||
return HEADER_SetCursor (hwnd, wParam, lParam);
|
||||
return HEADER_SetCursor (hwnd, lParam);
|
||||
|
||||
case WM_SETFONT:
|
||||
return HEADER_SetFont (hwnd, wParam, lParam);
|
||||
|
@ -2125,7 +2125,7 @@ HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return HEADER_SetRedraw(hwnd, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((msg >= WM_USER) && (msg < WM_APP))
|
||||
if ((msg >= WM_USER) && (msg < WM_APP) && !COMCTL32_IsReflectedMessage(msg))
|
||||
ERR("unknown msg %04x wp=%04lx lp=%08lx\n",
|
||||
msg, wParam, lParam );
|
||||
return DefWindowProcW(hwnd, msg, wParam, lParam);
|
||||
|
|
|
@ -342,7 +342,7 @@ HOTKEY_KeyDown (HOTKEY_INFO *infoPtr, DWORD key, DWORD flags)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, DWORD key, DWORD flags)
|
||||
HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, DWORD key)
|
||||
{
|
||||
BYTE bOldMod;
|
||||
|
||||
|
@ -383,7 +383,7 @@ HOTKEY_KeyUp (HOTKEY_INFO *infoPtr, DWORD key, DWORD flags)
|
|||
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_KillFocus (HOTKEY_INFO *infoPtr, HWND receiveFocus)
|
||||
HOTKEY_KillFocus (HOTKEY_INFO *infoPtr)
|
||||
{
|
||||
infoPtr->bFocus = FALSE;
|
||||
DestroyCaret ();
|
||||
|
@ -411,7 +411,7 @@ HOTKEY_NCCreate (HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
dwExStyle | WS_EX_CLIENTEDGE);
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (HOTKEY_INFO *)Alloc (sizeof(HOTKEY_INFO));
|
||||
infoPtr = Alloc (sizeof(HOTKEY_INFO));
|
||||
SetWindowLongPtrW(hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
/* initialize info structure */
|
||||
|
@ -424,7 +424,7 @@ HOTKEY_NCCreate (HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
HOTKEY_SetFocus (HOTKEY_INFO *infoPtr, HWND lostFocus)
|
||||
HOTKEY_SetFocus (HOTKEY_INFO *infoPtr)
|
||||
{
|
||||
infoPtr->bFocus = TRUE;
|
||||
|
||||
|
@ -505,10 +505,10 @@ HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case WM_KEYUP:
|
||||
case WM_SYSKEYUP:
|
||||
return HOTKEY_KeyUp (infoPtr, wParam, lParam);
|
||||
return HOTKEY_KeyUp (infoPtr, wParam);
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
return HOTKEY_KillFocus (infoPtr, (HWND)wParam);
|
||||
return HOTKEY_KillFocus (infoPtr);
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return HOTKEY_LButtonDown (infoPtr);
|
||||
|
@ -522,13 +522,13 @@ HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return 0;
|
||||
|
||||
case WM_SETFOCUS:
|
||||
return HOTKEY_SetFocus (infoPtr, (HWND)wParam);
|
||||
return HOTKEY_SetFocus (infoPtr);
|
||||
|
||||
case WM_SETFONT:
|
||||
return HOTKEY_SetFont (infoPtr, (HFONT)wParam, LOWORD(lParam));
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -598,7 +598,7 @@ ImageList_Create (INT cx, INT cy, UINT flags,
|
|||
|
||||
TRACE("(%d %d 0x%x %d %d)\n", cx, cy, flags, cInitial, cGrow);
|
||||
|
||||
himl = (HIMAGELIST)Alloc (sizeof(struct _IMAGELIST));
|
||||
himl = Alloc (sizeof(struct _IMAGELIST));
|
||||
if (!himl)
|
||||
return NULL;
|
||||
|
||||
|
@ -658,11 +658,11 @@ ImageList_Create (INT cx, INT cy, UINT flags,
|
|||
himl->hbmMask = 0;
|
||||
|
||||
/* create blending brushes */
|
||||
hbmTemp = CreateBitmap (8, 8, 1, 1, &aBitBlend25);
|
||||
hbmTemp = CreateBitmap (8, 8, 1, 1, aBitBlend25);
|
||||
himl->hbrBlend25 = CreatePatternBrush (hbmTemp);
|
||||
DeleteObject (hbmTemp);
|
||||
|
||||
hbmTemp = CreateBitmap (8, 8, 1, 1, &aBitBlend50);
|
||||
hbmTemp = CreateBitmap (8, 8, 1, 1, aBitBlend50);
|
||||
himl->hbrBlend50 = CreatePatternBrush (hbmTemp);
|
||||
DeleteObject (hbmTemp);
|
||||
|
||||
|
@ -1212,7 +1212,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp)
|
|||
/* Create the blend Mask */
|
||||
hOldBitmap = SelectObject(hBlendMaskDC, hBlendMaskBmp);
|
||||
hBlendBrush = fStyle & ILD_BLEND50 ? himl->hbrBlend50 : himl->hbrBlend25;
|
||||
hOldBrush = (HBRUSH) SelectObject(hBlendMaskDC, hBlendBrush);
|
||||
hOldBrush = SelectObject(hBlendMaskDC, hBlendBrush);
|
||||
PatBlt(hBlendMaskDC, 0, 0, cx, cy, PATCOPY);
|
||||
SelectObject(hBlendMaskDC, hOldBrush);
|
||||
|
||||
|
@ -1225,7 +1225,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp)
|
|||
/* now apply blend to the current image given the BlendMask */
|
||||
if (clrBlend == CLR_DEFAULT) clrBlend = GetSysColor (COLOR_HIGHLIGHT);
|
||||
else if (clrBlend == CLR_NONE) clrBlend = GetTextColor (pimldp->hdcDst);
|
||||
hOldBrush = (HBRUSH) SelectObject (hImageDC, CreateSolidBrush(clrBlend));
|
||||
hOldBrush = SelectObject (hImageDC, CreateSolidBrush(clrBlend));
|
||||
BitBlt (hImageDC, 0, 0, cx, cy, hBlendMaskDC, 0, 0, 0xB8074A); /* PSDPxax */
|
||||
DeleteObject(SelectObject(hImageDC, hOldBrush));
|
||||
SelectObject(hBlendMaskDC, hOldBitmap);
|
||||
|
@ -1899,7 +1899,7 @@ static int DIB_GetDIBImageBytes( int width, int height, int depth )
|
|||
|
||||
|
||||
/* helper for ImageList_Read, see comments below */
|
||||
static BOOL _read_bitmap(HIMAGELIST himl, HDC hdcIml, LPSTREAM pstm)
|
||||
static BOOL _read_bitmap(HDC hdcIml, LPSTREAM pstm)
|
||||
{
|
||||
BITMAPFILEHEADER bmfh;
|
||||
int bitsperpixel, palspace;
|
||||
|
@ -1908,13 +1908,13 @@ static BOOL _read_bitmap(HIMAGELIST himl, HDC hdcIml, LPSTREAM pstm)
|
|||
int result = FALSE;
|
||||
LPBYTE bits = NULL;
|
||||
|
||||
if (!SUCCEEDED(IStream_Read ( pstm, &bmfh, sizeof(bmfh), NULL)))
|
||||
if (FAILED(IStream_Read ( pstm, &bmfh, sizeof(bmfh), NULL)))
|
||||
return FALSE;
|
||||
|
||||
if (bmfh.bfType != (('M'<<8)|'B'))
|
||||
return FALSE;
|
||||
|
||||
if (!SUCCEEDED(IStream_Read ( pstm, &bmi->bmiHeader, sizeof(bmi->bmiHeader), NULL)))
|
||||
if (FAILED(IStream_Read ( pstm, &bmi->bmiHeader, sizeof(bmi->bmiHeader), NULL)))
|
||||
return FALSE;
|
||||
|
||||
if ((bmi->bmiHeader.biSize != sizeof(bmi->bmiHeader)))
|
||||
|
@ -1933,13 +1933,13 @@ static BOOL _read_bitmap(HIMAGELIST himl, HDC hdcIml, LPSTREAM pstm)
|
|||
bmi->bmiHeader.biSizeImage = DIB_GetDIBImageBytes(bmi->bmiHeader.biWidth, bmi->bmiHeader.biHeight, bitsperpixel);
|
||||
|
||||
/* read the palette right after the end of the bitmapinfoheader */
|
||||
if (palspace && !SUCCEEDED(IStream_Read(pstm, bmi->bmiColors, palspace, NULL)))
|
||||
if (palspace && FAILED(IStream_Read(pstm, bmi->bmiColors, palspace, NULL)))
|
||||
goto error;
|
||||
|
||||
bits = Alloc(bmi->bmiHeader.biSizeImage);
|
||||
if (!bits)
|
||||
goto error;
|
||||
if (!SUCCEEDED(IStream_Read(pstm, bits, bmi->bmiHeader.biSizeImage, NULL)))
|
||||
if (FAILED(IStream_Read(pstm, bits, bmi->bmiHeader.biSizeImage, NULL)))
|
||||
goto error;
|
||||
|
||||
if (!StretchDIBits(hdcIml, 0, 0, bmi->bmiHeader.biWidth, bmi->bmiHeader.biHeight,
|
||||
|
@ -1992,7 +1992,7 @@ HIMAGELIST WINAPI ImageList_Read (LPSTREAM pstm)
|
|||
|
||||
TRACE("%p\n", pstm);
|
||||
|
||||
if (!SUCCEEDED(IStream_Read (pstm, &ilHead, sizeof(ILHEAD), NULL)))
|
||||
if (FAILED(IStream_Read (pstm, &ilHead, sizeof(ILHEAD), NULL)))
|
||||
return NULL;
|
||||
if (ilHead.usMagic != (('L' << 8) | 'I'))
|
||||
return NULL;
|
||||
|
@ -2006,14 +2006,14 @@ HIMAGELIST WINAPI ImageList_Read (LPSTREAM pstm)
|
|||
if (!himl)
|
||||
return NULL;
|
||||
|
||||
if (!_read_bitmap(himl, himl->hdcImage, pstm))
|
||||
if (!_read_bitmap(himl->hdcImage, pstm))
|
||||
{
|
||||
WARN("failed to read bitmap from stream\n");
|
||||
return NULL;
|
||||
}
|
||||
if (ilHead.flags & ILC_MASK)
|
||||
{
|
||||
if (!_read_bitmap(himl, himl->hdcMask, pstm))
|
||||
if (!_read_bitmap(himl->hdcMask, pstm))
|
||||
{
|
||||
WARN("failed to read mask bitmap from stream\n");
|
||||
return NULL;
|
||||
|
@ -2740,7 +2740,7 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm)
|
|||
inf->bmiColors[1].rgbRed = inf->bmiColors[1].rgbGreen = inf->bmiColors[1].rgbBlue = 0xff;
|
||||
}
|
||||
|
||||
if(!SUCCEEDED(IStream_Write(pstm, data, totalSize, NULL)))
|
||||
if(FAILED(IStream_Write(pstm, data, totalSize, NULL)))
|
||||
goto failed;
|
||||
|
||||
result = TRUE;
|
||||
|
@ -2796,7 +2796,7 @@ ImageList_Write (HIMAGELIST himl, LPSTREAM pstm)
|
|||
TRACE("cx %u, cy %u, flags 0x04%x, cCurImage %u, cMaxImage %u\n",
|
||||
ilHead.cx, ilHead.cy, ilHead.flags, ilHead.cCurImage, ilHead.cMaxImage);
|
||||
|
||||
if(!SUCCEEDED(IStream_Write(pstm, &ilHead, sizeof(ILHEAD), NULL)))
|
||||
if(FAILED(IStream_Write(pstm, &ilHead, sizeof(ILHEAD), NULL)))
|
||||
return FALSE;
|
||||
|
||||
/* write the bitmap */
|
||||
|
|
|
@ -178,7 +178,7 @@ static LRESULT IPADDRESS_Create (HWND hwnd, const CREATESTRUCTA *lpCreate)
|
|||
SetWindowLongW (hwnd, GWL_STYLE,
|
||||
GetWindowLongW(hwnd, GWL_STYLE) & ~WS_BORDER);
|
||||
|
||||
infoPtr = (IPADDRESS_INFO *)Alloc (sizeof(IPADDRESS_INFO));
|
||||
infoPtr = Alloc (sizeof(IPADDRESS_INFO));
|
||||
if (!infoPtr) return -1;
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
@ -193,7 +193,7 @@ static LRESULT IPADDRESS_Create (HWND hwnd, const CREATESTRUCTA *lpCreate)
|
|||
infoPtr->Enabled = TRUE;
|
||||
infoPtr->Notify = lpCreate->hwndParent;
|
||||
|
||||
hSysFont = (HFONT) GetStockObject(ANSI_VAR_FONT);
|
||||
hSysFont = GetStockObject(ANSI_VAR_FONT);
|
||||
GetObjectW(hSysFont, sizeof(LOGFONTW), &logSysFont);
|
||||
SystemParametersInfoW(SPI_GETICONTITLELOGFONT, 0, &logFont, 0);
|
||||
strcpyW(logFont.lfFaceName, logSysFont.lfFaceName);
|
||||
|
@ -454,7 +454,7 @@ static BOOL IPADDRESS_GotoNextField (const IPADDRESS_INFO *infoPtr, int cur, int
|
|||
LRESULT CALLBACK
|
||||
IPADDRESS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HWND Self = (HWND)GetPropW (hwnd, IP_SUBCLASS_PROP);
|
||||
HWND Self = GetPropW (hwnd, IP_SUBCLASS_PROP);
|
||||
IPADDRESS_INFO *infoPtr = (IPADDRESS_INFO *)GetWindowLongPtrW (Self, 0);
|
||||
CHAR c = (CHAR)wParam;
|
||||
INT index, len = 0, startsel, endsel;
|
||||
|
@ -590,7 +590,7 @@ IPADDRESS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return IPADDRESS_IsBlank (infoPtr);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n", uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
|
|
@ -95,10 +95,8 @@
|
|||
* -- LVS_EX_INFOTIP
|
||||
* -- LVS_EX_LABELTIP
|
||||
* -- LVS_EX_MULTIWORKAREAS
|
||||
* -- LVS_EX_ONECLICKACTIVATE
|
||||
* -- LVS_EX_REGIONAL
|
||||
* -- LVS_EX_SIMPLESELECT
|
||||
* -- LVS_EX_TRACKSELECT
|
||||
* -- LVS_EX_TWOCLICKACTIVATE
|
||||
* -- LVS_EX_UNDERLINECOLD
|
||||
* -- LVS_EX_UNDERLINEHOT
|
||||
|
@ -257,6 +255,7 @@ typedef struct tagLISTVIEW_INFO
|
|||
HIMAGELIST himlState;
|
||||
BOOL bLButtonDown;
|
||||
BOOL bRButtonDown;
|
||||
BOOL bDragging;
|
||||
POINT ptClickPos; /* point where the user clicked */
|
||||
BOOL bNoItemMetrics; /* flags if item metrics are not yet computed */
|
||||
INT nItemHeight;
|
||||
|
@ -541,7 +540,7 @@ static inline int lstrncmpiW(LPCWSTR s1, LPCWSTR s2, int n)
|
|||
{
|
||||
int res;
|
||||
|
||||
n = min(min(n, strlenW(s1)), strlenW(s2));
|
||||
n = min(min(n, lstrlenW(s1)), lstrlenW(s2));
|
||||
res = CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE, s1, n, s2, n);
|
||||
return res ? res - sizeof(WCHAR) : res;
|
||||
}
|
||||
|
@ -822,7 +821,7 @@ static BOOL notify_deleteitem(const LISTVIEW_INFO *infoPtr, INT nItem)
|
|||
return IsWindow(hwnd);
|
||||
}
|
||||
|
||||
static int get_ansi_notification(INT unicodeNotificationCode)
|
||||
static int get_ansi_notification(UINT unicodeNotificationCode)
|
||||
{
|
||||
switch (unicodeNotificationCode)
|
||||
{
|
||||
|
@ -846,11 +845,12 @@ static int get_ansi_notification(INT unicodeNotificationCode)
|
|||
pdi : dispinfo structure (can be unicode or ansi)
|
||||
isW : TRUE if dispinfo is Unicode
|
||||
*/
|
||||
static BOOL notify_dispinfoT(const LISTVIEW_INFO *infoPtr, INT notificationCode, LPNMLVDISPINFOW pdi, BOOL isW)
|
||||
static BOOL notify_dispinfoT(const LISTVIEW_INFO *infoPtr, UINT notificationCode, LPNMLVDISPINFOW pdi, BOOL isW)
|
||||
{
|
||||
BOOL bResult = FALSE;
|
||||
BOOL convertToAnsi = FALSE, convertToUnicode = FALSE;
|
||||
INT cchTempBufMax = 0, savCchTextMax = 0, realNotifCode;
|
||||
INT cchTempBufMax = 0, savCchTextMax = 0;
|
||||
UINT realNotifCode;
|
||||
LPWSTR pszTempBuf = NULL, savPszText = NULL;
|
||||
|
||||
if ((pdi->item.mask & LVIF_TEXT) && is_textT(pdi->item.pszText, isW))
|
||||
|
@ -1711,7 +1711,8 @@ static void LISTVIEW_UpdateScroll(const LISTVIEW_INFO *infoPtr)
|
|||
if(vertInfo.nPage < infoPtr->nItemHeight)
|
||||
vertInfo.nPage = infoPtr->nItemHeight;
|
||||
|
||||
vertInfo.nPage /= infoPtr->nItemHeight;
|
||||
if (infoPtr->nItemHeight > 0)
|
||||
vertInfo.nPage /= infoPtr->nItemHeight;
|
||||
}
|
||||
else if (uView != LVS_LIST) /* LVS_ICON, or LVS_SMALLICON */
|
||||
{
|
||||
|
@ -2419,7 +2420,7 @@ static SUBITEM_INFO* LISTVIEW_GetSubItemPtr(HDPA hdpaSubItems, INT nSubItem)
|
|||
/* we should binary search here if need be */
|
||||
for (i = 1; i < DPA_GetPtrCount(hdpaSubItems); i++)
|
||||
{
|
||||
lpSubItem = (SUBITEM_INFO *)DPA_GetPtr(hdpaSubItems, i);
|
||||
lpSubItem = DPA_GetPtr(hdpaSubItems, i);
|
||||
if (lpSubItem->iSubItem == nSubItem)
|
||||
return lpSubItem;
|
||||
}
|
||||
|
@ -2604,12 +2605,12 @@ static void ranges_assert(RANGES ranges, LPCSTR desc, const char *func, int line
|
|||
assert (ranges);
|
||||
assert (DPA_GetPtrCount(ranges->hdpa) >= 0);
|
||||
ranges_dump(ranges);
|
||||
prev = (RANGE *)DPA_GetPtr(ranges->hdpa, 0);
|
||||
prev = DPA_GetPtr(ranges->hdpa, 0);
|
||||
if (DPA_GetPtrCount(ranges->hdpa) > 0)
|
||||
assert (prev->lower >= 0 && prev->lower < prev->upper);
|
||||
for (i = 1; i < DPA_GetPtrCount(ranges->hdpa); i++)
|
||||
{
|
||||
curr = (RANGE *)DPA_GetPtr(ranges->hdpa, i);
|
||||
curr = DPA_GetPtr(ranges->hdpa, i);
|
||||
assert (prev->upper <= curr->lower);
|
||||
assert (curr->lower < curr->upper);
|
||||
prev = curr;
|
||||
|
@ -3267,6 +3268,13 @@ static BOOL LISTVIEW_GetItemAtPt(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVIte
|
|||
return LISTVIEW_GetItemT(infoPtr, lpLVItem, TRUE);
|
||||
}
|
||||
|
||||
static inline BOOL LISTVIEW_isHotTracking(const LISTVIEW_INFO *infoPtr)
|
||||
{
|
||||
return ((infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT) ||
|
||||
(infoPtr->dwLvExStyle & LVS_EX_ONECLICKACTIVATE) ||
|
||||
(infoPtr->dwLvExStyle & LVS_EX_TWOCLICKACTIVATE));
|
||||
}
|
||||
|
||||
/***
|
||||
* DESCRIPTION:
|
||||
* Called when the mouse is being actively tracked and has hovered for a specified
|
||||
|
@ -3287,7 +3295,7 @@ static BOOL LISTVIEW_GetItemAtPt(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVIte
|
|||
*/
|
||||
static LRESULT LISTVIEW_MouseHover(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, INT y)
|
||||
{
|
||||
if (infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT)
|
||||
if (LISTVIEW_isHotTracking(infoPtr))
|
||||
{
|
||||
LVITEMW item;
|
||||
POINT pt;
|
||||
|
@ -3321,27 +3329,47 @@ static LRESULT LISTVIEW_MouseMove(LISTVIEW_INFO *infoPtr, WORD fwKeys, INT x, IN
|
|||
if (!(fwKeys & MK_LBUTTON))
|
||||
infoPtr->bLButtonDown = FALSE;
|
||||
|
||||
if (infoPtr->bLButtonDown && DragDetect(infoPtr->hwndSelf, infoPtr->ptClickPos))
|
||||
if (infoPtr->bLButtonDown)
|
||||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
NMLISTVIEW nmlv;
|
||||
POINT tmp;
|
||||
RECT rect;
|
||||
WORD wDragWidth = GetSystemMetrics(SM_CXDRAG);
|
||||
WORD wDragHeight= GetSystemMetrics(SM_CYDRAG);
|
||||
|
||||
lvHitTestInfo.pt = infoPtr->ptClickPos;
|
||||
LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
|
||||
rect.left = infoPtr->ptClickPos.x - wDragWidth;
|
||||
rect.right = infoPtr->ptClickPos.x + wDragWidth;
|
||||
rect.top = infoPtr->ptClickPos.y - wDragHeight;
|
||||
rect.bottom = infoPtr->ptClickPos.y + wDragHeight;
|
||||
|
||||
ZeroMemory(&nmlv, sizeof(nmlv));
|
||||
nmlv.iItem = lvHitTestInfo.iItem;
|
||||
nmlv.ptAction = infoPtr->ptClickPos;
|
||||
tmp.x = x;
|
||||
tmp.y = y;
|
||||
|
||||
notify_listview(infoPtr, LVN_BEGINDRAG, &nmlv);
|
||||
if (!PtInRect(&rect, tmp))
|
||||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
NMLISTVIEW nmlv;
|
||||
|
||||
return 0;
|
||||
lvHitTestInfo.pt = infoPtr->ptClickPos;
|
||||
LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
|
||||
|
||||
ZeroMemory(&nmlv, sizeof(nmlv));
|
||||
nmlv.iItem = lvHitTestInfo.iItem;
|
||||
nmlv.ptAction = infoPtr->ptClickPos;
|
||||
|
||||
if (!infoPtr->bDragging)
|
||||
{
|
||||
notify_listview(infoPtr, LVN_BEGINDRAG, &nmlv);
|
||||
infoPtr->bDragging = TRUE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
infoPtr->bLButtonDown = FALSE;
|
||||
|
||||
/* see if we are supposed to be tracking mouse hovering */
|
||||
if(infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT) {
|
||||
if (LISTVIEW_isHotTracking(infoPtr)) {
|
||||
/* fill in the trackinfo struct */
|
||||
trackinfo.cbSize = sizeof(TRACKMOUSEEVENT);
|
||||
trackinfo.dwFlags = TME_QUERY;
|
||||
|
@ -3414,8 +3442,8 @@ static BOOL set_main_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL
|
|||
}
|
||||
else
|
||||
{
|
||||
HDPA hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, lpLVItem->iItem);
|
||||
lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0);
|
||||
HDPA hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, lpLVItem->iItem);
|
||||
lpItem = DPA_GetPtr(hdpaSubItems, 0);
|
||||
assert (lpItem);
|
||||
}
|
||||
|
||||
|
@ -3555,7 +3583,7 @@ static BOOL set_sub_item(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem,
|
|||
if (!(lpLVItem->mask & (LVIF_TEXT | LVIF_IMAGE | LVIF_STATE))) return TRUE;
|
||||
|
||||
/* get the subitem structure, and create it if not there */
|
||||
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, lpLVItem->iItem);
|
||||
hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, lpLVItem->iItem);
|
||||
assert (hdpaSubItems);
|
||||
|
||||
lpSubItem = LISTVIEW_GetSubItemPtr(hdpaSubItems, lpLVItem->iSubItem);
|
||||
|
@ -3569,7 +3597,7 @@ static BOOL set_sub_item(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem,
|
|||
/* we could binary search here, if need be...*/
|
||||
for (i = 1; i < DPA_GetPtrCount(hdpaSubItems); i++)
|
||||
{
|
||||
tmpSubItem = (SUBITEM_INFO *)DPA_GetPtr(hdpaSubItems, i);
|
||||
tmpSubItem = DPA_GetPtr(hdpaSubItems, i);
|
||||
if (tmpSubItem->iSubItem > lpLVItem->iSubItem) break;
|
||||
}
|
||||
if (DPA_InsertPtr(hdpaSubItems, i, lpSubItem) == -1)
|
||||
|
@ -4487,10 +4515,10 @@ static BOOL LISTVIEW_DeleteAllItems(LISTVIEW_INFO *infoPtr, BOOL destroy)
|
|||
if (!bSuppress) notify_deleteitem(infoPtr, i);
|
||||
if (!(infoPtr->dwStyle & LVS_OWNERDATA))
|
||||
{
|
||||
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, i);
|
||||
hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, i);
|
||||
for (j = 0; j < DPA_GetPtrCount(hdpaSubItems); j++)
|
||||
{
|
||||
hdrItem = (ITEMHDR *)DPA_GetPtr(hdpaSubItems, j);
|
||||
hdrItem = DPA_GetPtr(hdpaSubItems, j);
|
||||
if (is_textW(hdrItem->pszText)) Free(hdrItem->pszText);
|
||||
Free(hdrItem);
|
||||
}
|
||||
|
@ -4608,12 +4636,12 @@ static BOOL LISTVIEW_DeleteColumn(LISTVIEW_INFO *infoPtr, INT nColumn)
|
|||
|
||||
for (nItem = 0; nItem < infoPtr->nItemCount; nItem++)
|
||||
{
|
||||
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, nItem);
|
||||
hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, nItem);
|
||||
nSubItem = 0;
|
||||
lpDelItem = 0;
|
||||
for (i = 1; i < DPA_GetPtrCount(hdpaSubItems); i++)
|
||||
{
|
||||
lpSubItem = (SUBITEM_INFO *)DPA_GetPtr(hdpaSubItems, i);
|
||||
lpSubItem = DPA_GetPtr(hdpaSubItems, i);
|
||||
if (lpSubItem->iSubItem == nColumn)
|
||||
{
|
||||
nSubItem = i;
|
||||
|
@ -4767,10 +4795,10 @@ static BOOL LISTVIEW_DeleteItem(LISTVIEW_INFO *infoPtr, INT nItem)
|
|||
ITEMHDR *hdrItem;
|
||||
INT i;
|
||||
|
||||
hdpaSubItems = (HDPA)DPA_DeletePtr(infoPtr->hdpaItems, nItem);
|
||||
hdpaSubItems = DPA_DeletePtr(infoPtr->hdpaItems, nItem);
|
||||
for (i = 0; i < DPA_GetPtrCount(hdpaSubItems); i++)
|
||||
{
|
||||
hdrItem = (ITEMHDR *)DPA_GetPtr(hdpaSubItems, i);
|
||||
hdrItem = DPA_GetPtr(hdpaSubItems, i);
|
||||
if (is_textW(hdrItem->pszText)) Free(hdrItem->pszText);
|
||||
Free(hdrItem);
|
||||
}
|
||||
|
@ -4810,15 +4838,30 @@ static BOOL LISTVIEW_EndEditLabelT(LISTVIEW_INFO *infoPtr, LPWSTR pszText, BOOL
|
|||
{
|
||||
HWND hwndSelf = infoPtr->hwndSelf;
|
||||
NMLVDISPINFOW dispInfo;
|
||||
INT editedItem = infoPtr->nEditLabelItem;
|
||||
BOOL bSame;
|
||||
|
||||
TRACE("(pszText=%s, isW=%d)\n", debugtext_t(pszText, isW), isW);
|
||||
|
||||
infoPtr->nEditLabelItem = -1;
|
||||
|
||||
ZeroMemory(&dispInfo, sizeof(dispInfo));
|
||||
dispInfo.item.mask = LVIF_PARAM | LVIF_STATE;
|
||||
dispInfo.item.iItem = infoPtr->nEditLabelItem;
|
||||
dispInfo.item.mask = LVIF_PARAM | LVIF_STATE | LVIF_TEXT;
|
||||
dispInfo.item.iItem = editedItem;
|
||||
dispInfo.item.iSubItem = 0;
|
||||
dispInfo.item.stateMask = ~0;
|
||||
if (!LISTVIEW_GetItemW(infoPtr, &dispInfo.item)) return FALSE;
|
||||
|
||||
if (isW)
|
||||
bSame = (lstrcmpW(dispInfo.item.pszText, pszText) == 0);
|
||||
else
|
||||
{
|
||||
LPWSTR tmp = textdupTtoW(pszText, FALSE);
|
||||
bSame = (lstrcmpW(dispInfo.item.pszText, tmp) == 0);
|
||||
textfreeT(tmp, FALSE);
|
||||
}
|
||||
if (bSame) return TRUE;
|
||||
|
||||
/* add the text from the edit in */
|
||||
dispInfo.item.mask |= LVIF_TEXT;
|
||||
dispInfo.item.pszText = pszText;
|
||||
|
@ -4832,18 +4875,18 @@ static BOOL LISTVIEW_EndEditLabelT(LISTVIEW_INFO *infoPtr, LPWSTR pszText, BOOL
|
|||
|
||||
if (!(infoPtr->dwStyle & LVS_OWNERDATA))
|
||||
{
|
||||
HDPA hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, infoPtr->nEditLabelItem);
|
||||
ITEM_INFO* lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0);
|
||||
HDPA hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, editedItem);
|
||||
ITEM_INFO* lpItem = DPA_GetPtr(hdpaSubItems, 0);
|
||||
if (lpItem && lpItem->hdr.pszText == LPSTR_TEXTCALLBACKW)
|
||||
{
|
||||
LISTVIEW_InvalidateItem(infoPtr, infoPtr->nEditLabelItem);
|
||||
LISTVIEW_InvalidateItem(infoPtr, editedItem);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
ZeroMemory(&dispInfo, sizeof(dispInfo));
|
||||
dispInfo.item.mask = LVIF_TEXT;
|
||||
dispInfo.item.iItem = infoPtr->nEditLabelItem;
|
||||
dispInfo.item.iItem = editedItem;
|
||||
dispInfo.item.iSubItem = 0;
|
||||
dispInfo.item.pszText = pszText;
|
||||
dispInfo.item.cchTextMax = textlenT(pszText, isW);
|
||||
|
@ -5487,8 +5530,8 @@ static BOOL LISTVIEW_GetItemT(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem,
|
|||
}
|
||||
|
||||
/* find the item and subitem structures before we proceed */
|
||||
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, lpLVItem->iItem);
|
||||
lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0);
|
||||
hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, lpLVItem->iItem);
|
||||
lpItem = DPA_GetPtr(hdpaSubItems, 0);
|
||||
assert (lpItem);
|
||||
|
||||
if (isubitem)
|
||||
|
@ -6430,8 +6473,8 @@ static INT LISTVIEW_HitTest(const LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht,
|
|||
*/
|
||||
static INT WINAPI LISTVIEW_InsertCompare( LPVOID first, LPVOID second, LPARAM lParam)
|
||||
{
|
||||
ITEM_INFO* lv_first = (ITEM_INFO*) DPA_GetPtr( (HDPA)first, 0 );
|
||||
ITEM_INFO* lv_second = (ITEM_INFO*) DPA_GetPtr( (HDPA)second, 0 );
|
||||
ITEM_INFO* lv_first = DPA_GetPtr( (HDPA)first, 0 );
|
||||
ITEM_INFO* lv_second = DPA_GetPtr( (HDPA)second, 0 );
|
||||
INT cmpv = textcmpWT(lv_first->hdr.pszText, lv_second->hdr.pszText, TRUE);
|
||||
|
||||
/* if we're sorting descending, negate the return value */
|
||||
|
@ -6830,10 +6873,10 @@ static INT LISTVIEW_InsertColumnT(LISTVIEW_INFO *infoPtr, INT nColumn,
|
|||
|
||||
for (nItem = 0; nItem < infoPtr->nItemCount; nItem++)
|
||||
{
|
||||
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, nItem);
|
||||
hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, nItem);
|
||||
for (i = 1; i < DPA_GetPtrCount(hdpaSubItems); i++)
|
||||
{
|
||||
lpSubItem = (SUBITEM_INFO *)DPA_GetPtr(hdpaSubItems, i);
|
||||
lpSubItem = DPA_GetPtr(hdpaSubItems, i);
|
||||
if (lpSubItem->iSubItem >= nNewColumn)
|
||||
lpSubItem->iSubItem++;
|
||||
}
|
||||
|
@ -7712,8 +7755,8 @@ static BOOL LISTVIEW_SetUnicodeFormat( LISTVIEW_INFO *infoPtr, BOOL fUnicode)
|
|||
static INT WINAPI LISTVIEW_CallBackCompare(LPVOID first, LPVOID second, LPARAM lParam)
|
||||
{
|
||||
LISTVIEW_INFO *infoPtr = (LISTVIEW_INFO *)lParam;
|
||||
ITEM_INFO* lv_first = (ITEM_INFO*) DPA_GetPtr( (HDPA)first, 0 );
|
||||
ITEM_INFO* lv_second = (ITEM_INFO*) DPA_GetPtr( (HDPA)second, 0 );
|
||||
ITEM_INFO* lv_first = DPA_GetPtr( (HDPA)first, 0 );
|
||||
ITEM_INFO* lv_second = DPA_GetPtr( (HDPA)second, 0 );
|
||||
|
||||
/* Forward the call to the client defined callback */
|
||||
return (infoPtr->pfnCompare)( lv_first->lParam , lv_second->lParam, infoPtr->lParamSort );
|
||||
|
@ -7753,8 +7796,8 @@ static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *infoPtr, PFNLVCOMPARE pfnCompare,
|
|||
|
||||
if (infoPtr->nFocusedItem >= 0)
|
||||
{
|
||||
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, infoPtr->nFocusedItem);
|
||||
lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0);
|
||||
hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, infoPtr->nFocusedItem);
|
||||
lpItem = DPA_GetPtr(hdpaSubItems, 0);
|
||||
if (lpItem) lpItem->state |= LVIS_FOCUSED;
|
||||
}
|
||||
/* FIXME: go thorugh selected items and mark them so in lpItem->state */
|
||||
|
@ -7773,8 +7816,8 @@ static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *infoPtr, PFNLVCOMPARE pfnCompare,
|
|||
selectionMarkItem=(infoPtr->nSelectionMark>=0)?DPA_GetPtr(infoPtr->hdpaItems, infoPtr->nSelectionMark):NULL;
|
||||
for (i=0; i < infoPtr->nItemCount; i++)
|
||||
{
|
||||
hdpaSubItems = (HDPA)DPA_GetPtr(infoPtr->hdpaItems, i);
|
||||
lpItem = (ITEM_INFO *)DPA_GetPtr(hdpaSubItems, 0);
|
||||
hdpaSubItems = DPA_GetPtr(infoPtr->hdpaItems, i);
|
||||
lpItem = DPA_GetPtr(hdpaSubItems, 0);
|
||||
|
||||
if (lpItem->state & LVIS_SELECTED)
|
||||
{
|
||||
|
@ -8018,7 +8061,7 @@ static LRESULT LISTVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
if (!infoPtr->hwndHeader) return -1;
|
||||
|
||||
/* set header unicode format */
|
||||
SendMessageW(infoPtr->hwndHeader, HDM_SETUNICODEFORMAT, (WPARAM)TRUE, (LPARAM)NULL);
|
||||
SendMessageW(infoPtr->hwndHeader, HDM_SETUNICODEFORMAT, TRUE, 0);
|
||||
|
||||
/* set header font */
|
||||
SendMessageW(infoPtr->hwndHeader, WM_SETFONT, (WPARAM)infoPtr->hFont, (LPARAM)TRUE);
|
||||
|
@ -8578,7 +8621,6 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, IN
|
|||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
static BOOL bGroupSelect = TRUE;
|
||||
BOOL bReceivedFocus = FALSE;
|
||||
POINT pt = { x, y };
|
||||
INT nItem;
|
||||
|
||||
|
@ -8587,22 +8629,16 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, IN
|
|||
/* send NM_RELEASEDCAPTURE notification */
|
||||
if (!notify(infoPtr, NM_RELEASEDCAPTURE)) return 0;
|
||||
|
||||
if (!infoPtr->bFocus)
|
||||
{
|
||||
bReceivedFocus = TRUE;
|
||||
SetFocus(infoPtr->hwndSelf);
|
||||
}
|
||||
|
||||
/* set left button down flag and record the click position */
|
||||
infoPtr->bLButtonDown = TRUE;
|
||||
infoPtr->ptClickPos = pt;
|
||||
infoPtr->bDragging = FALSE;
|
||||
|
||||
lvHitTestInfo.pt.x = x;
|
||||
lvHitTestInfo.pt.y = y;
|
||||
|
||||
nItem = LISTVIEW_HitTest(infoPtr, &lvHitTestInfo, TRUE, TRUE);
|
||||
TRACE("at %s, nItem=%d\n", wine_dbgstr_point(&pt), nItem);
|
||||
infoPtr->nEditLabelItem = -1;
|
||||
if ((nItem >= 0) && (nItem < infoPtr->nItemCount))
|
||||
{
|
||||
if ((infoPtr->dwLvExStyle & LVS_EX_CHECKBOXES) && (lvHitTestInfo.flags & LVHT_ONITEMSTATEICON))
|
||||
|
@ -8663,6 +8699,9 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, IN
|
|||
LISTVIEW_SetSelection(infoPtr, nItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (infoPtr->dwLvExStyle & LVS_EX_ONECLICKACTIVATE)
|
||||
if(lvHitTestInfo.iItem != -1) notify_itemactivate(infoPtr,&lvHitTestInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -8671,9 +8710,6 @@ static LRESULT LISTVIEW_LButtonDown(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, IN
|
|||
ReleaseCapture();
|
||||
}
|
||||
|
||||
if (bReceivedFocus)
|
||||
infoPtr->nEditLabelItem = -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -8707,6 +8743,12 @@ static LRESULT LISTVIEW_LButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT
|
|||
/* set left button flag */
|
||||
infoPtr->bLButtonDown = FALSE;
|
||||
|
||||
if (infoPtr->bDragging)
|
||||
{
|
||||
infoPtr->bDragging = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* if we clicked on a selected item, edit the label */
|
||||
if(lvHitTestInfo.iItem == infoPtr->nEditLabelItem && (lvHitTestInfo.flags & LVHT_ONITEMLABEL))
|
||||
{
|
||||
|
@ -8721,6 +8763,9 @@ static LRESULT LISTVIEW_LButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT
|
|||
LISTVIEW_DelayedEditItem);
|
||||
}
|
||||
|
||||
if (!infoPtr->bFocus)
|
||||
SetFocus(infoPtr->hwndSelf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -9198,7 +9243,7 @@ static BOOL LISTVIEW_SetCursor(const LISTVIEW_INFO *infoPtr, HWND hwnd, UINT nHi
|
|||
{
|
||||
LVHITTESTINFO lvHitTestInfo;
|
||||
|
||||
if(!(infoPtr->dwLvExStyle & LVS_EX_TRACKSELECT)) return FALSE;
|
||||
if(!(LISTVIEW_isHotTracking(infoPtr))) return FALSE;
|
||||
|
||||
if(!infoPtr->hHotCursor) return FALSE;
|
||||
|
||||
|
@ -9709,9 +9754,8 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
case LVM_GETTOPINDEX:
|
||||
return LISTVIEW_GetTopIndex(infoPtr);
|
||||
|
||||
/*case LVM_GETUNICODEFORMAT:
|
||||
FIXME("LVM_GETUNICODEFORMAT: unimplemented\n");
|
||||
return FALSE;*/
|
||||
case LVM_GETUNICODEFORMAT:
|
||||
return (infoPtr->notifyFormat == NFR_UNICODE);
|
||||
|
||||
/* case LVM_GETVIEW: */
|
||||
|
||||
|
@ -10033,7 +10077,7 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
/* case WM_WININICHANGE: */
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n", uMsg, wParam, lParam);
|
||||
|
||||
fwd_msg:
|
||||
|
|
|
@ -913,7 +913,7 @@ MONTHCAL_SetFirstDayOfWeek(MONTHCAL_INFO *infoPtr, LPARAM lParam)
|
|||
}
|
||||
else if(lParam >= 7)
|
||||
{
|
||||
infoPtr->firstDay = localFirstDay;
|
||||
infoPtr->firstDay = 6; /* max first day allowed */
|
||||
infoPtr->firstDayHighWord = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -994,7 +994,7 @@ MONTHCAL_SetRange(MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
MONTHCAL_GetRange(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
MONTHCAL_GetRange(HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
MONTHCAL_INFO *infoPtr = MONTHCAL_GetInfoPtr(hwnd);
|
||||
SYSTEMTIME *lprgSysTimeArray = (SYSTEMTIME *)lParam;
|
||||
|
@ -1172,7 +1172,6 @@ MONTHCAL_HitTest(const MONTHCAL_INFO *infoPtr, LPARAM lParam)
|
|||
|
||||
x = lpht->pt.x;
|
||||
y = lpht->pt.y;
|
||||
retval = MCHT_NOWHERE;
|
||||
|
||||
ZeroMemory(&lpht->st, sizeof(lpht->st));
|
||||
|
||||
|
@ -1303,6 +1302,11 @@ static void MONTHCAL_GoToNextMonth(MONTHCAL_INFO *infoPtr)
|
|||
nmds.cDayState = infoPtr->monthRange;
|
||||
nmds.prgDayState = Alloc(infoPtr->monthRange * sizeof(MONTHDAYSTATE));
|
||||
|
||||
nmds.stStart = infoPtr->todaysDate;
|
||||
nmds.stStart.wYear = infoPtr->currentYear;
|
||||
nmds.stStart.wMonth = infoPtr->currentMonth;
|
||||
nmds.stStart.wDay = 1;
|
||||
|
||||
SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, nmds.nmhdr.idFrom, (LPARAM)&nmds);
|
||||
for(i=0; i<infoPtr->monthRange; i++)
|
||||
infoPtr->monthdayState[i] = nmds.prgDayState[i];
|
||||
|
@ -1333,6 +1337,11 @@ static void MONTHCAL_GoToPrevMonth(MONTHCAL_INFO *infoPtr)
|
|||
nmds.prgDayState = Alloc
|
||||
(infoPtr->monthRange * sizeof(MONTHDAYSTATE));
|
||||
|
||||
nmds.stStart = infoPtr->todaysDate;
|
||||
nmds.stStart.wYear = infoPtr->currentYear;
|
||||
nmds.stStart.wMonth = infoPtr->currentMonth;
|
||||
nmds.stStart.wDay = 1;
|
||||
|
||||
SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, nmds.nmhdr.idFrom, (LPARAM)&nmds);
|
||||
for(i=0; i<infoPtr->monthRange; i++)
|
||||
infoPtr->monthdayState[i] = nmds.prgDayState[i];
|
||||
|
@ -1383,7 +1392,7 @@ MONTHCAL_LButtonDown(MONTHCAL_INFO *infoPtr, LPARAM lParam)
|
|||
|
||||
if (infoPtr->hWndYearUpDown)
|
||||
{
|
||||
infoPtr->currentYear=SendMessageW( infoPtr->hWndYearUpDown, UDM_SETPOS, (WPARAM) 0,(LPARAM)0);
|
||||
infoPtr->currentYear=SendMessageW(infoPtr->hWndYearUpDown, UDM_SETPOS, 0, 0);
|
||||
if(!DestroyWindow(infoPtr->hWndYearUpDown))
|
||||
{
|
||||
FIXME("Can't destroy Updown Control\n");
|
||||
|
@ -1464,9 +1473,9 @@ MONTHCAL_LButtonDown(MONTHCAL_INFO *infoPtr, LPARAM lParam)
|
|||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
SendMessageW( infoPtr->hWndYearUpDown, UDM_SETRANGE, (WPARAM) 0, MAKELONG (9999, 1753));
|
||||
SendMessageW( infoPtr->hWndYearUpDown, UDM_SETBUDDY, (WPARAM) infoPtr->hWndYearEdit, (LPARAM)0 );
|
||||
SendMessageW( infoPtr->hWndYearUpDown, UDM_SETPOS, (WPARAM) 0,(LPARAM)infoPtr->currentYear );
|
||||
SendMessageW(infoPtr->hWndYearUpDown, UDM_SETRANGE, 0, MAKELONG (9999, 1753));
|
||||
SendMessageW(infoPtr->hWndYearUpDown, UDM_SETBUDDY, (WPARAM) infoPtr->hWndYearEdit, 0);
|
||||
SendMessageW(infoPtr->hWndYearUpDown, UDM_SETPOS, 0, infoPtr->currentYear);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
@ -1498,8 +1507,8 @@ MONTHCAL_LButtonDown(MONTHCAL_INFO *infoPtr, LPARAM lParam)
|
|||
|
||||
MONTHCAL_CopyTime(&ht.st, &selArray[0]);
|
||||
MONTHCAL_CopyTime(&ht.st, &selArray[1]);
|
||||
MONTHCAL_SetSelRange(infoPtr, (LPARAM)&selArray);
|
||||
MONTHCAL_SetCurSel(infoPtr, (LPARAM)&selArray);
|
||||
MONTHCAL_SetSelRange(infoPtr, (LPARAM)selArray);
|
||||
MONTHCAL_SetCurSel(infoPtr, (LPARAM)selArray);
|
||||
TRACE("MCHT_CALENDARDATE\n");
|
||||
nmsc.nmhdr.hwndFrom = infoPtr->hwndSelf;
|
||||
nmsc.nmhdr.idFrom = GetWindowLongPtrW(infoPtr->hwndSelf, GWLP_ID);
|
||||
|
@ -1621,7 +1630,7 @@ MONTHCAL_Timer(MONTHCAL_INFO *infoPtr, WPARAM wParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
MONTHCAL_MouseMove(MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
MONTHCAL_MouseMove(MONTHCAL_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
MCHITTESTINFO ht;
|
||||
int oldselday, selday, hit;
|
||||
|
@ -1647,7 +1656,7 @@ MONTHCAL_MouseMove(MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
SYSTEMTIME selArray[2];
|
||||
int i;
|
||||
|
||||
MONTHCAL_GetSelRange(infoPtr, (LPARAM)&selArray);
|
||||
MONTHCAL_GetSelRange(infoPtr, (LPARAM)selArray);
|
||||
i = 0;
|
||||
if(infoPtr->firstSelDay==selArray[0].wDay) i=1;
|
||||
TRACE("oldRange:%d %d %d %d\n", infoPtr->firstSelDay, selArray[0].wDay, selArray[1].wDay, i);
|
||||
|
@ -1677,7 +1686,7 @@ MONTHCAL_MouseMove(MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
selArray[0].wDay = tempday;
|
||||
}
|
||||
|
||||
MONTHCAL_SetSelRange(infoPtr, (LPARAM)&selArray);
|
||||
MONTHCAL_SetSelRange(infoPtr, (LPARAM)selArray);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1864,6 +1873,8 @@ static LRESULT MONTHCAL_SetFont(MONTHCAL_INFO *infoPtr, HFONT hFont, BOOL redraw
|
|||
lf.lfWeight = FW_BOLD;
|
||||
infoPtr->hBoldFont = CreateFontIndirectW(&lf);
|
||||
|
||||
MONTHCAL_UpdateSize(infoPtr);
|
||||
|
||||
if (redraw)
|
||||
InvalidateRect(infoPtr->hwndSelf, NULL, FALSE);
|
||||
|
||||
|
@ -1875,18 +1886,18 @@ static LRESULT theme_changed (const MONTHCAL_INFO* infoPtr)
|
|||
{
|
||||
HTHEME theme = GetWindowTheme (infoPtr->hwndSelf);
|
||||
CloseThemeData (theme);
|
||||
theme = OpenThemeData (infoPtr->hwndSelf, themeClass);
|
||||
OpenThemeData (infoPtr->hwndSelf, themeClass);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* FIXME: check whether dateMin/dateMax need to be adjusted. */
|
||||
static LRESULT
|
||||
MONTHCAL_Create(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
MONTHCAL_Create(HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
MONTHCAL_INFO *infoPtr;
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr =(MONTHCAL_INFO*)Alloc(sizeof(MONTHCAL_INFO));
|
||||
infoPtr = Alloc(sizeof(MONTHCAL_INFO));
|
||||
SetWindowLongPtrW(hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
if(infoPtr == NULL) {
|
||||
|
@ -2011,7 +2022,7 @@ MONTHCAL_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return MONTHCAL_SetFirstDayOfWeek(infoPtr, lParam);
|
||||
|
||||
case MCM_GETRANGE:
|
||||
return MONTHCAL_GetRange(hwnd, wParam, lParam);
|
||||
return MONTHCAL_GetRange(hwnd, lParam);
|
||||
|
||||
case MCM_SETRANGE:
|
||||
return MONTHCAL_SetRange(infoPtr, wParam, lParam);
|
||||
|
@ -2038,7 +2049,7 @@ MONTHCAL_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return MONTHCAL_LButtonDown(infoPtr, lParam);
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
return MONTHCAL_MouseMove(infoPtr, wParam, lParam);
|
||||
return MONTHCAL_MouseMove(infoPtr, lParam);
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return MONTHCAL_LButtonUp(infoPtr, lParam);
|
||||
|
@ -2054,7 +2065,7 @@ MONTHCAL_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return MONTHCAL_Size(infoPtr, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_CREATE:
|
||||
return MONTHCAL_Create(hwnd, wParam, lParam);
|
||||
return MONTHCAL_Create(hwnd, lParam);
|
||||
|
||||
case WM_SETFONT:
|
||||
return MONTHCAL_SetFont(infoPtr, (HFONT)wParam, (BOOL)lParam);
|
||||
|
@ -2072,7 +2083,7 @@ MONTHCAL_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return MONTHCAL_Destroy(infoPtr);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR( "unknown msg %04x wp=%08lx lp=%08lx\n", uMsg, wParam, lParam);
|
||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
|
|
@ -47,12 +47,12 @@ typedef struct
|
|||
#define NATIVEFONT_GetInfoPtr(hwnd) ((NATIVEFONT_INFO *)GetWindowLongPtrW (hwnd, 0))
|
||||
|
||||
static LRESULT
|
||||
NATIVEFONT_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
NATIVEFONT_Create (HWND hwnd)
|
||||
{
|
||||
NATIVEFONT_INFO *infoPtr;
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (NATIVEFONT_INFO *)Alloc (sizeof(NATIVEFONT_INFO));
|
||||
infoPtr = Alloc (sizeof(NATIVEFONT_INFO));
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
/* initialize info structure */
|
||||
|
@ -85,7 +85,7 @@ NATIVEFONT_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
switch (uMsg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return NATIVEFONT_Create (hwnd, wParam, lParam);
|
||||
return NATIVEFONT_Create (hwnd);
|
||||
|
||||
case WM_DESTROY:
|
||||
return NATIVEFONT_Destroy (infoPtr);
|
||||
|
@ -101,7 +101,7 @@ NATIVEFONT_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -237,7 +237,7 @@ PAGER_DrawButton(HDC hdc, COLORREF clrBk, RECT arrowRect,
|
|||
return;
|
||||
|
||||
hBrush = CreateSolidBrush(clrBk);
|
||||
hOldBrush = (HBRUSH)SelectObject(hdc, hBrush);
|
||||
hOldBrush = SelectObject(hdc, hBrush);
|
||||
|
||||
FillRect(hdc, &rc, hBrush);
|
||||
|
||||
|
@ -801,7 +801,7 @@ PAGER_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
PAGER_INFO *infoPtr;
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (PAGER_INFO *)Alloc (sizeof(PAGER_INFO));
|
||||
infoPtr = Alloc (sizeof(PAGER_INFO));
|
||||
if (!infoPtr) return -1;
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
|
|
@ -567,7 +567,7 @@ static LRESULT WINAPI ProgressWindowProc(HWND hwnd, UINT message,
|
|||
SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
|
||||
|
||||
/* allocate memory for info struct */
|
||||
infoPtr = (PROGRESS_INFO *)Alloc (sizeof(PROGRESS_INFO));
|
||||
infoPtr = Alloc (sizeof(PROGRESS_INFO));
|
||||
if (!infoPtr) return -1;
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
@ -722,7 +722,7 @@ static LRESULT WINAPI ProgressWindowProc(HWND hwnd, UINT message,
|
|||
return infoPtr->Marquee;
|
||||
|
||||
default:
|
||||
if ((message >= WM_USER) && (message < WM_APP))
|
||||
if ((message >= WM_USER) && (message < WM_APP) && !COMCTL32_IsReflectedMessage(message))
|
||||
ERR("unknown msg %04x wp=%04lx lp=%08lx\n", message, wParam, lParam );
|
||||
return DefWindowProcW( hwnd, message, wParam, lParam );
|
||||
}
|
||||
|
|
|
@ -441,7 +441,7 @@ static BOOL PROPSHEET_CollectPageInfo(LPCPROPSHEETPAGEW lppsp,
|
|||
(LPWSTR)RT_DIALOG);
|
||||
HGLOBAL hTemplate = LoadResource(lppsp->hInstance,
|
||||
hResource);
|
||||
pTemplate = (LPDLGTEMPLATEW)LockResource(hTemplate);
|
||||
pTemplate = LockResource(hTemplate);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -450,7 +450,7 @@ static BOOL PROPSHEET_CollectPageInfo(LPCPROPSHEETPAGEW lppsp,
|
|||
(LPSTR)RT_DIALOG);
|
||||
HGLOBAL hTemplate = LoadResource(lppsp->hInstance,
|
||||
hResource);
|
||||
pTemplate = (LPDLGTEMPLATEA)LockResource(hTemplate);
|
||||
pTemplate = LockResource(hTemplate);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1412,7 +1412,7 @@ static BOOL PROPSHEET_CreatePage(HWND hwndParent,
|
|||
if(!hTemplate)
|
||||
return FALSE;
|
||||
|
||||
pTemplate = (LPDLGTEMPLATEW)LockResource(hTemplate);
|
||||
pTemplate = LockResource(hTemplate);
|
||||
/*
|
||||
* Make a copy of the dialog template to make it writable
|
||||
*/
|
||||
|
@ -1434,7 +1434,7 @@ static BOOL PROPSHEET_CreatePage(HWND hwndParent,
|
|||
if(!hTemplate)
|
||||
return FALSE;
|
||||
|
||||
pTemplate = (LPDLGTEMPLATEA)LockResource(hTemplate);
|
||||
pTemplate = LockResource(hTemplate);
|
||||
/*
|
||||
* Make a copy of the dialog template to make it writable
|
||||
*/
|
||||
|
@ -1604,8 +1604,7 @@ static BOOL PROPSHEET_Back(HWND hwndDlg)
|
|||
{
|
||||
PSHNOTIFY psn;
|
||||
HWND hwndPage;
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
LRESULT result;
|
||||
int idx;
|
||||
|
||||
|
@ -1644,8 +1643,7 @@ static BOOL PROPSHEET_Next(HWND hwndDlg)
|
|||
PSHNOTIFY psn;
|
||||
HWND hwndPage;
|
||||
LRESULT msgResult = 0;
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
int idx;
|
||||
|
||||
TRACE("active_page %d\n", psInfo->active_page);
|
||||
|
@ -1684,8 +1682,7 @@ static BOOL PROPSHEET_Finish(HWND hwndDlg)
|
|||
PSHNOTIFY psn;
|
||||
HWND hwndPage;
|
||||
LRESULT msgResult = 0;
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
TRACE("active_page %d\n", psInfo->active_page);
|
||||
if (psInfo->active_page < 0)
|
||||
|
@ -1723,8 +1720,7 @@ static BOOL PROPSHEET_Apply(HWND hwndDlg, LPARAM lParam)
|
|||
int i;
|
||||
HWND hwndPage;
|
||||
PSHNOTIFY psn;
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
TRACE("active_page %d\n", psInfo->active_page);
|
||||
if (psInfo->active_page < 0)
|
||||
|
@ -1787,8 +1783,7 @@ static BOOL PROPSHEET_Apply(HWND hwndDlg, LPARAM lParam)
|
|||
*/
|
||||
static void PROPSHEET_Cancel(HWND hwndDlg, LPARAM lParam)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndPage;
|
||||
PSHNOTIFY psn;
|
||||
int i;
|
||||
|
@ -1831,8 +1826,7 @@ static void PROPSHEET_Cancel(HWND hwndDlg, LPARAM lParam)
|
|||
*/
|
||||
static void PROPSHEET_Help(HWND hwndDlg)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndPage;
|
||||
PSHNOTIFY psn;
|
||||
|
||||
|
@ -1855,8 +1849,7 @@ static void PROPSHEET_Help(HWND hwndDlg)
|
|||
static void PROPSHEET_Changed(HWND hwndDlg, HWND hwndDirtyPage)
|
||||
{
|
||||
int i;
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
TRACE("\n");
|
||||
if (!psInfo) return;
|
||||
|
@ -1888,8 +1881,7 @@ static void PROPSHEET_UnChanged(HWND hwndDlg, HWND hwndCleanPage)
|
|||
int i;
|
||||
BOOL noPageDirty = TRUE;
|
||||
HWND hwndApplyBtn = GetDlgItem(hwndDlg, IDC_APPLY_BUTTON);
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
TRACE("\n");
|
||||
if ( !psInfo ) return;
|
||||
|
@ -1961,8 +1953,7 @@ static void PROPSHEET_PressButton(HWND hwndDlg, int buttonID)
|
|||
*/
|
||||
static BOOL PROPSHEET_CanSetCurSel(HWND hwndDlg)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndPage;
|
||||
PSHNOTIFY psn;
|
||||
BOOL res = FALSE;
|
||||
|
@ -2005,7 +1996,7 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg,
|
|||
HPROPSHEETPAGE hpage
|
||||
)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndHelp = GetDlgItem(hwndDlg, IDHELP);
|
||||
HWND hwndTabControl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
|
||||
|
||||
|
@ -2120,8 +2111,7 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg,
|
|||
static void PROPSHEET_SetCurSelId(HWND hwndDlg, int id)
|
||||
{
|
||||
int idx;
|
||||
PropSheetInfo* psInfo =
|
||||
(PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
idx = PROPSHEET_FindPageByResId(psInfo, id);
|
||||
if (idx < psInfo->nPages )
|
||||
|
@ -2154,8 +2144,8 @@ static void PROPSHEET_SetTitleA(HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText)
|
|||
*/
|
||||
static void PROPSHEET_SetTitleW(HWND hwndDlg, DWORD dwStyle, LPCWSTR lpszText)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
WCHAR szTitle[256];
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
WCHAR szTitle[256];
|
||||
|
||||
TRACE("%s (style %08x)\n", debugstr_w(lpszText), dwStyle);
|
||||
if (HIWORD(lpszText) == 0) {
|
||||
|
@ -2185,7 +2175,7 @@ static void PROPSHEET_SetTitleW(HWND hwndDlg, DWORD dwStyle, LPCWSTR lpszText)
|
|||
*/
|
||||
static void PROPSHEET_SetFinishTextA(HWND hwndDlg, LPCSTR lpszText)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndButton = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
|
||||
|
||||
TRACE("'%s'\n", lpszText);
|
||||
|
@ -2214,7 +2204,7 @@ static void PROPSHEET_SetFinishTextA(HWND hwndDlg, LPCSTR lpszText)
|
|||
*/
|
||||
static void PROPSHEET_SetFinishTextW(HWND hwndDlg, LPCWSTR lpszText)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndButton = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
|
||||
|
||||
TRACE("%s\n", debugstr_w(lpszText));
|
||||
|
@ -2247,7 +2237,7 @@ static LRESULT PROPSHEET_QuerySiblings(HWND hwndDlg,
|
|||
int i = 0;
|
||||
HWND hwndPage;
|
||||
LRESULT msgResult = 0;
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
while ((i < psInfo->nPages) && (msgResult == 0))
|
||||
{
|
||||
|
@ -2267,8 +2257,7 @@ static BOOL PROPSHEET_AddPage(HWND hwndDlg,
|
|||
HPROPSHEETPAGE hpage)
|
||||
{
|
||||
PropPageInfo * ppi;
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndTabControl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
|
||||
TCITEMW item;
|
||||
LPCPROPSHEETPAGEW ppsp = (LPCPROPSHEETPAGEW)hpage;
|
||||
|
@ -2277,9 +2266,7 @@ static BOOL PROPSHEET_AddPage(HWND hwndDlg,
|
|||
/*
|
||||
* Allocate and fill in a new PropPageInfo entry.
|
||||
*/
|
||||
ppi = (PropPageInfo*) ReAlloc(psInfo->proppage,
|
||||
sizeof(PropPageInfo) *
|
||||
(psInfo->nPages + 1));
|
||||
ppi = ReAlloc(psInfo->proppage, sizeof(PropPageInfo) * (psInfo->nPages + 1));
|
||||
if (!ppi)
|
||||
return FALSE;
|
||||
|
||||
|
@ -2331,8 +2318,7 @@ static BOOL PROPSHEET_RemovePage(HWND hwndDlg,
|
|||
int index,
|
||||
HPROPSHEETPAGE hpage)
|
||||
{
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndTabControl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
|
||||
PropPageInfo* oldPages;
|
||||
|
||||
|
@ -2431,28 +2417,6 @@ static BOOL PROPSHEET_RemovePage(HWND hwndDlg,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CALLBACK
|
||||
EnumChildProc(HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
WCHAR szType[20];
|
||||
RealGetWindowClassW(hwnd, szType, 20);
|
||||
|
||||
if (strcmpW(szType, WC_EDITW) == 0)
|
||||
{
|
||||
if (IsWindowEnabled(hwnd) && IsWindowVisible(hwnd))
|
||||
{
|
||||
SetFocus(hwnd);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
EnumChildWindows(hwnd, EnumChildProc, 0);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* PROPSHEET_SetWizButtons
|
||||
*
|
||||
|
@ -2463,8 +2427,7 @@ EnumChildProc(HWND hwnd, LPARAM lParam)
|
|||
*/
|
||||
static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
HWND hwndBack = GetDlgItem(hwndDlg, IDC_BACK_BUTTON);
|
||||
HWND hwndNext = GetDlgItem(hwndDlg, IDC_NEXT_BUTTON);
|
||||
HWND hwndFinish = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
|
||||
|
@ -2475,6 +2438,17 @@ static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags)
|
|||
EnableWindow(hwndNext, FALSE);
|
||||
EnableWindow(hwndFinish, FALSE);
|
||||
|
||||
/* set the default pushbutton to an enabled button */
|
||||
if (((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH))
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0);
|
||||
else if (dwFlags & PSWIZB_NEXT)
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0);
|
||||
else if (dwFlags & PSWIZB_BACK)
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0);
|
||||
else
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDCANCEL, 0);
|
||||
|
||||
|
||||
if (dwFlags & PSWIZB_BACK)
|
||||
EnableWindow(hwndBack, TRUE);
|
||||
|
||||
|
@ -2504,32 +2478,6 @@ static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags)
|
|||
}
|
||||
else if (!(dwFlags & PSWIZB_DISABLEDFINISH))
|
||||
EnableWindow(hwndFinish, TRUE);
|
||||
|
||||
/* set the default pushbutton to an enabled button and give it focus */
|
||||
if (((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH))
|
||||
{
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0);
|
||||
SetFocus(hwndFinish);
|
||||
}
|
||||
else if (dwFlags & PSWIZB_NEXT)
|
||||
{
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0);
|
||||
SetFocus(hwndNext);
|
||||
}
|
||||
else if (dwFlags & PSWIZB_BACK)
|
||||
{
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0);
|
||||
SetFocus(hwndBack);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessageW(hwndDlg, DM_SETDEFID, IDCANCEL, 0);
|
||||
SetFocus(GetDlgItem(hwndDlg, IDCANCEL));
|
||||
}
|
||||
|
||||
/* Now try to find an edit control that deserves focus */
|
||||
EnumChildWindows(PropSheet_GetCurrentPageHwnd(hwndDlg), EnumChildProc, 0);
|
||||
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -2582,8 +2530,7 @@ static void PROPSHEET_SetHeaderSubTitleA(HWND hwndDlg, int iPageIndex, LPCSTR ps
|
|||
static LRESULT PROPSHEET_HwndToIndex(HWND hwndDlg, HWND hPageDlg)
|
||||
{
|
||||
int index;
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
TRACE("(%p, %p)\n", hwndDlg, hPageDlg);
|
||||
|
||||
|
@ -2599,8 +2546,7 @@ static LRESULT PROPSHEET_HwndToIndex(HWND hwndDlg, HWND hPageDlg)
|
|||
*/
|
||||
static LRESULT PROPSHEET_IndexToHwnd(HWND hwndDlg, int iPageIndex)
|
||||
{
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
TRACE("(%p, %d)\n", hwndDlg, iPageIndex);
|
||||
if (iPageIndex<0 || iPageIndex>=psInfo->nPages) {
|
||||
WARN("%d out of range.\n", iPageIndex);
|
||||
|
@ -2615,8 +2561,7 @@ static LRESULT PROPSHEET_IndexToHwnd(HWND hwndDlg, int iPageIndex)
|
|||
static LRESULT PROPSHEET_PageToIndex(HWND hwndDlg, HPROPSHEETPAGE hPage)
|
||||
{
|
||||
int index;
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
TRACE("(%p, %p)\n", hwndDlg, hPage);
|
||||
|
||||
|
@ -2632,8 +2577,7 @@ static LRESULT PROPSHEET_PageToIndex(HWND hwndDlg, HPROPSHEETPAGE hPage)
|
|||
*/
|
||||
static LRESULT PROPSHEET_IndexToPage(HWND hwndDlg, int iPageIndex)
|
||||
{
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
TRACE("(%p, %d)\n", hwndDlg, iPageIndex);
|
||||
if (iPageIndex<0 || iPageIndex>=psInfo->nPages) {
|
||||
WARN("%d out of range.\n", iPageIndex);
|
||||
|
@ -2649,8 +2593,7 @@ static LRESULT PROPSHEET_IdToIndex(HWND hwndDlg, int iPageId)
|
|||
{
|
||||
int index;
|
||||
LPCPROPSHEETPAGEW psp;
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
TRACE("(%p, %d)\n", hwndDlg, iPageId);
|
||||
for (index = 0; index < psInfo->nPages; index++) {
|
||||
psp = (LPCPROPSHEETPAGEW)psInfo->proppage[index].hpage;
|
||||
|
@ -2666,8 +2609,7 @@ static LRESULT PROPSHEET_IdToIndex(HWND hwndDlg, int iPageId)
|
|||
*/
|
||||
static LRESULT PROPSHEET_IndexToId(HWND hwndDlg, int iPageIndex)
|
||||
{
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
LPCPROPSHEETPAGEW psp;
|
||||
TRACE("(%p, %d)\n", hwndDlg, iPageIndex);
|
||||
if (iPageIndex<0 || iPageIndex>=psInfo->nPages) {
|
||||
|
@ -2686,8 +2628,7 @@ static LRESULT PROPSHEET_IndexToId(HWND hwndDlg, int iPageIndex)
|
|||
*/
|
||||
static LRESULT PROPSHEET_GetResult(HWND hwndDlg)
|
||||
{
|
||||
PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
|
||||
return psInfo->result;
|
||||
}
|
||||
|
||||
|
@ -2732,8 +2673,7 @@ static int PROPSHEET_GetPageIndex(HPROPSHEETPAGE hpage, const PropSheetInfo* psI
|
|||
static void PROPSHEET_CleanUp(HWND hwndDlg)
|
||||
{
|
||||
int i;
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) RemovePropW(hwndDlg,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = RemovePropW(hwndDlg, PropSheetInfoStr);
|
||||
|
||||
TRACE("\n");
|
||||
if (!psInfo) return;
|
||||
|
@ -2821,17 +2761,21 @@ static INT do_loop(const PropSheetInfo *psInfo)
|
|||
static INT_PTR PROPSHEET_PropertySheet(PropSheetInfo* psInfo, BOOL unicode)
|
||||
{
|
||||
INT_PTR bRet = 0;
|
||||
HWND parent = NULL;
|
||||
if (psInfo->active_page >= psInfo->nPages) psInfo->active_page = 0;
|
||||
TRACE("startpage: %d of %d pages\n", psInfo->active_page, psInfo->nPages);
|
||||
|
||||
psInfo->unicode = unicode;
|
||||
psInfo->ended = FALSE;
|
||||
|
||||
if(!psInfo->isModeless)
|
||||
{
|
||||
parent = psInfo->ppshheader.hwndParent;
|
||||
if (parent) EnableWindow(parent, FALSE);
|
||||
}
|
||||
bRet = PROPSHEET_CreateDialog(psInfo);
|
||||
if(!psInfo->isModeless)
|
||||
{
|
||||
HWND parent = GetParent(psInfo->hwnd);
|
||||
if (parent) EnableWindow(parent, FALSE);
|
||||
bRet = do_loop(psInfo);
|
||||
if (parent) EnableWindow(parent, TRUE);
|
||||
}
|
||||
|
@ -2853,8 +2797,7 @@ static INT_PTR PROPSHEET_PropertySheet(PropSheetInfo* psInfo, BOOL unicode)
|
|||
*/
|
||||
INT_PTR WINAPI PropertySheetA(LPCPROPSHEETHEADERA lppsh)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GlobalAlloc(GPTR,
|
||||
sizeof(PropSheetInfo));
|
||||
PropSheetInfo* psInfo = GlobalAlloc(GPTR, sizeof(PropSheetInfo));
|
||||
UINT i, n;
|
||||
const BYTE* pByte;
|
||||
|
||||
|
@ -2862,8 +2805,7 @@ INT_PTR WINAPI PropertySheetA(LPCPROPSHEETHEADERA lppsh)
|
|||
|
||||
PROPSHEET_CollectSheetInfoA(lppsh, psInfo);
|
||||
|
||||
psInfo->proppage = (PropPageInfo*) Alloc(sizeof(PropPageInfo) *
|
||||
lppsh->nPages);
|
||||
psInfo->proppage = Alloc(sizeof(PropPageInfo) * lppsh->nPages);
|
||||
pByte = (const BYTE*) psInfo->ppshheader.u3.ppsp;
|
||||
|
||||
for (n = i = 0; i < lppsh->nPages; i++, n++)
|
||||
|
@ -2896,8 +2838,7 @@ INT_PTR WINAPI PropertySheetA(LPCPROPSHEETHEADERA lppsh)
|
|||
*/
|
||||
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GlobalAlloc(GPTR,
|
||||
sizeof(PropSheetInfo));
|
||||
PropSheetInfo* psInfo = GlobalAlloc(GPTR, sizeof(PropSheetInfo));
|
||||
UINT i, n;
|
||||
const BYTE* pByte;
|
||||
|
||||
|
@ -2905,8 +2846,7 @@ INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
|
|||
|
||||
PROPSHEET_CollectSheetInfoW(lppsh, psInfo);
|
||||
|
||||
psInfo->proppage = (PropPageInfo*) Alloc(sizeof(PropPageInfo) *
|
||||
lppsh->nPages);
|
||||
psInfo->proppage = Alloc(sizeof(PropPageInfo) * lppsh->nPages);
|
||||
pByte = (const BYTE*) psInfo->ppshheader.u3.ppsp;
|
||||
|
||||
for (n = i = 0; i < lppsh->nPages; i++, n++)
|
||||
|
@ -3137,7 +3077,7 @@ BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage)
|
|||
*/
|
||||
static BOOL PROPSHEET_IsDialogMessage(HWND hwnd, LPMSG lpMsg)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwnd, PropSheetInfoStr);
|
||||
|
||||
TRACE("\n");
|
||||
if (!psInfo || (hwnd != lpMsg->hwnd && !IsChild(hwnd, lpMsg->hwnd)))
|
||||
|
@ -3203,8 +3143,7 @@ static BOOL PROPSHEET_DoCommand(HWND hwnd, WORD wID)
|
|||
|
||||
if (wID == IDOK)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwnd, PropSheetInfoStr);
|
||||
|
||||
/* don't overwrite ID_PSRESTARTWINDOWS or ID_PSREBOOTSYSTEM */
|
||||
if (psInfo->result == 0)
|
||||
|
@ -3253,7 +3192,7 @@ static BOOL PROPSHEET_DoCommand(HWND hwnd, WORD wID)
|
|||
*/
|
||||
static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam)
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwnd, PropSheetInfoStr);
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc, hdcSrc;
|
||||
BITMAP bm;
|
||||
|
@ -3447,7 +3386,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
case WM_INITDIALOG:
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) lParam;
|
||||
WCHAR* strCaption = (WCHAR*)Alloc(MAX_CAPTION_LENGTH*sizeof(WCHAR));
|
||||
WCHAR* strCaption = Alloc(MAX_CAPTION_LENGTH*sizeof(WCHAR));
|
||||
HWND hwndTabCtrl = GetDlgItem(hwnd, IDC_TABCONTROL);
|
||||
int idx;
|
||||
LOGFONTW logFont;
|
||||
|
@ -3540,8 +3479,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
if (psInfo->useCallback)
|
||||
(*(psInfo->ppshheader.pfnCallback))(hwnd,
|
||||
PSCB_INITIALIZED, (LPARAM)0);
|
||||
(*(psInfo->ppshheader.pfnCallback))(hwnd, PSCB_INITIALIZED, 0);
|
||||
|
||||
idx = psInfo->active_page;
|
||||
psInfo->active_page = -1;
|
||||
|
@ -3574,7 +3512,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
case WM_COMMAND:
|
||||
if (!PROPSHEET_DoCommand(hwnd, LOWORD(wParam)))
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd, PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwnd, PropSheetInfoStr);
|
||||
|
||||
if (!psInfo)
|
||||
return FALSE;
|
||||
|
@ -3614,8 +3552,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case PSM_GETCURRENTPAGEHWND:
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwnd, PropSheetInfoStr);
|
||||
HWND hwndPage = 0;
|
||||
|
||||
if (!psInfo)
|
||||
|
@ -3679,8 +3616,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case PSM_RESTARTWINDOWS:
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwnd, PropSheetInfoStr);
|
||||
|
||||
if (!psInfo)
|
||||
return FALSE;
|
||||
|
@ -3694,8 +3630,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case PSM_REBOOTSYSTEM:
|
||||
{
|
||||
PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd,
|
||||
PropSheetInfoStr);
|
||||
PropSheetInfo* psInfo = GetPropW(hwnd, PropSheetInfoStr);
|
||||
|
||||
if (!psInfo)
|
||||
return FALSE;
|
||||
|
|
|
@ -253,7 +253,7 @@ typedef struct
|
|||
|
||||
#define REBAR_GetInfoPtr(wndPtr) ((REBAR_INFO *)GetWindowLongPtrW (hwnd, 0))
|
||||
|
||||
static LRESULT REBAR_NotifyFormat(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam);
|
||||
static LRESULT REBAR_NotifyFormat(REBAR_INFO *infoPtr, LPARAM lParam);
|
||||
static void REBAR_AutoSize(REBAR_INFO *infoPtr, BOOL needsLayout);
|
||||
|
||||
/* "constant values" retrieved when DLL was initialized */
|
||||
|
@ -484,7 +484,7 @@ REBAR_DrawChevron (HDC hdc, INT left, INT top, INT colorRef)
|
|||
MoveToEx (hdc, x, y, NULL);
|
||||
LineTo (hdc, x+3, y++); x++;
|
||||
MoveToEx (hdc, x, y, NULL);
|
||||
LineTo (hdc, x+1, y++);
|
||||
LineTo (hdc, x+1, y);
|
||||
SelectObject( hdc, hOldPen );
|
||||
DeleteObject( hPen );
|
||||
}
|
||||
|
@ -1643,13 +1643,13 @@ REBAR_ValidateBand (const REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
|
|||
lpBand->cxMinBand += CHEVRON_WIDTH;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
static UINT
|
||||
REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBand)
|
||||
/* Function: This routine copies the supplied values from */
|
||||
/* user input (lprbbi) to the internal band structure. */
|
||||
/* It returns true if something changed and false if not. */
|
||||
/* It returns the mask of what changed. */
|
||||
{
|
||||
BOOL bChanged = FALSE;
|
||||
UINT uChanged = 0x0;
|
||||
|
||||
lpBand->fMask |= lprbbi->fMask;
|
||||
|
||||
|
@ -1657,7 +1657,7 @@ REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBan
|
|||
(lpBand->fStyle != lprbbi->fStyle ) )
|
||||
{
|
||||
lpBand->fStyle = lprbbi->fStyle;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_STYLE;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_COLORS) &&
|
||||
|
@ -1666,14 +1666,14 @@ REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBan
|
|||
{
|
||||
lpBand->clrFore = lprbbi->clrFore;
|
||||
lpBand->clrBack = lprbbi->clrBack;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_COLORS;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_IMAGE) &&
|
||||
( lpBand->iImage != lprbbi->iImage ) )
|
||||
{
|
||||
lpBand->iImage = lprbbi->iImage;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_IMAGE;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_CHILD) &&
|
||||
|
@ -1693,13 +1693,13 @@ REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBan
|
|||
lpBand->hwndChild = 0;
|
||||
lpBand->hwndPrevParent = 0;
|
||||
}
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_CHILD;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_CHILDSIZE) &&
|
||||
( (lpBand->cxMinChild != lprbbi->cxMinChild) ||
|
||||
(lpBand->cyMinChild != lprbbi->cyMinChild ) ||
|
||||
( (lprbbi->cbSize >= sizeof (REBARBANDINFOA)) &&
|
||||
( (lprbbi->cbSize >= sizeof (REBARBANDINFOA) && (lpBand->fStyle & RBBS_VARIABLEHEIGHT)) &&
|
||||
( (lpBand->cyChild != lprbbi->cyChild ) ||
|
||||
(lpBand->cyMaxChild != lprbbi->cyMaxChild ) ||
|
||||
(lpBand->cyIntegral != lprbbi->cyIntegral ) ) ) ||
|
||||
|
@ -1722,28 +1722,28 @@ REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBan
|
|||
lpBand->cyMaxChild = 0x7fffffff;
|
||||
lpBand->cyIntegral = 0;
|
||||
}
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_CHILDSIZE;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_SIZE) &&
|
||||
(lpBand->cx != lprbbi->cx ) )
|
||||
{
|
||||
lpBand->cx = lprbbi->cx;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_SIZE;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_BACKGROUND) &&
|
||||
( lpBand->hbmBack != lprbbi->hbmBack ) )
|
||||
{
|
||||
lpBand->hbmBack = lprbbi->hbmBack;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_BACKGROUND;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_ID) &&
|
||||
(lpBand->wID != lprbbi->wID ) )
|
||||
{
|
||||
lpBand->wID = lprbbi->wID;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_ID;
|
||||
}
|
||||
|
||||
/* check for additional data */
|
||||
|
@ -1752,14 +1752,14 @@ REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBan
|
|||
( lpBand->cxIdeal != lprbbi->cxIdeal ) )
|
||||
{
|
||||
lpBand->cxIdeal = lprbbi->cxIdeal;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_IDEALSIZE;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_LPARAM) &&
|
||||
(lpBand->lParam != lprbbi->lParam ) )
|
||||
{
|
||||
lpBand->lParam = lprbbi->lParam;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_LPARAM;
|
||||
}
|
||||
|
||||
if( (lprbbi->fMask & RBBIM_HEADERSIZE) &&
|
||||
|
@ -1767,15 +1767,15 @@ REBAR_CommonSetupBand(HWND hwnd, const REBARBANDINFOW *lprbbi, REBAR_BAND *lpBan
|
|||
{
|
||||
lpBand->cxHeader = lprbbi->cxHeader;
|
||||
lpBand->fStyle |= RBBS_UNDOC_FIXEDHEADER;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_HEADERSIZE;
|
||||
}
|
||||
}
|
||||
|
||||
return bChanged;
|
||||
return uChanged;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
REBAR_InternalEraseBkGnd (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, const RECT *clip)
|
||||
REBAR_InternalEraseBkGnd (const REBAR_INFO *infoPtr, WPARAM wParam, const RECT *clip)
|
||||
/* Function: This erases the background rectangle by drawing */
|
||||
/* each band with its background color (or the default) and */
|
||||
/* draws each bands right separator if necessary. The row */
|
||||
|
@ -2035,7 +2035,7 @@ REBAR_HandleLRDrag (REBAR_INFO *infoPtr, const POINT *ptsmove)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_DeleteBand (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_DeleteBand (REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
UINT uBand = (UINT)wParam;
|
||||
REBAR_BAND *lpBand;
|
||||
|
@ -2202,7 +2202,7 @@ REBAR_GetBandInfoT(const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_GetBarHeight (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_GetBarHeight (const REBAR_INFO *infoPtr)
|
||||
{
|
||||
INT nHeight;
|
||||
|
||||
|
@ -2215,7 +2215,7 @@ REBAR_GetBarHeight (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_GetBarInfo (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_GetBarInfo (const REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
LPREBARINFO lpInfo = (LPREBARINFO)lParam;
|
||||
|
||||
|
@ -2295,7 +2295,7 @@ REBAR_GetRowCount (const REBAR_INFO *infoPtr)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_GetRowHeight (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_GetRowHeight (const REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
INT iRow = (INT)wParam;
|
||||
int j = 0, ret = 0;
|
||||
|
@ -2351,7 +2351,7 @@ REBAR_GetVersion (const REBAR_INFO *infoPtr)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_HitTest (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_HitTest (const REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
LPRBHITTESTINFO lprbht = (LPRBHITTESTINFO)lParam;
|
||||
|
||||
|
@ -2365,7 +2365,7 @@ REBAR_HitTest (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_IdToIndex (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_IdToIndex (const REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
UINT i;
|
||||
|
||||
|
@ -2422,6 +2422,14 @@ REBAR_InsertBandT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnico
|
|||
lpBand->iImage = -1;
|
||||
|
||||
REBAR_CommonSetupBand(infoPtr->hwndSelf, lprbbi, lpBand);
|
||||
|
||||
/* Make sure the defaults for these are correct */
|
||||
if (lprbbi->cbSize < sizeof (REBARBANDINFOA) || !(lpBand->fStyle & RBBS_VARIABLEHEIGHT)) {
|
||||
lpBand->cyChild = lpBand->cyMinChild;
|
||||
lpBand->cyMaxChild = 0x7fffffff;
|
||||
lpBand->cyIntegral = 0;
|
||||
}
|
||||
|
||||
if ((lprbbi->fMask & RBBIM_TEXT) && (lprbbi->lpText)) {
|
||||
if (bUnicode)
|
||||
Str_SetPtrW(&lpBand->lpText, lprbbi->lpText);
|
||||
|
@ -2499,7 +2507,7 @@ REBAR_MaximizeBand (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_MinimizeBand (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_MinimizeBand (const REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
REBAR_BAND *lpBand;
|
||||
UINT uBand = (UINT) wParam;
|
||||
|
@ -2587,8 +2595,7 @@ REBAR_MoveBand (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
/* allocate new space and copy rest of bands into it */
|
||||
infoPtr->bands =
|
||||
(REBAR_BAND *)Alloc ((infoPtr->uNumBands)*sizeof(REBAR_BAND));
|
||||
infoPtr->bands = Alloc ((infoPtr->uNumBands)*sizeof(REBAR_BAND));
|
||||
|
||||
/* pre insert copy */
|
||||
if (uTo > 0) {
|
||||
|
@ -2635,7 +2642,7 @@ REBAR_SetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnic
|
|||
{
|
||||
LPREBARBANDINFOW lprbbi = (LPREBARBANDINFOW)lParam;
|
||||
REBAR_BAND *lpBand;
|
||||
BOOL bChanged;
|
||||
UINT uChanged;
|
||||
|
||||
if (lprbbi == NULL)
|
||||
return FALSE;
|
||||
|
@ -2650,7 +2657,7 @@ REBAR_SetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnic
|
|||
/* set band information */
|
||||
lpBand = &infoPtr->bands[(UINT)wParam];
|
||||
|
||||
bChanged = REBAR_CommonSetupBand (infoPtr->hwndSelf, lprbbi, lpBand);
|
||||
uChanged = REBAR_CommonSetupBand (infoPtr->hwndSelf, lprbbi, lpBand);
|
||||
if (lprbbi->fMask & RBBIM_TEXT) {
|
||||
LPWSTR wstr = NULL;
|
||||
if (bUnicode)
|
||||
|
@ -2661,7 +2668,7 @@ REBAR_SetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnic
|
|||
if (REBAR_strdifW(wstr, lpBand->lpText)) {
|
||||
Free(lpBand->lpText);
|
||||
lpBand->lpText = wstr;
|
||||
bChanged = TRUE;
|
||||
uChanged |= RBBIM_TEXT;
|
||||
}
|
||||
else
|
||||
Free(wstr);
|
||||
|
@ -2671,7 +2678,7 @@ REBAR_SetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnic
|
|||
|
||||
REBAR_DumpBand (infoPtr);
|
||||
|
||||
if (bChanged && (lprbbi->fMask & (RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_STYLE | RBBIM_IMAGE))) {
|
||||
if (uChanged & (RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_STYLE | RBBIM_IMAGE)) {
|
||||
REBAR_Layout(infoPtr);
|
||||
InvalidateRect(infoPtr->hwndSelf, 0, 1);
|
||||
}
|
||||
|
@ -2681,7 +2688,7 @@ REBAR_SetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnic
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_SetBarInfo (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SetBarInfo (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
LPREBARINFO lpInfo = (LPREBARINFO)lParam;
|
||||
REBAR_BAND *lpBand;
|
||||
|
@ -2722,7 +2729,7 @@ REBAR_SetBarInfo (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_SetBkColor (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SetBkColor (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
COLORREF clrTemp;
|
||||
|
||||
|
@ -2740,7 +2747,7 @@ REBAR_SetBkColor (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_SetParent (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SetParent (REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
HWND hwndTemp = infoPtr->hwndNotify;
|
||||
|
||||
|
@ -2751,7 +2758,7 @@ REBAR_SetParent (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_SetTextColor (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SetTextColor (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
COLORREF clrTemp;
|
||||
|
||||
|
@ -2829,7 +2836,7 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_SizeToRect (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SizeToRect (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
LPRECT lpRect = (LPRECT)lParam;
|
||||
|
||||
|
@ -2844,7 +2851,7 @@ REBAR_SizeToRect (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_Create (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_Create (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
LPCREATESTRUCTW cs = (LPCREATESTRUCTW) lParam;
|
||||
RECT wnrc1, clrc1;
|
||||
|
@ -2870,7 +2877,7 @@ REBAR_Create (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_Destroy (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_Destroy (REBAR_INFO *infoPtr)
|
||||
{
|
||||
REBAR_BAND *lpBand;
|
||||
UINT i;
|
||||
|
@ -2911,18 +2918,18 @@ REBAR_Destroy (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_EraseBkGnd (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_EraseBkGnd (const REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
RECT cliprect;
|
||||
|
||||
if (GetClipBox ( (HDC)wParam, &cliprect))
|
||||
return REBAR_InternalEraseBkGnd (infoPtr, wParam, lParam, &cliprect);
|
||||
return REBAR_InternalEraseBkGnd (infoPtr, wParam, &cliprect);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
REBAR_GetFont (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_GetFont (const REBAR_INFO *infoPtr)
|
||||
{
|
||||
return (LRESULT)infoPtr->hFont;
|
||||
}
|
||||
|
@ -2960,7 +2967,7 @@ REBAR_PushChevron(const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
REBAR_LButtonDown (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_LButtonDown (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
REBAR_BAND *lpBand;
|
||||
UINT htFlags;
|
||||
|
@ -2996,7 +3003,7 @@ REBAR_LButtonDown (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
REBAR_LButtonUp (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_LButtonUp (REBAR_INFO *infoPtr)
|
||||
{
|
||||
if (infoPtr->iGrabbedBand >= 0)
|
||||
{
|
||||
|
@ -3025,7 +3032,7 @@ REBAR_LButtonUp (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
REBAR_MouseLeave (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_MouseLeave (REBAR_INFO *infoPtr)
|
||||
{
|
||||
if (infoPtr->ichevronhotBand >= 0)
|
||||
{
|
||||
|
@ -3043,7 +3050,7 @@ REBAR_MouseLeave (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_MouseMove (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
REBAR_BAND *lpChevronBand;
|
||||
POINT ptMove;
|
||||
|
@ -3133,7 +3140,7 @@ REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static inline LRESULT
|
||||
REBAR_NCCalcSize (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_NCCalcSize (const REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
HTHEME theme;
|
||||
RECT *rect = (RECT *)lParam;
|
||||
|
@ -3155,7 +3162,7 @@ REBAR_NCCalcSize (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_NCCreate (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
LPCREATESTRUCTW cs = (LPCREATESTRUCTW) lParam;
|
||||
REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
|
||||
|
@ -3177,7 +3184,7 @@ REBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (REBAR_INFO *)Alloc (sizeof(REBAR_INFO));
|
||||
infoPtr = Alloc (sizeof(REBAR_INFO));
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
/* initialize info structure - initial values are 0 */
|
||||
|
@ -3198,7 +3205,7 @@ REBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
infoPtr->hFont = GetStockObject (SYSTEM_FONT);
|
||||
|
||||
/* issue WM_NOTIFYFORMAT to get unicode status of parent */
|
||||
REBAR_NotifyFormat(infoPtr, 0, NF_REQUERY);
|
||||
REBAR_NotifyFormat(infoPtr, NF_REQUERY);
|
||||
|
||||
/* Stow away the original style */
|
||||
infoPtr->orgStyle = cs->style;
|
||||
|
@ -3248,7 +3255,7 @@ REBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_NCHitTest (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_NCHitTest (const REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
NMMOUSE nmmouse;
|
||||
POINT clpt;
|
||||
|
@ -3283,7 +3290,7 @@ REBAR_NCHitTest (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_NCPaint (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_NCPaint (const REBAR_INFO *infoPtr)
|
||||
{
|
||||
RECT rcWindow;
|
||||
HDC hdc;
|
||||
|
@ -3320,7 +3327,7 @@ REBAR_NCPaint (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_NotifyFormat (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_NotifyFormat (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
INT i;
|
||||
|
||||
|
@ -3339,7 +3346,7 @@ REBAR_NotifyFormat (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_Paint (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_Paint (const REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
HDC hdc = (HDC)wParam;
|
||||
|
||||
|
@ -3352,7 +3359,7 @@ REBAR_Paint (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
TRACE("painting (%s)\n", wine_dbgstr_rect(&ps.rcPaint));
|
||||
if (ps.fErase) {
|
||||
/* Erase area of paint if requested */
|
||||
REBAR_InternalEraseBkGnd (infoPtr, wParam, lParam, &ps.rcPaint);
|
||||
REBAR_InternalEraseBkGnd (infoPtr, wParam, &ps.rcPaint);
|
||||
}
|
||||
REBAR_Refresh (infoPtr, hdc);
|
||||
EndPaint (infoPtr->hwndSelf, &ps);
|
||||
|
@ -3363,7 +3370,7 @@ REBAR_Paint (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_SetCursor (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SetCursor (const REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
POINT pt;
|
||||
UINT flags;
|
||||
|
@ -3390,7 +3397,7 @@ REBAR_SetCursor (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_SetFont (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SetFont (REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
{
|
||||
REBAR_BAND *lpBand;
|
||||
UINT i;
|
||||
|
@ -3409,7 +3416,7 @@ REBAR_SetFont (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static inline LRESULT
|
||||
REBAR_SetRedraw (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_SetRedraw (REBAR_INFO *infoPtr, WPARAM wParam)
|
||||
/*****************************************************
|
||||
*
|
||||
* Function;
|
||||
|
@ -3462,7 +3469,7 @@ REBAR_Size (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
REBAR_StyleChanged (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
REBAR_StyleChanged (REBAR_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
STYLESTRUCT *ss = (STYLESTRUCT *)lParam;
|
||||
|
||||
|
@ -3519,7 +3526,7 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
/* case RB_BEGINDRAG: */
|
||||
|
||||
case RB_DELETEBAND:
|
||||
return REBAR_DeleteBand (infoPtr, wParam, lParam);
|
||||
return REBAR_DeleteBand (infoPtr, wParam);
|
||||
|
||||
/* case RB_DRAGMOVE: */
|
||||
/* case RB_ENDDRAG: */
|
||||
|
@ -3538,10 +3545,10 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return REBAR_GetBandInfoT(infoPtr, wParam, lParam, TRUE);
|
||||
|
||||
case RB_GETBARHEIGHT:
|
||||
return REBAR_GetBarHeight (infoPtr, wParam, lParam);
|
||||
return REBAR_GetBarHeight (infoPtr);
|
||||
|
||||
case RB_GETBARINFO:
|
||||
return REBAR_GetBarInfo (infoPtr, wParam, lParam);
|
||||
return REBAR_GetBarInfo (infoPtr, lParam);
|
||||
|
||||
case RB_GETBKCOLOR:
|
||||
return REBAR_GetBkColor (infoPtr);
|
||||
|
@ -3559,7 +3566,7 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return REBAR_GetRowCount (infoPtr);
|
||||
|
||||
case RB_GETROWHEIGHT:
|
||||
return REBAR_GetRowHeight (infoPtr, wParam, lParam);
|
||||
return REBAR_GetRowHeight (infoPtr, wParam);
|
||||
|
||||
case RB_GETTEXTCOLOR:
|
||||
return REBAR_GetTextColor (infoPtr);
|
||||
|
@ -3574,10 +3581,10 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return REBAR_GetVersion (infoPtr);
|
||||
|
||||
case RB_HITTEST:
|
||||
return REBAR_HitTest (infoPtr, wParam, lParam);
|
||||
return REBAR_HitTest (infoPtr, lParam);
|
||||
|
||||
case RB_IDTOINDEX:
|
||||
return REBAR_IdToIndex (infoPtr, wParam, lParam);
|
||||
return REBAR_IdToIndex (infoPtr, wParam);
|
||||
|
||||
case RB_INSERTBANDA:
|
||||
return REBAR_InsertBandT(infoPtr, wParam, lParam, FALSE);
|
||||
|
@ -3589,7 +3596,7 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return REBAR_MaximizeBand (infoPtr, wParam, lParam);
|
||||
|
||||
case RB_MINIMIZEBAND:
|
||||
return REBAR_MinimizeBand (infoPtr, wParam, lParam);
|
||||
return REBAR_MinimizeBand (infoPtr, wParam);
|
||||
|
||||
case RB_MOVEBAND:
|
||||
return REBAR_MoveBand (infoPtr, wParam, lParam);
|
||||
|
@ -3604,20 +3611,20 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return REBAR_SetBandInfoT(infoPtr, wParam, lParam, TRUE);
|
||||
|
||||
case RB_SETBARINFO:
|
||||
return REBAR_SetBarInfo (infoPtr, wParam, lParam);
|
||||
return REBAR_SetBarInfo (infoPtr, lParam);
|
||||
|
||||
case RB_SETBKCOLOR:
|
||||
return REBAR_SetBkColor (infoPtr, wParam, lParam);
|
||||
return REBAR_SetBkColor (infoPtr, lParam);
|
||||
|
||||
/* case RB_SETCOLORSCHEME: */
|
||||
/* case RB_SETPALETTE: */
|
||||
/* return REBAR_GetPalette (infoPtr, wParam, lParam); */
|
||||
|
||||
case RB_SETPARENT:
|
||||
return REBAR_SetParent (infoPtr, wParam, lParam);
|
||||
return REBAR_SetParent (infoPtr, wParam);
|
||||
|
||||
case RB_SETTEXTCOLOR:
|
||||
return REBAR_SetTextColor (infoPtr, wParam, lParam);
|
||||
return REBAR_SetTextColor (infoPtr, lParam);
|
||||
|
||||
/* case RB_SETTOOLTIPS: */
|
||||
|
||||
|
@ -3631,7 +3638,7 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return REBAR_ShowBand (infoPtr, wParam, lParam);
|
||||
|
||||
case RB_SIZETORECT:
|
||||
return REBAR_SizeToRect (infoPtr, wParam, lParam);
|
||||
return REBAR_SizeToRect (infoPtr, lParam);
|
||||
|
||||
|
||||
/* Messages passed to parent */
|
||||
|
@ -3644,51 +3651,51 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
/* case WM_CHARTOITEM: supported according to ControlSpy */
|
||||
|
||||
case WM_CREATE:
|
||||
return REBAR_Create (infoPtr, wParam, lParam);
|
||||
return REBAR_Create (infoPtr, lParam);
|
||||
|
||||
case WM_DESTROY:
|
||||
return REBAR_Destroy (infoPtr, wParam, lParam);
|
||||
return REBAR_Destroy (infoPtr);
|
||||
|
||||
case WM_ERASEBKGND:
|
||||
return REBAR_EraseBkGnd (infoPtr, wParam, lParam);
|
||||
return REBAR_EraseBkGnd (infoPtr, wParam);
|
||||
|
||||
case WM_GETFONT:
|
||||
return REBAR_GetFont (infoPtr, wParam, lParam);
|
||||
return REBAR_GetFont (infoPtr);
|
||||
|
||||
/* case WM_LBUTTONDBLCLK: supported according to ControlSpy */
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return REBAR_LButtonDown (infoPtr, wParam, lParam);
|
||||
return REBAR_LButtonDown (infoPtr, lParam);
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return REBAR_LButtonUp (infoPtr, wParam, lParam);
|
||||
return REBAR_LButtonUp (infoPtr);
|
||||
|
||||
/* case WM_MEASUREITEM: supported according to ControlSpy */
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
return REBAR_MouseMove (infoPtr, wParam, lParam);
|
||||
return REBAR_MouseMove (infoPtr, lParam);
|
||||
|
||||
case WM_MOUSELEAVE:
|
||||
return REBAR_MouseLeave (infoPtr, wParam, lParam);
|
||||
return REBAR_MouseLeave (infoPtr);
|
||||
|
||||
case WM_NCCALCSIZE:
|
||||
return REBAR_NCCalcSize (infoPtr, wParam, lParam);
|
||||
return REBAR_NCCalcSize (infoPtr, lParam);
|
||||
|
||||
case WM_NCCREATE:
|
||||
return REBAR_NCCreate (hwnd, wParam, lParam);
|
||||
return REBAR_NCCreate (hwnd, lParam);
|
||||
|
||||
case WM_NCHITTEST:
|
||||
return REBAR_NCHitTest (infoPtr, wParam, lParam);
|
||||
return REBAR_NCHitTest (infoPtr, lParam);
|
||||
|
||||
case WM_NCPAINT:
|
||||
return REBAR_NCPaint (infoPtr, wParam, lParam);
|
||||
return REBAR_NCPaint (infoPtr);
|
||||
|
||||
case WM_NOTIFYFORMAT:
|
||||
return REBAR_NotifyFormat (infoPtr, wParam, lParam);
|
||||
return REBAR_NotifyFormat (infoPtr, lParam);
|
||||
|
||||
case WM_PRINTCLIENT:
|
||||
case WM_PAINT:
|
||||
return REBAR_Paint (infoPtr, wParam, lParam);
|
||||
return REBAR_Paint (infoPtr, wParam);
|
||||
|
||||
/* case WM_PALETTECHANGED: supported according to ControlSpy */
|
||||
/* case WM_QUERYNEWPALETTE:supported according to ControlSpy */
|
||||
|
@ -3696,19 +3703,19 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
/* case WM_RBUTTONUP: supported according to ControlSpy */
|
||||
|
||||
case WM_SETCURSOR:
|
||||
return REBAR_SetCursor (infoPtr, wParam, lParam);
|
||||
return REBAR_SetCursor (infoPtr, lParam);
|
||||
|
||||
case WM_SETFONT:
|
||||
return REBAR_SetFont (infoPtr, wParam, lParam);
|
||||
return REBAR_SetFont (infoPtr, wParam);
|
||||
|
||||
case WM_SETREDRAW:
|
||||
return REBAR_SetRedraw (infoPtr, wParam, lParam);
|
||||
return REBAR_SetRedraw (infoPtr, wParam);
|
||||
|
||||
case WM_SIZE:
|
||||
return REBAR_Size (infoPtr, wParam, lParam);
|
||||
|
||||
case WM_STYLECHANGED:
|
||||
return REBAR_StyleChanged (infoPtr, wParam, lParam);
|
||||
return REBAR_StyleChanged (infoPtr, lParam);
|
||||
|
||||
case WM_THEMECHANGED:
|
||||
return theme_changed (infoPtr);
|
||||
|
@ -3725,7 +3732,7 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return REBAR_WindowPosChanged (infoPtr, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -30,9 +30,9 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
|||
#define WINE_FILEDESCRIPTION_STR "Wine Common Controls"
|
||||
#define WINE_FILENAME_STR "comctl32.dll"
|
||||
#define WINE_FILEVERSION COMCTL32_VERSION, COMCTL32_VERSION_MINOR, 4704, 1100
|
||||
#define WINE_FILEVERSIONSTR "5.81"
|
||||
#define WINE_FILEVERSION_STR "5.81"
|
||||
#define WINE_PRODUCTVERSION WINE_FILEVERSION
|
||||
#define WINE_PRODUCTVERSION_STR WINE_FILEVERSIONSTR
|
||||
#define WINE_PRODUCTVERSION_STR WINE_FILEVERSION_STR
|
||||
|
||||
#include "wine/wine_common_ver.rc"
|
||||
|
||||
|
@ -91,7 +91,6 @@ IDI_TT_ERROR_SM ICON LOADONCALL DISCARDABLE idi_tt_error_sm.ico
|
|||
*/
|
||||
|
||||
#include "comctl_Bg.rc"
|
||||
#include "comctl_Cn.rc"
|
||||
#include "comctl_Cs.rc"
|
||||
#include "comctl_De.rc"
|
||||
#include "comctl_El.rc"
|
||||
|
@ -114,3 +113,4 @@ IDI_TT_ERROR_SM ICON LOADONCALL DISCARDABLE idi_tt_error_sm.ico
|
|||
#include "comctl_Th.rc"
|
||||
#include "comctl_Tr.rc"
|
||||
#include "comctl_Uk.rc"
|
||||
#include "comctl_Zh.rc"
|
||||
|
|
|
@ -72,13 +72,13 @@ typedef struct
|
|||
HWND Notify;
|
||||
WORD numParts;
|
||||
UINT height;
|
||||
UINT minHeight; /* at least MIN_PANE_HEIGHT, can be increased by SB_SETMINHEIGHT */
|
||||
BOOL simple;
|
||||
HWND hwndToolTip;
|
||||
HFONT hFont;
|
||||
HFONT hDefaultFont;
|
||||
COLORREF clrBk; /* background color */
|
||||
BOOL bUnicode; /* unicode flag */
|
||||
BOOL NtfUnicode; /* notify format */
|
||||
BOOL bUnicode; /* notify format. TRUE if notifies in Unicode */
|
||||
STATUSWINDOWPART part0; /* simple window */
|
||||
STATUSWINDOWPART* parts;
|
||||
INT horizontalBorder;
|
||||
|
@ -95,18 +95,52 @@ typedef struct
|
|||
#define HORZ_BORDER 0
|
||||
#define VERT_BORDER 2
|
||||
#define HORZ_GAP 2
|
||||
#define MIN_PANE_HEIGHT 18
|
||||
|
||||
static const WCHAR themeClass[] = { 'S','t','a','t','u','s',0 };
|
||||
|
||||
/* prototype */
|
||||
static void
|
||||
STATUSBAR_SetPartBounds (STATUS_INFO *infoPtr);
|
||||
static LRESULT
|
||||
STATUSBAR_NotifyFormat (STATUS_INFO *infoPtr, HWND from, INT cmd);
|
||||
|
||||
static inline LPCSTR debugstr_t(LPCWSTR text, BOOL isW)
|
||||
{
|
||||
return isW ? debugstr_w(text) : debugstr_a((LPCSTR)text);
|
||||
}
|
||||
|
||||
static UINT
|
||||
STATUSBAR_ComputeHeight(STATUS_INFO *infoPtr)
|
||||
{
|
||||
HTHEME theme;
|
||||
UINT height;
|
||||
TEXTMETRICW tm;
|
||||
int margin;
|
||||
|
||||
COMCTL32_GetFontMetrics(infoPtr->hFont ? infoPtr->hFont : infoPtr->hDefaultFont, &tm);
|
||||
margin = (tm.tmInternalLeading ? tm.tmInternalLeading : 2);
|
||||
height = max(tm.tmHeight + margin + 2*GetSystemMetrics(SM_CYBORDER), infoPtr->minHeight) + infoPtr->verticalBorder;
|
||||
|
||||
if ((theme = GetWindowTheme(infoPtr->Self)))
|
||||
{
|
||||
/* Determine bar height from theme such that the content area is
|
||||
* textHeight pixels large */
|
||||
HDC hdc = GetDC(infoPtr->Self);
|
||||
RECT r;
|
||||
memset (&r, 0, sizeof (r));
|
||||
r.bottom = max(infoPtr->minHeight, tm.tmHeight);
|
||||
if (SUCCEEDED(GetThemeBackgroundExtent(theme, hdc, SP_PANE, 0, &r, &r)))
|
||||
{
|
||||
height = r.bottom - r.top;
|
||||
}
|
||||
ReleaseDC(infoPtr->Self, hdc);
|
||||
}
|
||||
|
||||
TRACE(" textHeight=%d+%d, final height=%d\n", tm.tmHeight, tm.tmInternalLeading, height);
|
||||
return height;
|
||||
}
|
||||
|
||||
static void
|
||||
STATUSBAR_DrawSizeGrip (HTHEME theme, HDC hdc, LPRECT lpRect)
|
||||
{
|
||||
|
@ -218,15 +252,15 @@ static void
|
|||
STATUSBAR_RefreshPart (const STATUS_INFO *infoPtr, HDC hdc, const STATUSWINDOWPART *part, int itemID)
|
||||
{
|
||||
HBRUSH hbrBk;
|
||||
HFONT hOldFont;
|
||||
HTHEME theme;
|
||||
|
||||
TRACE("item %d\n", itemID);
|
||||
if (!IsWindowVisible (infoPtr->Self))
|
||||
return;
|
||||
|
||||
if (part->bound.right < part->bound.left) return;
|
||||
|
||||
if (!RectVisible(hdc, &part->bound))
|
||||
return;
|
||||
|
||||
if ((theme = GetWindowTheme (infoPtr->Self)))
|
||||
{
|
||||
RECT cr;
|
||||
|
@ -244,18 +278,7 @@ STATUSBAR_RefreshPart (const STATUS_INFO *infoPtr, HDC hdc, const STATUSWINDOWPA
|
|||
DeleteObject (hbrBk);
|
||||
}
|
||||
|
||||
hOldFont = SelectObject (hdc, infoPtr->hFont ? infoPtr->hFont : infoPtr->hDefaultFont);
|
||||
|
||||
STATUSBAR_DrawPart (infoPtr, hdc, part, itemID);
|
||||
|
||||
SelectObject (hdc, hOldFont);
|
||||
|
||||
if (GetWindowLongW (infoPtr->Self, GWL_STYLE) & SBARS_SIZEGRIP) {
|
||||
RECT rect;
|
||||
|
||||
GetClientRect (infoPtr->Self, &rect);
|
||||
STATUSBAR_DrawSizeGrip (theme, hdc, &rect);
|
||||
}
|
||||
STATUSBAR_DrawPart (infoPtr, hdc, part, itemID);
|
||||
}
|
||||
|
||||
|
||||
|
@ -626,40 +649,9 @@ STATUSBAR_SetIcon (STATUS_INFO *infoPtr, INT nPart, HICON hIcon)
|
|||
static BOOL
|
||||
STATUSBAR_SetMinHeight (STATUS_INFO *infoPtr, INT height)
|
||||
{
|
||||
|
||||
TRACE("(height=%d)\n", height);
|
||||
if (IsWindowVisible (infoPtr->Self)) {
|
||||
INT width, x, y;
|
||||
RECT parent_rect;
|
||||
HTHEME theme;
|
||||
|
||||
infoPtr->height = height + infoPtr->verticalBorder;
|
||||
|
||||
if ((theme = GetWindowTheme (infoPtr->Self)))
|
||||
{
|
||||
/* Determine bar height from theme such that the content area is
|
||||
* 'height' pixels large */
|
||||
HDC hdc = GetDC (infoPtr->Self);
|
||||
RECT r;
|
||||
memset (&r, 0, sizeof (r));
|
||||
r.bottom = height;
|
||||
if (SUCCEEDED(GetThemeBackgroundExtent (theme, hdc, SP_PANE, 0, &r, &r)))
|
||||
{
|
||||
infoPtr->height = r.bottom - r.top;
|
||||
}
|
||||
ReleaseDC (infoPtr->Self, hdc);
|
||||
}
|
||||
|
||||
if (GetClientRect (infoPtr->Notify, &parent_rect))
|
||||
{
|
||||
width = parent_rect.right - parent_rect.left;
|
||||
x = parent_rect.left;
|
||||
y = parent_rect.bottom - infoPtr->height;
|
||||
MoveWindow (infoPtr->Self, x, y, width, infoPtr->height, TRUE);
|
||||
STATUSBAR_SetPartBounds (infoPtr);
|
||||
}
|
||||
}
|
||||
|
||||
infoPtr->minHeight = max(height, MIN_PANE_HEIGHT);
|
||||
infoPtr->height = STATUSBAR_ComputeHeight(infoPtr);
|
||||
/* like native, don't resize the control */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -912,11 +904,10 @@ STATUSBAR_WMCreate (HWND hwnd, const CREATESTRUCTA *lpCreate)
|
|||
NONCLIENTMETRICSW nclm;
|
||||
DWORD dwStyle;
|
||||
RECT rect;
|
||||
int i, width, len, textHeight = 0;
|
||||
HDC hdc;
|
||||
int len;
|
||||
|
||||
TRACE("\n");
|
||||
infoPtr = (STATUS_INFO*)Alloc (sizeof(STATUS_INFO));
|
||||
infoPtr = Alloc (sizeof(STATUS_INFO));
|
||||
if (!infoPtr) goto create_fail;
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
@ -930,19 +921,17 @@ STATUSBAR_WMCreate (HWND hwnd, const CREATESTRUCTA *lpCreate)
|
|||
infoPtr->horizontalBorder = HORZ_BORDER;
|
||||
infoPtr->verticalBorder = VERT_BORDER;
|
||||
infoPtr->horizontalGap = HORZ_GAP;
|
||||
infoPtr->minHeight = MIN_PANE_HEIGHT;
|
||||
|
||||
i = SendMessageW(infoPtr->Notify, WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY);
|
||||
infoPtr->NtfUnicode = (i == NFR_UNICODE);
|
||||
|
||||
GetClientRect (hwnd, &rect);
|
||||
InvalidateRect (hwnd, &rect, 0);
|
||||
UpdateWindow(hwnd);
|
||||
STATUSBAR_NotifyFormat(infoPtr, infoPtr->Notify, NF_REQUERY);
|
||||
|
||||
ZeroMemory (&nclm, sizeof(nclm));
|
||||
nclm.cbSize = sizeof(nclm);
|
||||
SystemParametersInfoW (SPI_GETNONCLIENTMETRICS, nclm.cbSize, &nclm, 0);
|
||||
infoPtr->hDefaultFont = CreateFontIndirectW (&nclm.lfStatusFont);
|
||||
|
||||
GetClientRect (hwnd, &rect);
|
||||
|
||||
/* initialize simple case */
|
||||
infoPtr->part0.bound = rect;
|
||||
infoPtr->part0.text = 0;
|
||||
|
@ -961,24 +950,11 @@ STATUSBAR_WMCreate (HWND hwnd, const CREATESTRUCTA *lpCreate)
|
|||
|
||||
OpenThemeData (hwnd, themeClass);
|
||||
|
||||
if (IsWindowUnicode (hwnd)) {
|
||||
infoPtr->bUnicode = TRUE;
|
||||
if (lpCreate->lpszName &&
|
||||
(len = strlenW ((LPCWSTR)lpCreate->lpszName))) {
|
||||
infoPtr->parts[0].text = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (!infoPtr->parts[0].text) goto create_fail;
|
||||
strcpyW (infoPtr->parts[0].text, (LPCWSTR)lpCreate->lpszName);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (lpCreate->lpszName &&
|
||||
(len = strlen((LPCSTR)lpCreate->lpszName))) {
|
||||
DWORD lenW = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)lpCreate->lpszName, -1, NULL, 0 );
|
||||
infoPtr->parts[0].text = Alloc (lenW*sizeof(WCHAR));
|
||||
if (!infoPtr->parts[0].text) goto create_fail;
|
||||
MultiByteToWideChar( CP_ACP, 0, (LPCSTR)lpCreate->lpszName, -1,
|
||||
infoPtr->parts[0].text, lenW );
|
||||
}
|
||||
if (lpCreate->lpszName && (len = strlenW ((LPCWSTR)lpCreate->lpszName)))
|
||||
{
|
||||
infoPtr->parts[0].text = Alloc ((len + 1)*sizeof(WCHAR));
|
||||
if (!infoPtr->parts[0].text) goto create_fail;
|
||||
strcpyW (infoPtr->parts[0].text, (LPCWSTR)lpCreate->lpszName);
|
||||
}
|
||||
|
||||
dwStyle = GetWindowLongW (hwnd, GWL_STYLE);
|
||||
|
@ -986,17 +962,7 @@ STATUSBAR_WMCreate (HWND hwnd, const CREATESTRUCTA *lpCreate)
|
|||
dwStyle &= ~WS_BORDER;
|
||||
SetWindowLongW (hwnd, GWL_STYLE, dwStyle);
|
||||
|
||||
if ((hdc = GetDC (hwnd))) {
|
||||
TEXTMETRICW tm;
|
||||
HFONT hOldFont;
|
||||
|
||||
hOldFont = SelectObject (hdc, infoPtr->hDefaultFont);
|
||||
GetTextMetricsW (hdc, &tm);
|
||||
textHeight = tm.tmHeight;
|
||||
SelectObject (hdc, hOldFont);
|
||||
ReleaseDC (hwnd, hdc);
|
||||
}
|
||||
TRACE(" textHeight=%d\n", textHeight);
|
||||
infoPtr->height = STATUSBAR_ComputeHeight(infoPtr);
|
||||
|
||||
if (dwStyle & SBT_TOOLTIPS) {
|
||||
infoPtr->hwndToolTip =
|
||||
|
@ -1017,32 +983,6 @@ STATUSBAR_WMCreate (HWND hwnd, const CREATESTRUCTA *lpCreate)
|
|||
}
|
||||
}
|
||||
|
||||
if (!(dwStyle & CCS_NORESIZE)) { /* don't resize wnd if it doesn't want it ! */
|
||||
HTHEME theme;
|
||||
GetClientRect (infoPtr->Notify, &rect);
|
||||
width = rect.right - rect.left;
|
||||
infoPtr->height = textHeight + 4 + infoPtr->verticalBorder;
|
||||
|
||||
if ((theme = GetWindowTheme (hwnd)))
|
||||
{
|
||||
/* Determine bar height from theme such that the content area is
|
||||
* textHeight pixels large */
|
||||
HDC hdc = GetDC (hwnd);
|
||||
RECT r;
|
||||
memset (&r, 0, sizeof (r));
|
||||
r.bottom = textHeight;
|
||||
if (SUCCEEDED(GetThemeBackgroundExtent (theme, hdc, SP_PANE, 0, &r, &r)))
|
||||
{
|
||||
infoPtr->height = r.bottom - r.top;
|
||||
}
|
||||
ReleaseDC (hwnd, hdc);
|
||||
}
|
||||
|
||||
SetWindowPos(hwnd, 0, lpCreate->x, lpCreate->y - 1,
|
||||
width, infoPtr->height, SWP_NOZORDER);
|
||||
STATUSBAR_SetPartBounds (infoPtr);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
create_fail:
|
||||
|
@ -1062,17 +1002,11 @@ STATUSBAR_WMGetText (const STATUS_INFO *infoPtr, INT size, LPWSTR buf)
|
|||
TRACE("\n");
|
||||
if (!(infoPtr->parts[0].text))
|
||||
return 0;
|
||||
if (infoPtr->bUnicode)
|
||||
len = strlenW (infoPtr->parts[0].text);
|
||||
else
|
||||
len = WideCharToMultiByte( CP_ACP, 0, infoPtr->parts[0].text, -1, NULL, 0, NULL, NULL )-1;
|
||||
|
||||
len = strlenW (infoPtr->parts[0].text);
|
||||
|
||||
if (size > len) {
|
||||
if (infoPtr->bUnicode)
|
||||
strcpyW (buf, infoPtr->parts[0].text);
|
||||
else
|
||||
WideCharToMultiByte( CP_ACP, 0, infoPtr->parts[0].text, -1,
|
||||
(LPSTR)buf, len+1, NULL, NULL );
|
||||
strcpyW (buf, infoPtr->parts[0].text);
|
||||
return len;
|
||||
}
|
||||
|
||||
|
@ -1124,6 +1058,9 @@ STATUSBAR_WMSetFont (STATUS_INFO *infoPtr, HFONT font, BOOL redraw)
|
|||
{
|
||||
infoPtr->hFont = font;
|
||||
TRACE("%p\n", infoPtr->hFont);
|
||||
|
||||
infoPtr->height = STATUSBAR_ComputeHeight(infoPtr);
|
||||
SendMessageW(infoPtr->Self, WM_SIZE, 0, 0); /* update size */
|
||||
if (redraw)
|
||||
InvalidateRect(infoPtr->Self, NULL, FALSE);
|
||||
|
||||
|
@ -1145,20 +1082,11 @@ STATUSBAR_WMSetText (const STATUS_INFO *infoPtr, LPCSTR text)
|
|||
/* duplicate string */
|
||||
Free (part->text);
|
||||
part->text = 0;
|
||||
if (infoPtr->bUnicode) {
|
||||
if (text && (len = strlenW((LPCWSTR)text))) {
|
||||
part->text = Alloc ((len+1)*sizeof(WCHAR));
|
||||
if (!part->text) return FALSE;
|
||||
strcpyW (part->text, (LPCWSTR)text);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (text && (len = lstrlenA(text))) {
|
||||
DWORD lenW = MultiByteToWideChar( CP_ACP, 0, text, -1, NULL, 0 );
|
||||
part->text = Alloc (lenW*sizeof(WCHAR));
|
||||
if (!part->text) return FALSE;
|
||||
MultiByteToWideChar( CP_ACP, 0, text, -1, part->text, lenW );
|
||||
}
|
||||
|
||||
if (text && (len = strlenW((LPCWSTR)text))) {
|
||||
part->text = Alloc ((len+1)*sizeof(WCHAR));
|
||||
if (!part->text) return FALSE;
|
||||
strcpyW (part->text, (LPCWSTR)text);
|
||||
}
|
||||
|
||||
InvalidateRect(infoPtr->Self, &part->bound, FALSE);
|
||||
|
@ -1211,9 +1139,9 @@ STATUSBAR_NotifyFormat (STATUS_INFO *infoPtr, HWND from, INT cmd)
|
|||
{
|
||||
if (cmd == NF_REQUERY) {
|
||||
INT i = SendMessageW(from, WM_NOTIFYFORMAT, (WPARAM)infoPtr->Self, NF_QUERY);
|
||||
infoPtr->NtfUnicode = (i == NFR_UNICODE);
|
||||
infoPtr->bUnicode = (i == NFR_UNICODE);
|
||||
}
|
||||
return infoPtr->NtfUnicode ? NFR_UNICODE : NFR_ANSI;
|
||||
return infoPtr->bUnicode ? NFR_UNICODE : NFR_ANSI;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1378,7 +1306,7 @@ StatusWindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|||
return theme_changed (infoPtr);
|
||||
|
||||
default:
|
||||
if ((msg >= WM_USER) && (msg < WM_APP))
|
||||
if ((msg >= WM_USER) && (msg < WM_APP) && !COMCTL32_IsReflectedMessage(msg))
|
||||
ERR("unknown msg %04x wp=%04lx lp=%08lx\n",
|
||||
msg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, msg, wParam, lParam);
|
||||
|
|
|
@ -136,7 +136,7 @@ static PDOC_ITEM SYSLINK_AppendDocItem (SYSLINK_INFO *infoPtr, LPCWSTR Text, UIN
|
|||
{
|
||||
PDOC_ITEM Item;
|
||||
|
||||
textlen = min(textlen, lstrlenW(Text));
|
||||
textlen = min(textlen, strlenW(Text));
|
||||
Item = Alloc(FIELD_OFFSET(DOC_ITEM, Text[textlen + 1]));
|
||||
if(Item == NULL)
|
||||
{
|
||||
|
@ -286,8 +286,6 @@ CheckParameter:
|
|||
ValidLink = TRUE;
|
||||
taglen++;
|
||||
}
|
||||
else
|
||||
tmp++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1750,7 +1748,7 @@ static LRESULT WINAPI SysLinkWindowProc(HWND hwnd, UINT message,
|
|||
|
||||
default:
|
||||
HandleDefaultMessage:
|
||||
if ((message >= WM_USER) && (message < WM_APP))
|
||||
if ((message >= WM_USER) && (message < WM_APP) && !COMCTL32_IsReflectedMessage(message))
|
||||
{
|
||||
ERR("unknown msg %04x wp=%04lx lp=%08lx\n", message, wParam, lParam );
|
||||
}
|
||||
|
|
|
@ -142,7 +142,6 @@ typedef struct
|
|||
#define BUTTON_SPACINGY 3
|
||||
#define FLAT_BTN_SPACINGX 8
|
||||
#define DEFAULT_MIN_TAB_WIDTH 54
|
||||
#define DEFAULT_TAB_WIDTH_FIXED 96
|
||||
#define DEFAULT_PADDING_X 6
|
||||
#define EXTRA_ICON_PADDING 3
|
||||
|
||||
|
@ -460,7 +459,7 @@ static BOOL TAB_InternalGetItemRect(
|
|||
static inline BOOL
|
||||
TAB_GetItemRect(const TAB_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return TAB_InternalGetItemRect(infoPtr, (INT)wParam, (LPRECT)lParam, (LPRECT)NULL);
|
||||
return TAB_InternalGetItemRect(infoPtr, wParam, (LPRECT)lParam, NULL);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -864,6 +863,8 @@ static LRESULT TAB_AdjustRect(const TAB_INFO *infoPtr, WPARAM fLarger, LPRECT pr
|
|||
TRACE ("hwnd=%p fLarger=%ld (%s)\n", infoPtr->hwnd, fLarger,
|
||||
wine_dbgstr_rect(prc));
|
||||
|
||||
if (!prc) return -1;
|
||||
|
||||
if(lStyle & TCS_VERTICAL)
|
||||
{
|
||||
iRightBottom = &(prc->right);
|
||||
|
@ -2661,7 +2662,10 @@ static inline LRESULT TAB_SetMinTabWidth (TAB_INFO *infoPtr, INT cx)
|
|||
|
||||
TRACE("(%p,%d)\n", infoPtr, cx);
|
||||
|
||||
oldcx = infoPtr->tabMinWidth;
|
||||
if (infoPtr->tabMinWidth < 0)
|
||||
oldcx = DEFAULT_MIN_TAB_WIDTH;
|
||||
else
|
||||
oldcx = infoPtr->tabMinWidth;
|
||||
infoPtr->tabMinWidth = cx;
|
||||
TAB_SetItemBounds(infoPtr);
|
||||
return oldcx;
|
||||
|
@ -2940,7 +2944,7 @@ static LRESULT TAB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
HFONT hOldFont;
|
||||
DWORD dwStyle;
|
||||
|
||||
infoPtr = (TAB_INFO *)Alloc (sizeof(TAB_INFO));
|
||||
infoPtr = Alloc (sizeof(TAB_INFO));
|
||||
|
||||
SetWindowLongPtrW(hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
@ -3019,7 +3023,7 @@ static LRESULT TAB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
/* Initialize the width of a tab. */
|
||||
if (dwStyle & TCS_FIXEDWIDTH)
|
||||
infoPtr->tabWidth = DEFAULT_TAB_WIDTH_FIXED;
|
||||
infoPtr->tabWidth = GetDeviceCaps(hdc, LOGPIXELSX);
|
||||
|
||||
infoPtr->tabMinWidth = -1;
|
||||
|
||||
|
@ -3269,7 +3273,7 @@ TAB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TAB_NCCalcSize(hwnd, wParam, lParam);
|
||||
|
||||
default:
|
||||
if (uMsg >= WM_USER && uMsg < WM_APP)
|
||||
if (uMsg >= WM_USER && uMsg < WM_APP && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
WARN("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
break;
|
||||
|
|
|
@ -34,6 +34,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(theming);
|
|||
typedef LRESULT (CALLBACK* THEMING_SUBCLASSPROC)(HWND, UINT, WPARAM, LPARAM,
|
||||
ULONG_PTR);
|
||||
|
||||
extern LRESULT CALLBACK THEMING_ButtonSubclassProc (HWND, UINT, WPARAM, LPARAM,
|
||||
ULONG_PTR);
|
||||
extern LRESULT CALLBACK THEMING_ComboSubclassProc (HWND, UINT, WPARAM, LPARAM,
|
||||
ULONG_PTR);
|
||||
extern LRESULT CALLBACK THEMING_DialogSubclassProc (HWND, UINT, WPARAM, LPARAM,
|
||||
|
@ -53,6 +55,7 @@ static const struct ThemingSubclass
|
|||
} subclasses[] = {
|
||||
/* Note: list must be sorted by class name */
|
||||
{dialogClass, THEMING_DialogSubclassProc},
|
||||
{WC_BUTTONW, THEMING_ButtonSubclassProc},
|
||||
{WC_COMBOBOXW, THEMING_ComboSubclassProc},
|
||||
{comboLboxClass, THEMING_ListBoxSubclassProc},
|
||||
{WC_EDITW, THEMING_EditSubclassProc},
|
||||
|
@ -91,13 +94,15 @@ MAKE_SUBCLASS_PROC(1)
|
|||
MAKE_SUBCLASS_PROC(2)
|
||||
MAKE_SUBCLASS_PROC(3)
|
||||
MAKE_SUBCLASS_PROC(4)
|
||||
MAKE_SUBCLASS_PROC(5)
|
||||
|
||||
static const WNDPROC subclassProcs[NUM_SUBCLASSES] = {
|
||||
subclass_proc0,
|
||||
subclass_proc1,
|
||||
subclass_proc2,
|
||||
subclass_proc3,
|
||||
subclass_proc4
|
||||
subclass_proc4,
|
||||
subclass_proc5
|
||||
};
|
||||
|
||||
/***********************************************************************
|
||||
|
@ -108,7 +113,7 @@ static const WNDPROC subclassProcs[NUM_SUBCLASSES] = {
|
|||
*/
|
||||
void THEMING_Initialize (void)
|
||||
{
|
||||
int i;
|
||||
unsigned int i;
|
||||
static const WCHAR subclassPropName[] =
|
||||
{ 'C','C','3','2','T','h','e','m','i','n','g','S','u','b','C','l',0 };
|
||||
static const WCHAR refDataPropName[] =
|
||||
|
@ -156,7 +161,7 @@ void THEMING_Initialize (void)
|
|||
*/
|
||||
void THEMING_Uninitialize (void)
|
||||
{
|
||||
int i;
|
||||
unsigned int i;
|
||||
|
||||
if (!atSubclassProp) return; /* not initialized */
|
||||
|
||||
|
|
|
@ -495,7 +495,7 @@ TOOLBAR_DrawFlatSeparator (const RECT *lpRect, HDC hdc, const TOOLBAR_INFO *info
|
|||
* FIXME: It is possible that the height of each line is really SM_CYBORDER.
|
||||
*/
|
||||
static void
|
||||
TOOLBAR_DrawDDFlatSeparator (const RECT *lpRect, HDC hdc, const TBUTTON_INFO *btnPtr,
|
||||
TOOLBAR_DrawDDFlatSeparator (const RECT *lpRect, HDC hdc,
|
||||
const TOOLBAR_INFO *infoPtr)
|
||||
{
|
||||
RECT myrect;
|
||||
|
@ -542,7 +542,7 @@ TOOLBAR_DrawArrow (HDC hdc, INT left, INT top, COLORREF clr)
|
|||
MoveToEx (hdc, x, y, NULL);
|
||||
LineTo (hdc, x+3, y++); x++;
|
||||
MoveToEx (hdc, x, y, NULL);
|
||||
LineTo (hdc, x+1, y++);
|
||||
LineTo (hdc, x+1, y);
|
||||
SelectObject( hdc, hOldPen );
|
||||
DeleteObject( hPen );
|
||||
}
|
||||
|
@ -848,7 +848,7 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc, DWORD dwBaseCustDr
|
|||
/* when drawing the vertical bar... */
|
||||
if ((dwStyle & TBSTYLE_FLAT) /* && (btnPtr->iBitmap == 0) */) {
|
||||
if (btnPtr->fsStyle & BTNS_DROPDOWN)
|
||||
TOOLBAR_DrawDDFlatSeparator (&rc, hdc, btnPtr, infoPtr);
|
||||
TOOLBAR_DrawDDFlatSeparator (&rc, hdc, infoPtr);
|
||||
else
|
||||
TOOLBAR_DrawFlatSeparator (&rc, hdc, infoPtr);
|
||||
}
|
||||
|
@ -912,8 +912,7 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc, DWORD dwBaseCustDr
|
|||
rcText.right -= GetSystemMetrics(SM_CXEDGE);
|
||||
if (dwStyle & TBSTYLE_LIST)
|
||||
{
|
||||
if (TOOLBAR_IsValidBitmapIndex(infoPtr,btnPtr->iBitmap))
|
||||
rcText.left += infoPtr->nBitmapWidth + infoPtr->iListGap + 2;
|
||||
rcText.left += infoPtr->nBitmapWidth + infoPtr->iListGap + 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1152,7 +1151,7 @@ TOOLBAR_Refresh (HWND hwnd, HDC hdc, const PAINTSTRUCT *ps)
|
|||
tbcd.nmcd.dwDrawStage = CDDS_POSTPAINT;
|
||||
tbcd.nmcd.hdc = hdc;
|
||||
tbcd.nmcd.rc = ps->rcPaint;
|
||||
ntfret = TOOLBAR_SendNotify(&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
TOOLBAR_SendNotify(&tbcd.nmcd.hdr, infoPtr, NM_CUSTOMDRAW);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1330,7 +1329,7 @@ TOOLBAR_WrapToolbar( HWND hwnd, DWORD dwStyle )
|
|||
cx = (btnPtr[i].iBitmap > 0) ?
|
||||
btnPtr[i].iBitmap : SEPARATOR_WIDTH;
|
||||
else
|
||||
cx = infoPtr->nButtonWidth;
|
||||
cx = (btnPtr[i].cx) ? btnPtr[i].cx : infoPtr->nButtonWidth;
|
||||
|
||||
/* Two or more adjacent separators form a separator group. */
|
||||
/* The first separator in a group should be wrapped to the */
|
||||
|
@ -1427,7 +1426,6 @@ TOOLBAR_WrapToolbar( HWND hwnd, DWORD dwStyle )
|
|||
TRACE("wrap point 5 btn %d style %02x, x=%d, cx=%d\n",
|
||||
i, btnPtr[i].fsStyle, x, cx);
|
||||
btnPtr[i].fsState |= TBSTATE_WRAP;
|
||||
bFound = TRUE;
|
||||
x = infoPtr->nIndent;
|
||||
if (btnPtr[i].fsStyle & BTNS_SEP )
|
||||
bButtonWrap = FALSE;
|
||||
|
@ -1574,15 +1572,11 @@ static inline SIZE TOOLBAR_MeasureButton(const TOOLBAR_INFO *infoPtr, SIZE sizeS
|
|||
sizeButton.cy += infoPtr->szPadding.cy;
|
||||
|
||||
/* calculate button width */
|
||||
if (bHasBitmap)
|
||||
{
|
||||
sizeButton.cx = 2*GetSystemMetrics(SM_CXEDGE) +
|
||||
infoPtr->nBitmapWidth + infoPtr->iListGap;
|
||||
if (sizeString.cx > 0)
|
||||
sizeButton.cx += sizeString.cx + infoPtr->szPadding.cx;
|
||||
}
|
||||
else
|
||||
sizeButton.cx = sizeString.cx + infoPtr->szPadding.cx;
|
||||
sizeButton.cx = 2*GetSystemMetrics(SM_CXEDGE) +
|
||||
infoPtr->nBitmapWidth + infoPtr->iListGap;
|
||||
if (sizeString.cx > 0)
|
||||
sizeButton.cx += sizeString.cx + infoPtr->szPadding.cx;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1598,8 +1592,8 @@ static inline SIZE TOOLBAR_MeasureButton(const TOOLBAR_INFO *infoPtr, SIZE sizeS
|
|||
{
|
||||
sizeButton.cy = sizeString.cy + infoPtr->szPadding.cy +
|
||||
NONLIST_NOTEXT_OFFSET;
|
||||
sizeButton.cx = 2*GetSystemMetrics(SM_CXEDGE) +
|
||||
infoPtr->szPadding.cx + sizeString.cx;
|
||||
sizeButton.cx = infoPtr->szPadding.cx +
|
||||
max(2*GetSystemMetrics(SM_CXEDGE) + sizeString.cx, infoPtr->nBitmapWidth);
|
||||
}
|
||||
}
|
||||
return sizeButton;
|
||||
|
@ -2085,7 +2079,7 @@ static void TOOLBAR_Cust_AddButton(const CUSTDLG_INFO *custInfo, HWND hwnd, INT
|
|||
PCUSTOMBUTTON btnNew;
|
||||
|
||||
/* duplicate 'separator' button */
|
||||
btnNew = (PCUSTOMBUTTON)Alloc(sizeof(CUSTOMBUTTON));
|
||||
btnNew = Alloc(sizeof(CUSTOMBUTTON));
|
||||
*btnNew = *btnInfo;
|
||||
btnInfo = btnNew;
|
||||
}
|
||||
|
@ -2308,7 +2302,7 @@ TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
/* add items to 'toolbar buttons' list and check if removable */
|
||||
for (i = 0; i < custInfo->tbInfo->nNumButtons; i++)
|
||||
{
|
||||
btnInfo = (PCUSTOMBUTTON)Alloc(sizeof(CUSTOMBUTTON));
|
||||
btnInfo = Alloc(sizeof(CUSTOMBUTTON));
|
||||
memset (&btnInfo->btn, 0, sizeof(TBBUTTON));
|
||||
btnInfo->btn.fsStyle = BTNS_SEP;
|
||||
btnInfo->bVirtual = FALSE;
|
||||
|
@ -2324,7 +2318,7 @@ TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
SendDlgItemMessageW (hwnd, IDC_TOOLBARBTN_LBOX, LB_SETITEMHEIGHT, 0, infoPtr->nBitmapHeight + 8);
|
||||
|
||||
/* insert separator button into 'available buttons' list */
|
||||
btnInfo = (PCUSTOMBUTTON)Alloc(sizeof(CUSTOMBUTTON));
|
||||
btnInfo = Alloc(sizeof(CUSTOMBUTTON));
|
||||
memset (&btnInfo->btn, 0, sizeof(TBBUTTON));
|
||||
btnInfo->btn.fsStyle = BTNS_SEP;
|
||||
btnInfo->bVirtual = FALSE;
|
||||
|
@ -2359,7 +2353,7 @@ TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
index = TOOLBAR_GetButtonIndex (custInfo->tbInfo, nmtb.tbButton.idCommand, FALSE);
|
||||
if (index == -1)
|
||||
{
|
||||
btnInfo = (PCUSTOMBUTTON)Alloc(sizeof(CUSTOMBUTTON));
|
||||
btnInfo = Alloc(sizeof(CUSTOMBUTTON));
|
||||
btnInfo->bVirtual = FALSE;
|
||||
btnInfo->bRemovable = TRUE;
|
||||
}
|
||||
|
@ -2392,7 +2386,7 @@ TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
SendDlgItemMessageW (hwnd, IDC_AVAILBTN_LBOX, LB_SETCURSEL, 0, 0);
|
||||
|
||||
/* append 'virtual' separator button to the 'toolbar buttons' list */
|
||||
btnInfo = (PCUSTOMBUTTON)Alloc(sizeof(CUSTOMBUTTON));
|
||||
btnInfo = Alloc(sizeof(CUSTOMBUTTON));
|
||||
memset (&btnInfo->btn, 0, sizeof(TBBUTTON));
|
||||
btnInfo->btn.fsStyle = BTNS_SEP;
|
||||
btnInfo->bVirtual = TRUE;
|
||||
|
@ -2665,7 +2659,7 @@ TOOLBAR_AddBitmapToImageList(TOOLBAR_INFO *infoPtr, HIMAGELIST himlDef, const TB
|
|||
TRACE("adding hInst=%p nID=%d nButtons=%d\n", bitmap->hInst, bitmap->nID, bitmap->nButtons);
|
||||
/* Add bitmaps to the default image list */
|
||||
if (bitmap->hInst == NULL) /* a handle was passed */
|
||||
hbmLoad = (HBITMAP)CopyImage(ULongToHandle(bitmap->nID), IMAGE_BITMAP, 0, 0, 0);
|
||||
hbmLoad = CopyImage(ULongToHandle(bitmap->nID), IMAGE_BITMAP, 0, 0, 0);
|
||||
else
|
||||
hbmLoad = CreateMappedBitmap(bitmap->hInst, bitmap->nID, 0, NULL, 0);
|
||||
|
||||
|
@ -3066,7 +3060,7 @@ TOOLBAR_AutoSize (HWND hwnd)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_ButtonCount (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_ButtonCount (HWND hwnd)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -3075,7 +3069,7 @@ TOOLBAR_ButtonCount (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_ButtonStructSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_ButtonStructSize (HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -3157,7 +3151,7 @@ TOOLBAR_CheckButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_CommandToIndex (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_CommandToIndex (HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -3203,7 +3197,7 @@ TOOLBAR_Customize (HWND hwnd)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_DeleteButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_DeleteButton (HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
INT nIndex = (INT)wParam;
|
||||
|
@ -3302,7 +3296,7 @@ TOOLBAR_GetAnchorHighlight (HWND hwnd)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetBitmap (HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
INT nIndex;
|
||||
|
@ -3316,7 +3310,7 @@ TOOLBAR_GetBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static inline LRESULT
|
||||
TOOLBAR_GetBitmapFlags (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetBitmapFlags (HWND hwnd)
|
||||
{
|
||||
return (GetDeviceCaps (0, LOGPIXELSX) >= 120) ? TBBF_LARGE : 0;
|
||||
}
|
||||
|
@ -3518,7 +3512,7 @@ TOOLBAR_GetDefImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetInsertMark (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetInsertMark (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
TBINSERTMARK *lptbim = (TBINSERTMARK*)lParam;
|
||||
|
@ -3532,7 +3526,7 @@ TOOLBAR_GetInsertMark (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetInsertMarkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetInsertMarkColor (HWND hwnd)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -3570,7 +3564,7 @@ TOOLBAR_GetItemRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetMaxSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetMaxSize (HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
LPSIZE lpSize = (LPSIZE)lParam;
|
||||
|
@ -3629,7 +3623,7 @@ TOOLBAR_GetRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetRows (HWND hwnd)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -3638,7 +3632,7 @@ TOOLBAR_GetRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetState (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetState (HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
INT nIndex;
|
||||
|
@ -3652,14 +3646,14 @@ TOOLBAR_GetState (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetStyle (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetStyle (HWND hwnd)
|
||||
{
|
||||
return GetWindowLongW(hwnd, GWL_STYLE);
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetTextRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetTextRows (HWND hwnd)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -3668,7 +3662,7 @@ TOOLBAR_GetTextRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetToolTips (HWND hwnd)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -3679,7 +3673,7 @@ TOOLBAR_GetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_GetUnicodeFormat (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetUnicodeFormat (HWND hwnd)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
|
||||
|
@ -4293,7 +4287,7 @@ TOOLBAR_Restore(TOOLBAR_INFO *infoPtr, const TBSAVEPARAMSW *lpSave)
|
|||
* delete */
|
||||
for (i = infoPtr->nNumButtons - 1; i >= 0; i--)
|
||||
if (infoPtr->buttons[i].iBitmap == -1)
|
||||
TOOLBAR_DeleteButton(infoPtr->hwndSelf, i, 0);
|
||||
TOOLBAR_DeleteButton(infoPtr->hwndSelf, i);
|
||||
|
||||
/* only indicate success if at least one button survived */
|
||||
if (infoPtr->nNumButtons > 0) ret = TRUE;
|
||||
|
@ -4374,26 +4368,38 @@ TOOLBAR_SetBitmapSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
HIMAGELIST himlDef = GETDEFIMAGELIST(infoPtr, 0);
|
||||
short width = (short)LOWORD(lParam);
|
||||
short height = (short)HIWORD(lParam);
|
||||
|
||||
TRACE("hwnd=%p, wParam=%ld, lParam=%ld\n", hwnd, wParam, lParam);
|
||||
|
||||
if (wParam != 0)
|
||||
FIXME("wParam is %ld. Perhaps image list index?\n", wParam);
|
||||
|
||||
if (LOWORD(lParam) == 0)
|
||||
lParam = MAKELPARAM(1, HIWORD(lParam));
|
||||
|
||||
if (HIWORD(lParam)==0)
|
||||
lParam = MAKELPARAM(LOWORD(lParam), 1);
|
||||
/* 0 width or height is changed to 1 */
|
||||
if (width == 0)
|
||||
width = 1;
|
||||
if (height == 0)
|
||||
height = 1;
|
||||
|
||||
if (infoPtr->nNumButtons > 0)
|
||||
WARN("%d buttons, undoc increase to bitmap size : %d-%d -> %d-%d\n",
|
||||
infoPtr->nNumButtons,
|
||||
infoPtr->nBitmapWidth, infoPtr->nBitmapHeight,
|
||||
LOWORD(lParam), HIWORD(lParam));
|
||||
TRACE("%d buttons, undoc change to bitmap size : %d-%d -> %d-%d\n",
|
||||
infoPtr->nNumButtons,
|
||||
infoPtr->nBitmapWidth, infoPtr->nBitmapHeight, width, height);
|
||||
|
||||
infoPtr->nBitmapWidth = (INT)LOWORD(lParam);
|
||||
infoPtr->nBitmapHeight = (INT)HIWORD(lParam);
|
||||
if (width < -1 || height < -1)
|
||||
{
|
||||
/* Windows destroys the imagelist and seems to actually use negative
|
||||
* values to compute button sizes */
|
||||
FIXME("Negative bitmap sizes not supported (%d, %d)\n", width, height);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* width or height of -1 means no change */
|
||||
if (width != -1)
|
||||
infoPtr->nBitmapWidth = width;
|
||||
if (height != -1)
|
||||
infoPtr->nBitmapHeight = height;
|
||||
|
||||
if ((himlDef == infoPtr->himlInt) &&
|
||||
(ImageList_GetImageCount(infoPtr->himlInt) == 0))
|
||||
|
@ -5165,7 +5171,7 @@ TOOLBAR_SetVersion (HWND hwnd, INT iVersion)
|
|||
infoPtr->iVersion = iVersion;
|
||||
|
||||
if (infoPtr->iVersion >= 5)
|
||||
TOOLBAR_SetUnicodeFormat(hwnd, (WPARAM)TRUE, (LPARAM)0);
|
||||
TOOLBAR_SetUnicodeFormat(hwnd, TRUE, 0);
|
||||
|
||||
return iOldVersion;
|
||||
}
|
||||
|
@ -5236,12 +5242,11 @@ static LRESULT TOOLBAR_Unkwn45D(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
|
||||
/* UNDOCUMENTED MESSAGE: This is an extended version of the
|
||||
* TB_SETHOTITEM message. It allows the caller to specify a reason why the
|
||||
* hot item changed (rather than just the HICF_OTHER that TB_SETHOTITEM
|
||||
* sends). */
|
||||
/* This is an extended version of the TB_SETHOTITEM message. It allows the
|
||||
* caller to specify a reason why the hot item changed (rather than just the
|
||||
* HICF_OTHER that TB_SETHOTITEM sends). */
|
||||
static LRESULT
|
||||
TOOLBAR_Unkwn45E (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_SetHotItem2 (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
|
||||
INT nOldHotItem = infoPtr->nHotItem;
|
||||
|
@ -5262,18 +5267,15 @@ TOOLBAR_Unkwn45E (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
return (nOldHotItem < 0) ? -1 : (LRESULT)nOldHotItem;
|
||||
}
|
||||
|
||||
/* UNDOCUMENTED MESSAGE: This sets the toolbar global iListGap parameter
|
||||
* which controls the amount of spacing between the image and the text
|
||||
* of buttons for TBSTYLE_LIST toolbars. */
|
||||
static LRESULT TOOLBAR_Unkwn460(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
/* Sets the toolbar global iListGap parameter which controls the amount of
|
||||
* spacing between the image and the text of buttons for TBSTYLE_LIST
|
||||
* toolbars. */
|
||||
static LRESULT TOOLBAR_SetListGap(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
|
||||
|
||||
TRACE("hwnd=%p iListGap=%ld\n", hwnd, wParam);
|
||||
|
||||
if (lParam != 0)
|
||||
FIXME("lParam = 0x%08lx. Please report\n", lParam);
|
||||
|
||||
infoPtr->iListGap = (INT)wParam;
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
@ -5281,9 +5283,9 @@ static LRESULT TOOLBAR_Unkwn460(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* UNDOCUMENTED MESSAGE: This returns the number of maximum number
|
||||
* of image lists associated with the various states. */
|
||||
static LRESULT TOOLBAR_Unkwn462(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
/* Returns the number of maximum number of image lists associated with the
|
||||
* various states. */
|
||||
static LRESULT TOOLBAR_GetImageListCount(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
|
||||
|
||||
|
@ -5293,7 +5295,7 @@ static LRESULT TOOLBAR_Unkwn462(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
TOOLBAR_Unkwn463 (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
TOOLBAR_GetIdealSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
|
||||
LPSIZE lpsize = (LPSIZE)lParam;
|
||||
|
@ -5308,7 +5310,7 @@ TOOLBAR_Unkwn463 (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
* lParam pointer to SIZE structure
|
||||
*
|
||||
*/
|
||||
TRACE("[0463] wParam %ld, lParam 0x%08lx -> 0x%08x 0x%08x\n",
|
||||
TRACE("wParam %ld, lParam 0x%08lx -> 0x%08x 0x%08x\n",
|
||||
wParam, lParam, lpsize->cx, lpsize->cy);
|
||||
|
||||
switch(wParam) {
|
||||
|
@ -5335,11 +5337,10 @@ TOOLBAR_Unkwn463 (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
lpsize->cy = infoPtr->rcBound.bottom - infoPtr->rcBound.top;
|
||||
break;
|
||||
default:
|
||||
ERR("Unknown wParam %ld for Toolbar message [0463]. Please report\n",
|
||||
wParam);
|
||||
FIXME("Unknown wParam %ld\n", wParam);
|
||||
return 0;
|
||||
}
|
||||
TRACE("[0463] set to -> 0x%08x 0x%08x\n",
|
||||
TRACE("set to -> 0x%08x 0x%08x\n",
|
||||
lpsize->cx, lpsize->cy);
|
||||
return 1;
|
||||
}
|
||||
|
@ -5820,7 +5821,7 @@ TOOLBAR_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
if (pt.x < (btnPtr->rect.left + (btnPtr->rect.right - btnPtr->rect.left)/2))
|
||||
{
|
||||
if ((nButton > 0) && (infoPtr->buttons[nButton-1].fsStyle & BTNS_SEP))
|
||||
TOOLBAR_DeleteButton(hwnd, nButton - 1, 0);
|
||||
TOOLBAR_DeleteButton(hwnd, nButton - 1);
|
||||
}
|
||||
else /* else insert a separator before the dragged button */
|
||||
{
|
||||
|
@ -5847,7 +5848,7 @@ TOOLBAR_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
else
|
||||
{
|
||||
TRACE("button %d dragged out of toolbar\n", infoPtr->nButtonDrag);
|
||||
TOOLBAR_DeleteButton(hwnd, (WPARAM)infoPtr->nButtonDrag, 0);
|
||||
TOOLBAR_DeleteButton(hwnd, (WPARAM)infoPtr->nButtonDrag);
|
||||
}
|
||||
|
||||
/* button under cursor changed so need to re-set hot item */
|
||||
|
@ -6145,7 +6146,7 @@ TOOLBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
DWORD styleadd = 0;
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (TOOLBAR_INFO *)Alloc (sizeof(TOOLBAR_INFO));
|
||||
infoPtr = Alloc (sizeof(TOOLBAR_INFO));
|
||||
SetWindowLongPtrW (hwnd, 0, (LONG_PTR)infoPtr);
|
||||
|
||||
/* paranoid!! */
|
||||
|
@ -6670,10 +6671,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_AutoSize (hwnd);
|
||||
|
||||
case TB_BUTTONCOUNT:
|
||||
return TOOLBAR_ButtonCount (hwnd, wParam, lParam);
|
||||
return TOOLBAR_ButtonCount (hwnd);
|
||||
|
||||
case TB_BUTTONSTRUCTSIZE:
|
||||
return TOOLBAR_ButtonStructSize (hwnd, wParam, lParam);
|
||||
return TOOLBAR_ButtonStructSize (hwnd, wParam);
|
||||
|
||||
case TB_CHANGEBITMAP:
|
||||
return TOOLBAR_ChangeBitmap (hwnd, wParam, lParam);
|
||||
|
@ -6682,13 +6683,13 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_CheckButton (hwnd, wParam, lParam);
|
||||
|
||||
case TB_COMMANDTOINDEX:
|
||||
return TOOLBAR_CommandToIndex (hwnd, wParam, lParam);
|
||||
return TOOLBAR_CommandToIndex (hwnd, wParam);
|
||||
|
||||
case TB_CUSTOMIZE:
|
||||
return TOOLBAR_Customize (hwnd);
|
||||
|
||||
case TB_DELETEBUTTON:
|
||||
return TOOLBAR_DeleteButton (hwnd, wParam, lParam);
|
||||
return TOOLBAR_DeleteButton (hwnd, wParam);
|
||||
|
||||
case TB_ENABLEBUTTON:
|
||||
return TOOLBAR_EnableButton (hwnd, wParam, lParam);
|
||||
|
@ -6697,10 +6698,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_GetAnchorHighlight (hwnd);
|
||||
|
||||
case TB_GETBITMAP:
|
||||
return TOOLBAR_GetBitmap (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetBitmap (hwnd, wParam);
|
||||
|
||||
case TB_GETBITMAPFLAGS:
|
||||
return TOOLBAR_GetBitmapFlags (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetBitmapFlags (hwnd);
|
||||
|
||||
case TB_GETBUTTON:
|
||||
return TOOLBAR_GetButton (hwnd, wParam, lParam);
|
||||
|
@ -6736,16 +6737,16 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_GetDefImageList (hwnd, wParam, lParam);
|
||||
|
||||
case TB_GETINSERTMARK:
|
||||
return TOOLBAR_GetInsertMark (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetInsertMark (hwnd, lParam);
|
||||
|
||||
case TB_GETINSERTMARKCOLOR:
|
||||
return TOOLBAR_GetInsertMarkColor (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetInsertMarkColor (hwnd);
|
||||
|
||||
case TB_GETITEMRECT:
|
||||
return TOOLBAR_GetItemRect (hwnd, wParam, lParam);
|
||||
|
||||
case TB_GETMAXSIZE:
|
||||
return TOOLBAR_GetMaxSize (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetMaxSize (hwnd, lParam);
|
||||
|
||||
/* case TB_GETOBJECT: */ /* 4.71 */
|
||||
|
||||
|
@ -6756,10 +6757,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_GetRect (hwnd, wParam, lParam);
|
||||
|
||||
case TB_GETROWS:
|
||||
return TOOLBAR_GetRows (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetRows (hwnd);
|
||||
|
||||
case TB_GETSTATE:
|
||||
return TOOLBAR_GetState (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetState (hwnd, wParam);
|
||||
|
||||
case TB_GETSTRINGA:
|
||||
return TOOLBAR_GetStringA (hwnd, wParam, lParam);
|
||||
|
@ -6768,16 +6769,16 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLBAR_GetStringW (hwnd, wParam, lParam);
|
||||
|
||||
case TB_GETSTYLE:
|
||||
return TOOLBAR_GetStyle (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetStyle (hwnd);
|
||||
|
||||
case TB_GETTEXTROWS:
|
||||
return TOOLBAR_GetTextRows (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetTextRows (hwnd);
|
||||
|
||||
case TB_GETTOOLTIPS:
|
||||
return TOOLBAR_GetToolTips (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetToolTips (hwnd);
|
||||
|
||||
case TB_GETUNICODEFORMAT:
|
||||
return TOOLBAR_GetUnicodeFormat (hwnd, wParam, lParam);
|
||||
return TOOLBAR_GetUnicodeFormat (hwnd);
|
||||
|
||||
case TB_HIDEBUTTON:
|
||||
return TOOLBAR_HideButton (hwnd, wParam, lParam);
|
||||
|
@ -6914,17 +6915,17 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
case TB_UNKWN45D:
|
||||
return TOOLBAR_Unkwn45D(hwnd, wParam, lParam);
|
||||
|
||||
case TB_UNKWN45E:
|
||||
return TOOLBAR_Unkwn45E (hwnd, wParam, lParam);
|
||||
case TB_SETHOTITEM2:
|
||||
return TOOLBAR_SetHotItem2 (hwnd, wParam, lParam);
|
||||
|
||||
case TB_UNKWN460:
|
||||
return TOOLBAR_Unkwn460(hwnd, wParam, lParam);
|
||||
case TB_SETLISTGAP:
|
||||
return TOOLBAR_SetListGap(hwnd, wParam, lParam);
|
||||
|
||||
case TB_UNKWN462:
|
||||
return TOOLBAR_Unkwn462(hwnd, wParam, lParam);
|
||||
case TB_GETIMAGELISTCOUNT:
|
||||
return TOOLBAR_GetImageListCount(hwnd, wParam, lParam);
|
||||
|
||||
case TB_UNKWN463:
|
||||
return TOOLBAR_Unkwn463 (hwnd, wParam, lParam);
|
||||
case TB_GETIDEALSIZE:
|
||||
return TOOLBAR_GetIdealSize (hwnd, wParam, lParam);
|
||||
|
||||
case TB_UNKWN464:
|
||||
return TOOLBAR_Unkwn464(hwnd, wParam, lParam);
|
||||
|
@ -7046,7 +7047,7 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
@ -7091,7 +7092,7 @@ static HIMAGELIST TOOLBAR_InsertImageList(PIMLENTRY **pies, INT *cies, HIMAGELIS
|
|||
{
|
||||
PIMLENTRY *pnies;
|
||||
|
||||
c = (PIMLENTRY) Alloc(sizeof(IMLENTRY));
|
||||
c = Alloc(sizeof(IMLENTRY));
|
||||
c->id = id;
|
||||
|
||||
pnies = Alloc((*cies + 1) * sizeof(PIMLENTRY));
|
||||
|
|
|
@ -368,7 +368,7 @@ static void TOOLTIPS_GetDispInfoA(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO
|
|||
ttnmdi.hdr.hwndFrom = hwnd;
|
||||
ttnmdi.hdr.idFrom = toolPtr->uId;
|
||||
ttnmdi.hdr.code = TTN_GETDISPINFOA; /* == TTN_NEEDTEXTA */
|
||||
ttnmdi.lpszText = (LPSTR)&ttnmdi.szText;
|
||||
ttnmdi.lpszText = (LPSTR)ttnmdi.szText;
|
||||
ttnmdi.uFlags = toolPtr->uFlags;
|
||||
ttnmdi.lParam = toolPtr->lParam;
|
||||
|
||||
|
@ -424,7 +424,7 @@ static void TOOLTIPS_GetDispInfoW(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO
|
|||
ttnmdi.hdr.hwndFrom = hwnd;
|
||||
ttnmdi.hdr.idFrom = toolPtr->uId;
|
||||
ttnmdi.hdr.code = TTN_GETDISPINFOW; /* == TTN_NEEDTEXTW */
|
||||
ttnmdi.lpszText = (LPWSTR)&ttnmdi.szText;
|
||||
ttnmdi.lpszText = (LPWSTR)ttnmdi.szText;
|
||||
ttnmdi.uFlags = toolPtr->uFlags;
|
||||
ttnmdi.lParam = toolPtr->lParam;
|
||||
|
||||
|
@ -1574,6 +1574,9 @@ TOOLTIPS_GetTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
nTool = TOOLTIPS_GetToolFromInfoW (infoPtr, lpToolInfo);
|
||||
if (nTool == -1) return 0;
|
||||
|
||||
if (infoPtr->tools[nTool].lpszText == NULL)
|
||||
return 0;
|
||||
|
||||
strcpyW (lpToolInfo->lpszText, infoPtr->tools[nTool].lpszText);
|
||||
|
||||
return 0;
|
||||
|
@ -2348,7 +2351,7 @@ TOOLTIPS_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
TOOLTIPS_INFO *infoPtr;
|
||||
|
||||
/* allocate memory for info structure */
|
||||
infoPtr = (TOOLTIPS_INFO *)Alloc (sizeof(TOOLTIPS_INFO));
|
||||
infoPtr = Alloc (sizeof(TOOLTIPS_INFO));
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
/* initialize info structure */
|
||||
|
@ -2486,34 +2489,7 @@ static LRESULT
|
|||
TOOLTIPS_NotifyFormat (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
FIXME ("hwnd=%p wParam=%lx lParam=%lx\n", hwnd, wParam, lParam);
|
||||
TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
|
||||
TTTOOL_INFO *toolPtr = infoPtr->tools;
|
||||
INT nResult;
|
||||
|
||||
if (lParam == NF_QUERY)
|
||||
{
|
||||
if (toolPtr->bNotifyUnicode)
|
||||
{
|
||||
return NFR_UNICODE;
|
||||
} else {
|
||||
return NFR_ANSI;
|
||||
}
|
||||
}
|
||||
else if (lParam == NF_REQUERY)
|
||||
{
|
||||
nResult = (INT) SendMessageW (toolPtr->hwnd, WM_NOTIFYFORMAT,
|
||||
(WPARAM)hwnd, (LPARAM)NF_QUERY);
|
||||
if (nResult == NFR_ANSI) {
|
||||
toolPtr->bNotifyUnicode = FALSE;
|
||||
TRACE(" -- WM_NOTIFYFORMAT returns: NFR_ANSI\n");
|
||||
} else if (nResult == NFR_UNICODE) {
|
||||
toolPtr->bNotifyUnicode = TRUE;
|
||||
TRACE(" -- WM_NOTIFYFORMAT returns: NFR_UNICODE\n");
|
||||
} else {
|
||||
TRACE (" -- WM_NOTIFYFORMAT returns: error!\n");
|
||||
}
|
||||
return nResult;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2870,7 +2846,7 @@ TOOLTIPS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TOOLTIPS_WinIniChange (hwnd, wParam, lParam);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n",
|
||||
uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -146,12 +146,12 @@ notify_with_scroll (const TRACKBAR_INFO *infoPtr, UINT code)
|
|||
|
||||
static void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr)
|
||||
{
|
||||
int i, tic, nrTics;
|
||||
int tic;
|
||||
unsigned nrTics, i;
|
||||
|
||||
if (infoPtr->uTicFreq && infoPtr->lRangeMax >= infoPtr->lRangeMin)
|
||||
nrTics=(infoPtr->lRangeMax - infoPtr->lRangeMin)/infoPtr->uTicFreq;
|
||||
else {
|
||||
nrTics = 0;
|
||||
Free (infoPtr->tics);
|
||||
infoPtr->tics = NULL;
|
||||
infoPtr->uNumTics = 0;
|
||||
|
@ -1147,7 +1147,7 @@ TRACKBAR_SetPos (TRACKBAR_INFO *infoPtr, BOOL fPosition, LONG lPosition)
|
|||
infoPtr->lPos = infoPtr->lRangeMax;
|
||||
infoPtr->flags |= TB_THUMBPOSCHANGED;
|
||||
|
||||
if (fPosition) TRACKBAR_InvalidateThumbMove(infoPtr, oldPos, lPosition);
|
||||
if (fPosition && oldPos != lPosition) TRACKBAR_InvalidateThumbMove(infoPtr, oldPos, lPosition);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1396,7 +1396,7 @@ TRACKBAR_Create (HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
TRACKBAR_INFO *infoPtr;
|
||||
DWORD dwStyle;
|
||||
|
||||
infoPtr = (TRACKBAR_INFO *)Alloc (sizeof(TRACKBAR_INFO));
|
||||
infoPtr = Alloc (sizeof(TRACKBAR_INFO));
|
||||
if (!infoPtr) return -1;
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
|
@ -1452,6 +1452,9 @@ TRACKBAR_Destroy (TRACKBAR_INFO *infoPtr)
|
|||
if (infoPtr->hwndToolTip)
|
||||
DestroyWindow (infoPtr->hwndToolTip);
|
||||
|
||||
Free (infoPtr->tics);
|
||||
infoPtr->tics = NULL;
|
||||
|
||||
SetWindowLongPtrW (infoPtr->hwndSelf, 0, 0);
|
||||
CloseThemeData (GetWindowTheme (infoPtr->hwndSelf));
|
||||
Free (infoPtr);
|
||||
|
@ -1461,7 +1464,7 @@ TRACKBAR_Destroy (TRACKBAR_INFO *infoPtr)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_KillFocus (TRACKBAR_INFO *infoPtr, HWND hwndGetFocus)
|
||||
TRACKBAR_KillFocus (TRACKBAR_INFO *infoPtr)
|
||||
{
|
||||
TRACE("\n");
|
||||
infoPtr->bFocussed = FALSE;
|
||||
|
@ -1471,7 +1474,7 @@ TRACKBAR_KillFocus (TRACKBAR_INFO *infoPtr, HWND hwndGetFocus)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_LButtonDown (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
||||
TRACKBAR_LButtonDown (TRACKBAR_INFO *infoPtr, INT x, INT y)
|
||||
{
|
||||
POINT clickPoint;
|
||||
|
||||
|
@ -1500,7 +1503,7 @@ TRACKBAR_LButtonDown (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
||||
TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr)
|
||||
{
|
||||
if (infoPtr->flags & TB_DRAG_MODE) {
|
||||
notify_with_scroll (infoPtr, TB_THUMBPOSITION | (infoPtr->lPos<<16));
|
||||
|
@ -1548,7 +1551,7 @@ TRACKBAR_Paint (TRACKBAR_INFO *infoPtr, HDC hdc)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_SetFocus (TRACKBAR_INFO *infoPtr, HWND hwndLoseFocus)
|
||||
TRACKBAR_SetFocus (TRACKBAR_INFO *infoPtr)
|
||||
{
|
||||
TRACE("\n");
|
||||
infoPtr->bFocussed = TRUE;
|
||||
|
@ -1559,7 +1562,7 @@ TRACKBAR_SetFocus (TRACKBAR_INFO *infoPtr, HWND hwndLoseFocus)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_Size (TRACKBAR_INFO *infoPtr, DWORD fwSizeType, INT nWidth, INT nHeight)
|
||||
TRACKBAR_Size (TRACKBAR_INFO *infoPtr)
|
||||
{
|
||||
TRACKBAR_InitializeThumb (infoPtr);
|
||||
TRACKBAR_AlignBuddies (infoPtr);
|
||||
|
@ -1569,7 +1572,7 @@ TRACKBAR_Size (TRACKBAR_INFO *infoPtr, DWORD fwSizeType, INT nWidth, INT nHeight
|
|||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_Timer (TRACKBAR_INFO *infoPtr, INT wTimerID, const TIMERPROC *tmrpc)
|
||||
TRACKBAR_Timer (TRACKBAR_INFO *infoPtr)
|
||||
{
|
||||
if (infoPtr->flags & TB_AUTO_PAGE) {
|
||||
POINT pt;
|
||||
|
@ -1586,13 +1589,13 @@ static LRESULT theme_changed (const TRACKBAR_INFO* infoPtr)
|
|||
{
|
||||
HTHEME theme = GetWindowTheme (infoPtr->hwndSelf);
|
||||
CloseThemeData (theme);
|
||||
theme = OpenThemeData (infoPtr->hwndSelf, themeClass);
|
||||
OpenThemeData (infoPtr->hwndSelf, themeClass);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static LRESULT
|
||||
TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
||||
TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, INT x, INT y)
|
||||
{
|
||||
DWORD dwStyle = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE);
|
||||
INT clickPlace = (dwStyle & TBS_VERT) ? y : x;
|
||||
|
@ -1656,7 +1659,7 @@ TRACKBAR_MouseMove (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y)
|
|||
}
|
||||
|
||||
static BOOL
|
||||
TRACKBAR_KeyDown (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData)
|
||||
TRACKBAR_KeyDown (TRACKBAR_INFO *infoPtr, INT nVirtKey)
|
||||
{
|
||||
DWORD style = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE);
|
||||
BOOL downIsLeft = style & TBS_DOWNISLEFT;
|
||||
|
@ -1712,7 +1715,7 @@ TRACKBAR_KeyDown (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData)
|
|||
|
||||
|
||||
static inline BOOL
|
||||
TRACKBAR_KeyUp (const TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData)
|
||||
TRACKBAR_KeyUp (const TRACKBAR_INFO *infoPtr, INT nVirtKey)
|
||||
{
|
||||
switch (nVirtKey) {
|
||||
case VK_LEFT:
|
||||
|
@ -1865,19 +1868,19 @@ TRACKBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return DLGC_WANTARROWS;
|
||||
|
||||
case WM_KEYDOWN:
|
||||
return TRACKBAR_KeyDown (infoPtr, (INT)wParam, (DWORD)lParam);
|
||||
return TRACKBAR_KeyDown (infoPtr, (INT)wParam);
|
||||
|
||||
case WM_KEYUP:
|
||||
return TRACKBAR_KeyUp (infoPtr, (INT)wParam, (DWORD)lParam);
|
||||
return TRACKBAR_KeyUp (infoPtr, (INT)wParam);
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
return TRACKBAR_KillFocus (infoPtr, (HWND)wParam);
|
||||
return TRACKBAR_KillFocus (infoPtr);
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
return TRACKBAR_LButtonDown (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
return TRACKBAR_LButtonDown (infoPtr, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
return TRACKBAR_LButtonUp (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
return TRACKBAR_LButtonUp (infoPtr);
|
||||
|
||||
case WM_MOUSELEAVE:
|
||||
infoPtr->flags &= ~TB_THUMB_HOT;
|
||||
|
@ -1885,29 +1888,29 @@ TRACKBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return 0;
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
return TRACKBAR_MouseMove (infoPtr, wParam, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
return TRACKBAR_MouseMove (infoPtr, (SHORT)LOWORD(lParam), (SHORT)HIWORD(lParam));
|
||||
|
||||
case WM_PRINTCLIENT:
|
||||
case WM_PAINT:
|
||||
return TRACKBAR_Paint (infoPtr, (HDC)wParam);
|
||||
|
||||
case WM_SETFOCUS:
|
||||
return TRACKBAR_SetFocus (infoPtr, (HWND)wParam);
|
||||
return TRACKBAR_SetFocus (infoPtr);
|
||||
|
||||
case WM_SIZE:
|
||||
return TRACKBAR_Size (infoPtr, wParam, LOWORD(lParam), HIWORD(lParam));
|
||||
return TRACKBAR_Size (infoPtr);
|
||||
|
||||
case WM_THEMECHANGED:
|
||||
return theme_changed (infoPtr);
|
||||
|
||||
case WM_TIMER:
|
||||
return TRACKBAR_Timer (infoPtr, (INT)wParam, (TIMERPROC *)lParam);
|
||||
return TRACKBAR_Timer (infoPtr);
|
||||
|
||||
case WM_WININICHANGE:
|
||||
return TRACKBAR_InitializeThumb (infoPtr);
|
||||
|
||||
default:
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
ERR("unknown msg %04x wp=%08lx lp=%08lx\n", uMsg, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
|
|
@ -23,8 +23,7 @@
|
|||
*
|
||||
* Note that TREEVIEW_INFO * and HTREEITEM are the same thing.
|
||||
*
|
||||
* Note2: All items always! have valid (allocated) pszText field.
|
||||
* If item's text == LPSTR_TEXTCALLBACKA we allocate buffer
|
||||
* Note2: If item's text == LPSTR_TEXTCALLBACKA we allocate buffer
|
||||
* of size TEXT_CALLBACK_SIZE in DoSetItem.
|
||||
* We use callbackMask to keep track of fields to be updated.
|
||||
*
|
||||
|
@ -752,7 +751,7 @@ TREEVIEW_UpdateDispInfo(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
|
|||
(LPSTR)callback.item.pszText, -1,
|
||||
NULL, 0);
|
||||
buflen = max((len)*sizeof(WCHAR), TEXT_CALLBACK_SIZE);
|
||||
newText = (LPWSTR)ReAlloc(wineItem->pszText, buflen);
|
||||
newText = ReAlloc(wineItem->pszText, buflen);
|
||||
|
||||
TRACE("returned str %s, len=%d, buflen=%d\n",
|
||||
debugstr_a((LPSTR)callback.item.pszText), len, buflen);
|
||||
|
@ -794,7 +793,7 @@ TREEVIEW_UpdateDispInfo(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
|
|||
(LPSTR)callback.item.pszText, -1,
|
||||
NULL, 0);
|
||||
buflen = max((len)*sizeof(WCHAR), TEXT_CALLBACK_SIZE);
|
||||
newText = (LPWSTR)Alloc(buflen);
|
||||
newText = Alloc(buflen);
|
||||
|
||||
TRACE("same buffer str %s, len=%d, buflen=%d\n",
|
||||
debugstr_a((LPSTR)callback.item.pszText), len, buflen);
|
||||
|
@ -859,7 +858,7 @@ TREEVIEW_ComputeItemInternalMetrics(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM
|
|||
> TVS_LINESATROOT);
|
||||
#endif
|
||||
|
||||
item->linesOffset = infoPtr->uIndent * (item->iLevel + lar - 1)
|
||||
item->linesOffset = infoPtr->uIndent * (lar ? item->iLevel : item->iLevel - 1)
|
||||
- infoPtr->scrollX;
|
||||
item->stateOffset = item->linesOffset + infoPtr->uIndent;
|
||||
item->imageOffset = item->stateOffset
|
||||
|
@ -1221,7 +1220,7 @@ TREEVIEW_InsertItemT(TREEVIEW_INFO *infoPtr, const TVINSERTSTRUCTW *ptdi, BOOL i
|
|||
if (!TREEVIEW_ValidItem(infoPtr, parentItem))
|
||||
{
|
||||
WARN("invalid parent %p\n", parentItem);
|
||||
return (LRESULT)(HTREEITEM)NULL;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1252,13 +1251,13 @@ TREEVIEW_InsertItemT(TREEVIEW_INFO *infoPtr, const TVINSERTSTRUCTW *ptdi, BOOL i
|
|||
|
||||
newItem = TREEVIEW_AllocateItem(infoPtr);
|
||||
if (newItem == NULL)
|
||||
return (LRESULT)(HTREEITEM)NULL;
|
||||
return 0;
|
||||
|
||||
newItem->parent = parentItem;
|
||||
newItem->iIntegral = 1;
|
||||
|
||||
if (!TREEVIEW_DoSetItemT(infoPtr, newItem, tvItem, isW))
|
||||
return (LRESULT)(HTREEITEM)NULL;
|
||||
return 0;
|
||||
|
||||
/* After this point, nothing can fail. (Except for TVI_SORT.) */
|
||||
|
||||
|
@ -1585,7 +1584,7 @@ TREEVIEW_DeleteItem(TREEVIEW_INFO *infoPtr, HTREEITEM wineItem)
|
|||
|
||||
/* Get/Set Messages *********************************************************/
|
||||
static LRESULT
|
||||
TREEVIEW_SetRedraw(TREEVIEW_INFO* infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
TREEVIEW_SetRedraw(TREEVIEW_INFO* infoPtr, WPARAM wParam)
|
||||
{
|
||||
if(wParam)
|
||||
infoPtr->bRedraw = TRUE;
|
||||
|
@ -2083,7 +2082,12 @@ TREEVIEW_GetItemT(const TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem, BOOL isW)
|
|||
|
||||
if (tvItem->mask & TVIF_TEXT)
|
||||
{
|
||||
if (isW)
|
||||
if (wineItem->pszText == NULL)
|
||||
{
|
||||
if (tvItem->cchTextMax > 0)
|
||||
tvItem->pszText[0] = '\0';
|
||||
}
|
||||
else if (isW)
|
||||
{
|
||||
if (wineItem->pszText == LPSTR_TEXTCALLBACKW)
|
||||
{
|
||||
|
@ -2826,6 +2830,8 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, HDC hdc, const RECT *rc)
|
|||
}
|
||||
}
|
||||
|
||||
TREEVIEW_UpdateScrollBars(infoPtr);
|
||||
|
||||
if (infoPtr->cdmode & CDRF_NOTIFYPOSTPAINT)
|
||||
infoPtr->cdmode =
|
||||
TREEVIEW_SendCustomDrawNotify(infoPtr, CDDS_POSTPAINT, hdc, rect);
|
||||
|
@ -2908,7 +2914,7 @@ TREEVIEW_SortOnName(TREEVIEW_ITEM *first, TREEVIEW_ITEM *second,
|
|||
|
||||
/* Returns the number of physical children belonging to item. */
|
||||
static INT
|
||||
TREEVIEW_CountChildren(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item)
|
||||
TREEVIEW_CountChildren(const TREEVIEW_ITEM *item)
|
||||
{
|
||||
INT cChildren = 0;
|
||||
HTREEITEM hti;
|
||||
|
@ -2922,7 +2928,7 @@ TREEVIEW_CountChildren(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item)
|
|||
/* Returns a DPA containing a pointer to each physical child of item in
|
||||
* sibling order. If item has no children, an empty DPA is returned. */
|
||||
static HDPA
|
||||
TREEVIEW_BuildChildDPA(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item)
|
||||
TREEVIEW_BuildChildDPA(const TREEVIEW_ITEM *item)
|
||||
{
|
||||
HTREEITEM child = item->firstChild;
|
||||
|
||||
|
@ -2953,7 +2959,7 @@ TREEVIEW_BuildChildDPA(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item)
|
|||
*/
|
||||
|
||||
static LRESULT
|
||||
TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, BOOL fRecurse, HTREEITEM parent,
|
||||
TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, HTREEITEM parent,
|
||||
LPTVSORTCB pSort)
|
||||
{
|
||||
INT cChildren;
|
||||
|
@ -2982,7 +2988,7 @@ TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, BOOL fRecurse, HTREEITEM parent,
|
|||
lpCompare = (LPARAM)infoPtr;
|
||||
}
|
||||
|
||||
cChildren = TREEVIEW_CountChildren(infoPtr, parent);
|
||||
cChildren = TREEVIEW_CountChildren(parent);
|
||||
|
||||
/* Make sure there is something to sort */
|
||||
if (cChildren > 1)
|
||||
|
@ -2993,7 +2999,7 @@ TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, BOOL fRecurse, HTREEITEM parent,
|
|||
HTREEITEM nextItem = 0;
|
||||
HTREEITEM prevItem = 0;
|
||||
|
||||
HDPA sortList = TREEVIEW_BuildChildDPA(infoPtr, parent);
|
||||
HDPA sortList = TREEVIEW_BuildChildDPA(parent);
|
||||
|
||||
if (sortList == NULL)
|
||||
return FALSE;
|
||||
|
@ -3004,8 +3010,8 @@ TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, BOOL fRecurse, HTREEITEM parent,
|
|||
/* The order of DPA entries has been changed, so fixup the
|
||||
* nextSibling and prevSibling pointers. */
|
||||
|
||||
item = (HTREEITEM)DPA_GetPtr(sortList, count++);
|
||||
while ((nextItem = (HTREEITEM)DPA_GetPtr(sortList, count++)) != NULL)
|
||||
item = DPA_GetPtr(sortList, count++);
|
||||
while ((nextItem = DPA_GetPtr(sortList, count++)) != NULL)
|
||||
{
|
||||
/* link the two current item together */
|
||||
item->nextSibling = nextItem;
|
||||
|
@ -3074,9 +3080,9 @@ TREEVIEW_Sort(TREEVIEW_INFO *infoPtr, BOOL fRecurse, HTREEITEM parent,
|
|||
* and sort the children of the TV item specified in lParam
|
||||
*/
|
||||
static LRESULT
|
||||
TREEVIEW_SortChildrenCB(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPTVSORTCB pSort)
|
||||
TREEVIEW_SortChildrenCB(TREEVIEW_INFO *infoPtr, LPTVSORTCB pSort)
|
||||
{
|
||||
return TREEVIEW_Sort(infoPtr, wParam, pSort->hParent, pSort);
|
||||
return TREEVIEW_Sort(infoPtr, pSort->hParent, pSort);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3084,9 +3090,9 @@ TREEVIEW_SortChildrenCB(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPTVSORTCB pSort)
|
|||
* Sort the children of the TV item specified in lParam.
|
||||
*/
|
||||
static LRESULT
|
||||
TREEVIEW_SortChildren(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
TREEVIEW_SortChildren(TREEVIEW_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
return TREEVIEW_Sort(infoPtr, (BOOL)wParam, (HTREEITEM)lParam, NULL);
|
||||
return TREEVIEW_Sort(infoPtr, (HTREEITEM)lParam, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -3292,7 +3298,7 @@ TREEVIEW_Expand(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
|
|||
scrollDist = nextItem->rect.top - orgNextTop;
|
||||
scrollRect.top = orgNextTop;
|
||||
|
||||
ScrollWindowEx (infoPtr->hwnd, 0, scrollDist, &scrollRect, &scrollRect,
|
||||
ScrollWindowEx (infoPtr->hwnd, 0, scrollDist, &scrollRect, NULL,
|
||||
NULL, NULL, SW_ERASE | SW_INVALIDATE);
|
||||
TREEVIEW_Invalidate (infoPtr, wineItem);
|
||||
} else {
|
||||
|
@ -3455,14 +3461,14 @@ TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht)
|
|||
if (status)
|
||||
{
|
||||
lpht->flags = status;
|
||||
return (LRESULT)(HTREEITEM)NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
wineItem = TREEVIEW_HitTestPoint(infoPtr, lpht->pt);
|
||||
if (!wineItem)
|
||||
{
|
||||
lpht->flags = TVHT_NOWHERE;
|
||||
return (LRESULT)(HTREEITEM)NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (x >= wineItem->textOffset + wineItem->textWidth)
|
||||
|
@ -3660,8 +3666,11 @@ TREEVIEW_EditLabel(TREEVIEW_INFO *infoPtr, HTREEITEM hItem)
|
|||
}
|
||||
|
||||
/* Get string length in pixels */
|
||||
GetTextExtentPoint32W(hdc, editItem->pszText, strlenW(editItem->pszText),
|
||||
&sz);
|
||||
if (editItem->pszText)
|
||||
GetTextExtentPoint32W(hdc, editItem->pszText, strlenW(editItem->pszText),
|
||||
&sz);
|
||||
else
|
||||
GetTextExtentPoint32A(hdc, "", 0, &sz);
|
||||
|
||||
/* Add Extra spacing for the next character */
|
||||
GetTextMetricsW(hdc, &textMetric);
|
||||
|
@ -3710,7 +3719,10 @@ TREEVIEW_EditLabel(TREEVIEW_INFO *infoPtr, HTREEITEM hItem)
|
|||
}
|
||||
|
||||
infoPtr->selectedItem = hItem;
|
||||
SetWindowTextW(hwndEdit, editItem->pszText);
|
||||
|
||||
if (editItem->pszText)
|
||||
SetWindowTextW(hwndEdit, editItem->pszText);
|
||||
|
||||
SetFocus(hwndEdit);
|
||||
SendMessageW(hwndEdit, EM_SETSEL, 0, -1);
|
||||
ShowWindow(hwndEdit, SW_SHOW);
|
||||
|
@ -4158,7 +4170,7 @@ TREEVIEW_RButtonUp(const TREEVIEW_INFO *infoPtr, const POINT *pPt)
|
|||
|
||||
|
||||
static LRESULT
|
||||
TREEVIEW_CreateDragImage(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
TREEVIEW_CreateDragImage(TREEVIEW_INFO *infoPtr, LPARAM lParam)
|
||||
{
|
||||
TREEVIEW_ITEM *dragItem = (HTREEITEM)lParam;
|
||||
INT cx, cy;
|
||||
|
@ -4184,10 +4196,14 @@ TREEVIEW_CreateDragImage(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
hdc = CreateCompatibleDC(htopdc);
|
||||
|
||||
hOldFont = SelectObject(hdc, infoPtr->hFont);
|
||||
GetTextExtentPoint32W(hdc, dragItem->pszText, strlenW(dragItem->pszText),
|
||||
|
||||
if (dragItem->pszText)
|
||||
GetTextExtentPoint32W(hdc, dragItem->pszText, strlenW(dragItem->pszText),
|
||||
&size);
|
||||
TRACE("%d %d %s %d\n", size.cx, size.cy, debugstr_w(dragItem->pszText),
|
||||
strlenW(dragItem->pszText));
|
||||
else
|
||||
GetTextExtentPoint32A(hdc, "", 0, &size);
|
||||
|
||||
TRACE("%d %d %s\n", size.cx, size.cy, debugstr_w(dragItem->pszText));
|
||||
hbmp = CreateCompatibleBitmap(htopdc, size.cx, size.cy);
|
||||
hOldbmp = SelectObject(hdc, hbmp);
|
||||
|
||||
|
@ -4208,8 +4224,11 @@ TREEVIEW_CreateDragImage(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
|
|||
/* draw item text */
|
||||
|
||||
SetRect(&rc, cx, 0, size.cx, size.cy);
|
||||
DrawTextW(hdc, dragItem->pszText, strlenW(dragItem->pszText), &rc,
|
||||
DT_LEFT);
|
||||
|
||||
if (dragItem->pszText)
|
||||
DrawTextW(hdc, dragItem->pszText, strlenW(dragItem->pszText), &rc,
|
||||
DT_LEFT);
|
||||
|
||||
SelectObject(hdc, hOldFont);
|
||||
SelectObject(hdc, hOldbmp);
|
||||
|
||||
|
@ -4877,7 +4896,7 @@ TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs)
|
|||
|
||||
TRACE("wnd %p, style %x\n", hwnd, GetWindowLongW(hwnd, GWL_STYLE));
|
||||
|
||||
infoPtr = (TREEVIEW_INFO *)Alloc(sizeof(TREEVIEW_INFO));
|
||||
infoPtr = Alloc(sizeof(TREEVIEW_INFO));
|
||||
|
||||
if (infoPtr == NULL)
|
||||
{
|
||||
|
@ -5000,7 +5019,7 @@ TREEVIEW_Destroy(TREEVIEW_INFO *infoPtr)
|
|||
CloseThemeData (GetWindowTheme (infoPtr->hwnd));
|
||||
|
||||
/* Deassociate treeview from the window before doing anything drastic. */
|
||||
SetWindowLongPtrW(infoPtr->hwnd, 0, (DWORD_PTR)NULL);
|
||||
SetWindowLongPtrW(infoPtr->hwnd, 0, 0);
|
||||
|
||||
|
||||
DeleteObject(infoPtr->hDefaultFont);
|
||||
|
@ -5186,7 +5205,7 @@ TREEVIEW_MouseLeave (TREEVIEW_INFO * infoPtr)
|
|||
}
|
||||
|
||||
static LRESULT
|
||||
TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, WPARAM wParam, LPARAM lParam)
|
||||
TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam)
|
||||
{
|
||||
POINT pt;
|
||||
TRACKMOUSEEVENT trackinfo;
|
||||
|
@ -5451,7 +5470,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
switch (uMsg)
|
||||
{
|
||||
case TVM_CREATEDRAGIMAGE:
|
||||
return TREEVIEW_CreateDragImage(infoPtr, wParam, lParam);
|
||||
return TREEVIEW_CreateDragImage(infoPtr, lParam);
|
||||
|
||||
case TVM_DELETEITEM:
|
||||
return TREEVIEW_DeleteItem(infoPtr, (HTREEITEM)lParam);
|
||||
|
@ -5585,10 +5604,10 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TREEVIEW_SetUnicodeFormat(infoPtr, (BOOL)wParam);
|
||||
|
||||
case TVM_SORTCHILDREN:
|
||||
return TREEVIEW_SortChildren(infoPtr, wParam, lParam);
|
||||
return TREEVIEW_SortChildren(infoPtr, lParam);
|
||||
|
||||
case TVM_SORTCHILDRENCB:
|
||||
return TREEVIEW_SortChildrenCB(infoPtr, wParam, (LPTVSORTCB)lParam);
|
||||
return TREEVIEW_SortChildrenCB(infoPtr, (LPTVSORTCB)lParam);
|
||||
|
||||
case WM_CHAR:
|
||||
return TREEVIEW_ProcessLetterKeys( hwnd, wParam, lParam );
|
||||
|
@ -5632,7 +5651,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
case WM_MOUSEMOVE:
|
||||
if (infoPtr->dwStyle & TVS_TRACKSELECT)
|
||||
return TREEVIEW_MouseMove(infoPtr, wParam, lParam);
|
||||
return TREEVIEW_MouseMove(infoPtr, lParam);
|
||||
else
|
||||
return 0;
|
||||
|
||||
|
@ -5669,7 +5688,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
return TREEVIEW_SetFont(infoPtr, (HFONT)wParam, (BOOL)lParam);
|
||||
|
||||
case WM_SETREDRAW:
|
||||
return TREEVIEW_SetRedraw(infoPtr, wParam, lParam);
|
||||
return TREEVIEW_SetRedraw(infoPtr, wParam);
|
||||
|
||||
case WM_SIZE:
|
||||
return TREEVIEW_Size(infoPtr, wParam, lParam);
|
||||
|
@ -5703,7 +5722,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
|||
|
||||
default:
|
||||
/* This mostly catches MFC and Delphi messages. :( */
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP))
|
||||
if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg))
|
||||
TRACE("Unknown msg %04x wp=%08lx lp=%08lx\n", uMsg, wParam, lParam);
|
||||
def:
|
||||
return DefWindowProcW(hwnd, uMsg, wParam, lParam);
|
||||
|
|
|
@ -817,7 +817,6 @@ static void UPDOWN_HandleMouseEvent (UPDOWN_INFO *infoPtr, UINT msg, INT x, INT
|
|||
static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr (hwnd);
|
||||
int temp;
|
||||
static const WCHAR themeClass[] = {'S','p','i','n',0};
|
||||
HTHEME theme;
|
||||
|
||||
|
@ -829,7 +828,7 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
switch(message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
infoPtr = (UPDOWN_INFO*)Alloc (sizeof(UPDOWN_INFO));
|
||||
infoPtr = Alloc (sizeof(UPDOWN_INFO));
|
||||
SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr);
|
||||
|
||||
/* initialize the info struct */
|
||||
|
@ -903,6 +902,8 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
|
||||
/* if initial timer, kill it and start the repeat timer */
|
||||
if(wParam == TIMER_AUTOREPEAT) {
|
||||
int temp;
|
||||
|
||||
KillTimer(hwnd, TIMER_AUTOREPEAT);
|
||||
/* if no accel info given, used default timer */
|
||||
if(infoPtr->AccelCount==0 || infoPtr->AccelVect==0) {
|
||||
|
@ -917,6 +918,8 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
|
||||
/* now, if the mouse is above us, do the thing...*/
|
||||
if(infoPtr->Flags & FLAG_MOUSEIN) {
|
||||
int temp;
|
||||
|
||||
temp = infoPtr->AccelIndex == -1 ? 1 : infoPtr->AccelVect[infoPtr->AccelIndex].nInc;
|
||||
UPDOWN_DoAction(infoPtr, temp, infoPtr->Flags & FLAG_ARROW);
|
||||
|
||||
|
@ -972,13 +975,16 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
case UDM_GETACCEL:
|
||||
if (wParam==0 && lParam==0) return infoPtr->AccelCount;
|
||||
if (wParam && lParam) {
|
||||
temp = min(infoPtr->AccelCount, wParam);
|
||||
int temp = min(infoPtr->AccelCount, wParam);
|
||||
memcpy((void *)lParam, infoPtr->AccelVect, temp*sizeof(UDACCEL));
|
||||
return temp;
|
||||
}
|
||||
return 0;
|
||||
|
||||
case UDM_SETACCEL:
|
||||
{
|
||||
unsigned temp;
|
||||
|
||||
TRACE("UDM_SETACCEL\n");
|
||||
|
||||
if(infoPtr->AccelVect) {
|
||||
|
@ -996,14 +1002,14 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
TRACE("%d: nSec %u nInc %u\n", temp, infoPtr->AccelVect[temp].nSec, infoPtr->AccelVect[temp].nInc);
|
||||
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
case UDM_GETBASE:
|
||||
return infoPtr->Base;
|
||||
|
||||
case UDM_SETBASE:
|
||||
TRACE("UpDown Ctrl new base(%ld), hwnd=%p\n", wParam, hwnd);
|
||||
if (wParam==10 || wParam==16) {
|
||||
temp = infoPtr->Base;
|
||||
WPARAM temp = infoPtr->Base;
|
||||
infoPtr->Base = wParam;
|
||||
return temp;
|
||||
}
|
||||
|
@ -1016,11 +1022,14 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
return (LRESULT)UPDOWN_SetBuddy (infoPtr, (HWND)wParam);
|
||||
|
||||
case UDM_GETPOS:
|
||||
temp = UPDOWN_GetBuddyInt (infoPtr);
|
||||
{
|
||||
int temp = UPDOWN_GetBuddyInt (infoPtr);
|
||||
return MAKELONG(infoPtr->CurVal, temp ? 0 : 1);
|
||||
|
||||
}
|
||||
case UDM_SETPOS:
|
||||
temp = (short)LOWORD(lParam);
|
||||
{
|
||||
int temp = (short)LOWORD(lParam);
|
||||
|
||||
TRACE("UpDown Ctrl new value(%d), hwnd=%p\n", temp, hwnd);
|
||||
if(!UPDOWN_InBounds(infoPtr, temp)) {
|
||||
if(temp < infoPtr->MinVal) temp = infoPtr->MinVal;
|
||||
|
@ -1030,7 +1039,7 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
infoPtr->CurVal = temp;
|
||||
UPDOWN_SetBuddyInt (infoPtr);
|
||||
return wParam; /* return prev value */
|
||||
|
||||
}
|
||||
case UDM_GETRANGE:
|
||||
return MAKELONG(infoPtr->MaxVal, infoPtr->MinVal);
|
||||
|
||||
|
@ -1062,6 +1071,9 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
return infoPtr->CurVal;
|
||||
|
||||
case UDM_SETPOS32:
|
||||
{
|
||||
int temp;
|
||||
|
||||
if(!UPDOWN_InBounds(infoPtr, (int)lParam)) {
|
||||
if((int)lParam < infoPtr->MinVal) lParam = infoPtr->MinVal;
|
||||
if((int)lParam > infoPtr->MaxVal) lParam = infoPtr->MaxVal;
|
||||
|
@ -1070,19 +1082,20 @@ static LRESULT WINAPI UpDownWindowProc(HWND hwnd, UINT message, WPARAM wParam, L
|
|||
infoPtr->CurVal = (int)lParam; /* set the new value */
|
||||
UPDOWN_SetBuddyInt (infoPtr);
|
||||
return temp; /* return prev value */
|
||||
|
||||
}
|
||||
case UDM_GETUNICODEFORMAT:
|
||||
/* we lie a bit here, we're always using Unicode internally */
|
||||
return infoPtr->UnicodeFormat;
|
||||
|
||||
case UDM_SETUNICODEFORMAT:
|
||||
{
|
||||
/* do we really need to honour this flag? */
|
||||
temp = infoPtr->UnicodeFormat;
|
||||
int temp = infoPtr->UnicodeFormat;
|
||||
infoPtr->UnicodeFormat = (BOOL)wParam;
|
||||
return temp;
|
||||
|
||||
}
|
||||
default:
|
||||
if ((message >= WM_USER) && (message < WM_APP))
|
||||
if ((message >= WM_USER) && (message < WM_APP) && !COMCTL32_IsReflectedMessage(message))
|
||||
ERR("unknown msg %04x wp=%04lx lp=%08lx\n", message, wParam, lParam);
|
||||
return DefWindowProcW (hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue