From 200bde0d7692ffda1cc8a5c9714ea00518de0a33 Mon Sep 17 00:00:00 2001 From: The Wine Synchronizer Date: Wed, 25 Apr 2007 08:19:27 +0000 Subject: [PATCH] Autosyncing with Wine HEAD svn path=/trunk/; revision=26492 --- reactos/dll/win32/comctl32/animate.c | 16 +- reactos/dll/win32/comctl32/comboex.c | 48 ++-- reactos/dll/win32/comctl32/comctl32_ros.diff | 8 +- reactos/dll/win32/comctl32/comctl32undoc.c | 18 +- reactos/dll/win32/comctl32/commctrl.c | 138 +++------ reactos/dll/win32/comctl32/datetime.c | 56 ++-- reactos/dll/win32/comctl32/header.c | 33 ++- reactos/dll/win32/comctl32/hotkey.c | 18 +- reactos/dll/win32/comctl32/imagelist.c | 32 +-- reactos/dll/win32/comctl32/imagelist.h | 5 +- reactos/dll/win32/comctl32/ipaddress.c | 32 +-- reactos/dll/win32/comctl32/listview.c | 218 +++++++------- reactos/dll/win32/comctl32/monthcal.c | 81 +++--- reactos/dll/win32/comctl32/pager.c | 28 +- reactos/dll/win32/comctl32/progress.c | 8 +- reactos/dll/win32/comctl32/propsheet.c | 24 +- reactos/dll/win32/comctl32/rebar.c | 130 ++++----- reactos/dll/win32/comctl32/smoothscroll.c | 2 +- reactos/dll/win32/comctl32/status.c | 38 +-- reactos/dll/win32/comctl32/string.c | 4 +- reactos/dll/win32/comctl32/syslink.c | 44 +-- reactos/dll/win32/comctl32/tab.c | 116 +++----- reactos/dll/win32/comctl32/theme_combo.c | 2 +- reactos/dll/win32/comctl32/toolbar.c | 240 +++++++--------- reactos/dll/win32/comctl32/tooltips.c | 28 +- reactos/dll/win32/comctl32/trackbar.c | 131 +++++---- reactos/dll/win32/comctl32/treeview.c | 282 ++++++++++--------- reactos/dll/win32/comctl32/updown.c | 22 +- 28 files changed, 864 insertions(+), 938 deletions(-) diff --git a/reactos/dll/win32/comctl32/animate.c b/reactos/dll/win32/comctl32/animate.c index 5089549a5f1..9f9151d31d2 100644 --- a/reactos/dll/win32/comctl32/animate.c +++ b/reactos/dll/win32/comctl32/animate.c @@ -93,14 +93,14 @@ typedef struct #define ANIMATE_COLOR_NONE 0xffffffff -static void ANIMATE_Notify(ANIMATE_INFO *infoPtr, UINT notif) +static void ANIMATE_Notify(const ANIMATE_INFO *infoPtr, UINT notif) { SendMessageW(infoPtr->hwndNotify, WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(infoPtr->hwndSelf), notif), (LPARAM)infoPtr->hwndSelf); } -static BOOL ANIMATE_LoadResW(ANIMATE_INFO *infoPtr, HINSTANCE hInst, LPWSTR lpName) +static BOOL ANIMATE_LoadResW(ANIMATE_INFO *infoPtr, HINSTANCE hInst, LPCWSTR lpName) { static const WCHAR aviW[] = { 'A', 'V', 'I', 0 }; HRSRC hrsrc; @@ -217,7 +217,7 @@ static void ANIMATE_Free(ANIMATE_INFO *infoPtr) infoPtr->transparentColor = ANIMATE_COLOR_NONE; } -static void ANIMATE_TransparentBlt(ANIMATE_INFO *infoPtr, HDC hdcDest, HDC hdcSource) +static void ANIMATE_TransparentBlt(ANIMATE_INFO const *infoPtr, HDC hdcDest, HDC hdcSource) { HDC hdcMask; HBITMAP hbmMask; @@ -251,8 +251,8 @@ static void ANIMATE_TransparentBlt(ANIMATE_INFO *infoPtr, HDC hdcDest, HDC hdcSo static BOOL ANIMATE_PaintFrame(ANIMATE_INFO* infoPtr, HDC hDC) { - void *pBitmapData; - LPBITMAPINFO pBitmapInfo; + void const *pBitmapData; + BITMAPINFO const *pBitmapInfo; HDC hdcMem; HBITMAP hbmOld; int nOffsetX = 0; @@ -772,7 +772,7 @@ static BOOL ANIMATE_Stop(ANIMATE_INFO *infoPtr) } -static BOOL ANIMATE_Create(HWND hWnd, LPCREATESTRUCTW lpcs) +static BOOL ANIMATE_Create(HWND hWnd, const CREATESTRUCTW *lpcs) { static const WCHAR msvfw32W[] = { 'm', 's', 'v', 'f', 'w', '3', '2', '.', 'd', 'l', 'l', 0 }; ANIMATE_INFO *infoPtr; @@ -825,7 +825,7 @@ static LRESULT ANIMATE_Destroy(ANIMATE_INFO *infoPtr) } -static BOOL ANIMATE_EraseBackground(ANIMATE_INFO *infoPtr, HDC hdc) +static BOOL ANIMATE_EraseBackground(ANIMATE_INFO const *infoPtr, HDC hdc) { RECT rect; HBRUSH hBrush = 0; @@ -843,7 +843,7 @@ static BOOL ANIMATE_EraseBackground(ANIMATE_INFO *infoPtr, HDC hdc) } -static LRESULT ANIMATE_StyleChanged(ANIMATE_INFO *infoPtr, WPARAM wStyleType, LPSTYLESTRUCT lpss) +static LRESULT ANIMATE_StyleChanged(ANIMATE_INFO *infoPtr, WPARAM wStyleType, const STYLESTRUCT *lpss) { TRACE("(styletype=%x, styleOld=0x%08x, styleNew=0x%08x)\n", wStyleType, lpss->styleOld, lpss->styleNew); diff --git a/reactos/dll/win32/comctl32/comboex.c b/reactos/dll/win32/comctl32/comboex.c index 58bcb971bd8..64e7b1203fa 100644 --- a/reactos/dll/win32/comctl32/comboex.c +++ b/reactos/dll/win32/comctl32/comboex.c @@ -135,23 +135,23 @@ static LRESULT WINAPI COMBOEX_ComboWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, static LRESULT COMBOEX_Destroy (COMBOEX_INFO *infoPtr); typedef INT (WINAPI *cmp_func_t)(LPCWSTR, LPCWSTR); -inline static BOOL is_textW(LPCWSTR str) +static inline BOOL is_textW(LPCWSTR str) { return str && str != LPSTR_TEXTCALLBACKW; } -inline static BOOL is_textA(LPCSTR str) +static inline BOOL is_textA(LPCSTR str) { return str && str != LPSTR_TEXTCALLBACKA; } -inline static LPCSTR debugstr_txt(LPCWSTR str) +static inline LPCSTR debugstr_txt(LPCWSTR str) { if (str == LPSTR_TEXTCALLBACKW) return "(callback)"; return debugstr_w(str); } -static void COMBOEX_DumpItem (CBE_ITEMDATA *item) +static void COMBOEX_DumpItem (CBE_ITEMDATA const *item) { TRACE("item %p - mask=%08x, pszText=%p, cchTM=%d, iImage=%d\n", item, item->mask, item->pszText, item->cchTextMax, item->iImage); @@ -162,7 +162,7 @@ static void COMBOEX_DumpItem (CBE_ITEMDATA *item) } -static void COMBOEX_DumpInput (COMBOBOXEXITEMW *input) +static void COMBOEX_DumpInput (COMBOBOXEXITEMW const *input) { TRACE("input - mask=%08x, iItem=%d, pszText=%p, cchTM=%d, iImage=%d\n", input->mask, input->iItem, input->pszText, input->cchTextMax, @@ -174,13 +174,13 @@ static void COMBOEX_DumpInput (COMBOBOXEXITEMW *input) } -inline static CBE_ITEMDATA *get_item_data(COMBOEX_INFO *infoPtr, INT index) +static inline CBE_ITEMDATA *get_item_data(COMBOEX_INFO *infoPtr, INT index) { return (CBE_ITEMDATA *)SendMessageW (infoPtr->hwndCombo, CB_GETITEMDATA, (WPARAM)index, 0); } -inline static cmp_func_t get_cmp_func(COMBOEX_INFO *infoPtr) +static inline cmp_func_t get_cmp_func(COMBOEX_INFO const *infoPtr) { return infoPtr->dwExtStyle & CBES_EX_CASESENSITIVE ? lstrcmpW : lstrcmpiW; } @@ -283,11 +283,11 @@ static void COMBOEX_FreeText (CBE_ITEMDATA *item) } -static INT COMBOEX_GetIndex(COMBOEX_INFO *infoPtr, CBE_ITEMDATA *item) +static INT COMBOEX_GetIndex(COMBOEX_INFO const *infoPtr, CBE_ITEMDATA const *item) { - CBE_ITEMDATA *moving; + CBE_ITEMDATA const *moving; INT index; - + moving = infoPtr->items; index = infoPtr->nb_items - 1; @@ -493,7 +493,7 @@ static CBE_ITEMDATA * COMBOEX_FindItem(COMBOEX_INFO *infoPtr, INT index) } -static inline BOOL COMBOEX_HasEdit(COMBOEX_INFO *infoPtr) +static inline BOOL COMBOEX_HasEdit(COMBOEX_INFO const *infoPtr) { return infoPtr->hwndEdit ? TRUE : FALSE; } @@ -530,7 +530,7 @@ static UINT COMBOEX_GetListboxText(COMBOEX_INFO *infoPtr, int n, LPWSTR buf) static INT COMBOEX_DeleteItem (COMBOEX_INFO *infoPtr, INT index) { - CBE_ITEMDATA *item; + CBE_ITEMDATA const *item; TRACE("(index=%d)\n", index); @@ -601,14 +601,14 @@ static BOOL COMBOEX_GetItemA (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA *cit) } -inline static BOOL COMBOEX_HasEditChanged (COMBOEX_INFO *infoPtr) +static inline BOOL COMBOEX_HasEditChanged (COMBOEX_INFO const *infoPtr) { return COMBOEX_HasEdit(infoPtr) && (infoPtr->flags & WCBE_EDITHASCHANGED) == WCBE_EDITHASCHANGED; } -static INT COMBOEX_InsertItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit) +static INT COMBOEX_InsertItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW const *cit) { INT index; CBE_ITEMDATA *item; @@ -693,7 +693,7 @@ static INT COMBOEX_InsertItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit) } -static INT COMBOEX_InsertItemA (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA *cit) +static INT COMBOEX_InsertItemA (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA const *cit) { COMBOBOXEXITEMW citW; LPWSTR wstr = NULL; @@ -817,7 +817,7 @@ static BOOL COMBOEX_SetItemW (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMW *cit) return TRUE; } -static BOOL COMBOEX_SetItemA (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA *cit) +static BOOL COMBOEX_SetItemA (COMBOEX_INFO *infoPtr, COMBOBOXEXITEMA const *cit) { COMBOBOXEXITEMW citW; LPWSTR wstr = NULL; @@ -875,7 +875,8 @@ COMBOEX_FindStringExact (COMBOEX_INFO *infoPtr, INT start, LPCWSTR str) static DWORD_PTR COMBOEX_GetItemData (COMBOEX_INFO *infoPtr, INT index) { - CBE_ITEMDATA *item1, *item2; + CBE_ITEMDATA const *item1; + CBE_ITEMDATA const *item2; DWORD_PTR ret = 0; item1 = get_item_data(infoPtr, index); @@ -914,7 +915,8 @@ static INT COMBOEX_SetCursel (COMBOEX_INFO *infoPtr, INT index) static DWORD_PTR COMBOEX_SetItemData (COMBOEX_INFO *infoPtr, INT index, DWORD_PTR data) { - CBE_ITEMDATA *item1, *item2; + CBE_ITEMDATA *item1; + CBE_ITEMDATA const *item2; item1 = get_item_data(infoPtr, index); if ((item1 != NULL) && ((LRESULT)item1 != CB_ERR)) { @@ -933,7 +935,7 @@ static DWORD_PTR COMBOEX_SetItemData (COMBOEX_INFO *infoPtr, INT index, DWORD_PT } -static INT COMBOEX_SetItemHeight (COMBOEX_INFO *infoPtr, INT index, UINT height) +static INT COMBOEX_SetItemHeight (COMBOEX_INFO const *infoPtr, INT index, UINT height) { RECT cb_wrect, cbx_wrect, cbx_crect; @@ -967,7 +969,7 @@ static INT COMBOEX_SetItemHeight (COMBOEX_INFO *infoPtr, INT index, UINT height) /* *** WM_xxx message support *** */ -static LRESULT COMBOEX_Create (HWND hwnd, LPCREATESTRUCTA cs) +static LRESULT COMBOEX_Create (HWND hwnd, CREATESTRUCTA const *cs) { static const WCHAR COMBOBOX[] = { 'C', 'o', 'm', 'b', 'o', 'B', 'o', 'x', 0 }; static const WCHAR EDIT[] = { 'E', 'D', 'I', 'T', 0 }; @@ -1287,7 +1289,7 @@ static LRESULT COMBOEX_Command (COMBOEX_INFO *infoPtr, WPARAM wParam, LPARAM lPa } -static BOOL COMBOEX_WM_DeleteItem (COMBOEX_INFO *infoPtr, DELETEITEMSTRUCT *dis) +static BOOL COMBOEX_WM_DeleteItem (COMBOEX_INFO *infoPtr, DELETEITEMSTRUCT const *dis) { CBE_ITEMDATA *item, *olditem; NMCOMBOBOXEXW nmcit; @@ -1333,7 +1335,7 @@ static BOOL COMBOEX_WM_DeleteItem (COMBOEX_INFO *infoPtr, DELETEITEMSTRUCT *dis) } -static LRESULT COMBOEX_DrawItem (COMBOEX_INFO *infoPtr, DRAWITEMSTRUCT *dis) +static LRESULT COMBOEX_DrawItem (COMBOEX_INFO *infoPtr, DRAWITEMSTRUCT const *dis) { static const WCHAR nil[] = { 0 }; CBE_ITEMDATA *item = 0; @@ -1606,7 +1608,7 @@ static LRESULT COMBOEX_Destroy (COMBOEX_INFO *infoPtr) } -static LRESULT COMBOEX_MeasureItem (COMBOEX_INFO *infoPtr, MEASUREITEMSTRUCT *mis) +static LRESULT COMBOEX_MeasureItem (COMBOEX_INFO const *infoPtr, MEASUREITEMSTRUCT *mis) { static const WCHAR strW[] = { 'W', 0 }; SIZE mysize; diff --git a/reactos/dll/win32/comctl32/comctl32_ros.diff b/reactos/dll/win32/comctl32/comctl32_ros.diff index d4b993eb903..5809ac482f3 100644 --- a/reactos/dll/win32/comctl32/comctl32_ros.diff +++ b/reactos/dll/win32/comctl32/comctl32_ros.diff @@ -2,7 +2,7 @@ Index: listview.c =================================================================== --- listview.c (revision 23123) +++ listview.c (working copy) -@@ -3804,9 +3804,8 @@ +@@ -3805,9 +3805,8 @@ if (himl && lvItem.iImage >= 0 && !IsRectEmpty(&rcIcon)) { TRACE("iImage=%d\n", lvItem.iImage); @@ -18,7 +18,7 @@ Index: propsheet.c =================================================================== --- propsheet.c (revision 25766) +++ propsheet.c (working copy) -@@ -2429,6 +2429,28 @@ +@@ -2434,6 +2434,28 @@ return FALSE; } @@ -47,7 +47,7 @@ Index: propsheet.c /****************************************************************************** * PROPSHEET_SetWizButtons * -@@ -2451,17 +2473,6 @@ +@@ -2456,17 +2478,6 @@ EnableWindow(hwndNext, FALSE); EnableWindow(hwndFinish, FALSE); @@ -65,7 +65,7 @@ Index: propsheet.c if (dwFlags & PSWIZB_BACK) EnableWindow(hwndBack, TRUE); -@@ -2491,6 +2502,32 @@ +@@ -2496,6 +2507,32 @@ } else if (!(dwFlags & PSWIZB_DISABLEDFINISH)) EnableWindow(hwndFinish, TRUE); diff --git a/reactos/dll/win32/comctl32/comctl32undoc.c b/reactos/dll/win32/comctl32/comctl32undoc.c index 7ef2c33fdf8..d17436f58aa 100644 --- a/reactos/dll/win32/comctl32/comctl32undoc.c +++ b/reactos/dll/win32/comctl32/comctl32undoc.c @@ -380,7 +380,7 @@ void WINAPI FreeMRUList (HANDLE hMRUList) INT WINAPI FindMRUData (HANDLE hList, LPCVOID lpData, DWORD cbData, LPINT lpRegNum) { - LPWINEMRULIST mp = (LPWINEMRULIST)hList; + const WINEMRULIST *mp = (LPWINEMRULIST)hList; INT ret; UINT i; LPSTR dataA = NULL; @@ -726,7 +726,7 @@ static HANDLE CreateMRUListLazy_common(LPWINEMRULIST mp) * * See CreateMRUListLazyA. */ -HANDLE WINAPI CreateMRUListLazyW (LPCREATEMRULISTW lpcml, DWORD dwParam2, +HANDLE WINAPI CreateMRUListLazyW (const CREATEMRULISTW *lpcml, DWORD dwParam2, DWORD dwParam3, DWORD dwParam4) { LPWINEMRULIST mp; @@ -760,7 +760,7 @@ HANDLE WINAPI CreateMRUListLazyW (LPCREATEMRULISTW lpcml, DWORD dwParam2, * RETURNS * Handle to MRU list. */ -HANDLE WINAPI CreateMRUListLazyA (LPCREATEMRULISTA lpcml, DWORD dwParam2, +HANDLE WINAPI CreateMRUListLazyA (const CREATEMRULISTA *lpcml, DWORD dwParam2, DWORD dwParam3, DWORD dwParam4) { LPWINEMRULIST mp; @@ -787,7 +787,7 @@ HANDLE WINAPI CreateMRUListLazyA (LPCREATEMRULISTA lpcml, DWORD dwParam2, * * See CreateMRUListA. */ -HANDLE WINAPI CreateMRUListW (LPCREATEMRULISTW lpcml) +HANDLE WINAPI CreateMRUListW (const CREATEMRULISTW *lpcml) { return CreateMRUListLazyW(lpcml, 0, 0, 0); } @@ -803,7 +803,7 @@ HANDLE WINAPI CreateMRUListW (LPCREATEMRULISTW lpcml) * RETURNS * Handle to MRU list. */ -HANDLE WINAPI CreateMRUListA (LPCREATEMRULISTA lpcml) +HANDLE WINAPI CreateMRUListA (const CREATEMRULISTA *lpcml) { return CreateMRUListLazyA (lpcml, 0, 0, 0); } @@ -830,8 +830,8 @@ HANDLE WINAPI CreateMRUListA (LPCREATEMRULISTA lpcml) INT WINAPI EnumMRUListW (HANDLE hList, INT nItemPos, LPVOID lpBuffer, DWORD nBufferSize) { - LPWINEMRULIST mp = (LPWINEMRULIST) hList; - LPWINEMRUITEM witem; + const WINEMRULIST *mp = (LPWINEMRULIST) hList; + const WINEMRUITEM *witem; INT desired, datasize; if (nItemPos >= mp->cursize) return -1; @@ -855,7 +855,7 @@ INT WINAPI EnumMRUListW (HANDLE hList, INT nItemPos, LPVOID lpBuffer, INT WINAPI EnumMRUListA (HANDLE hList, INT nItemPos, LPVOID lpBuffer, DWORD nBufferSize) { - LPWINEMRULIST mp = (LPWINEMRULIST) hList; + const WINEMRULIST *mp = (LPWINEMRULIST) hList; LPWINEMRUITEM witem; INT desired, datasize; DWORD lenA; @@ -1019,7 +1019,7 @@ typedef struct tagNOTIFYDATA * DoNotify [Internal] */ -static LRESULT DoNotify (LPNOTIFYDATA lpNotify, UINT uCode, LPNMHDR lpHdr) +static LRESULT DoNotify (const NOTIFYDATA *lpNotify, UINT uCode, LPNMHDR lpHdr) { NMHDR nmhdr; LPNMHDR lpNmh = NULL; diff --git a/reactos/dll/win32/comctl32/commctrl.c b/reactos/dll/win32/comctl32/commctrl.c index 9cfdc9bb512..97810b34282 100644 --- a/reactos/dll/win32/comctl32/commctrl.c +++ b/reactos/dll/win32/comctl32/commctrl.c @@ -29,8 +29,6 @@ * * TODO * -- implement GetMUILanguage + InitMUILanguage - * -- LibMain => DLLMain ("DLLMain takes over the functionality of both the - * LibMain and the WEP function.", MSDN) * -- finish NOTES for MenuHelp, GetEffectiveClientRect and GetStatusTextW * -- FIXMEs + BUGS (search for them) * @@ -129,13 +127,20 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) /* Get all the colors at DLL load */ COMCTL32_RefreshSysColors(); - /* register all Win95 common control classes */ + /* like comctl32 5.82+ register all the common control classes */ ANIMATE_Register (); + COMBOEX_Register (); + DATETIME_Register (); FLATSB_Register (); HEADER_Register (); HOTKEY_Register (); + IPADDRESS_Register (); LISTVIEW_Register (); + MONTHCAL_Register (); + NATIVEFONT_Register (); + PAGER_Register (); PROGRESS_Register (); + REBAR_Register (); STATUS_Register (); SYSLINK_Register (); TAB_Register (); @@ -373,10 +378,10 @@ ShowHideMenuCtl (HWND hwnd, UINT_PTR uFlags, LPINT lpInfo) */ VOID WINAPI -GetEffectiveClientRect (HWND hwnd, LPRECT lpRect, LPINT lpInfo) +GetEffectiveClientRect (HWND hwnd, LPRECT lpRect, const INT *lpInfo) { RECT rcCtrl; - INT *lpRun; + const INT *lpRun; HWND hwndCtrl; TRACE("(%p %p %p)\n", @@ -421,7 +426,7 @@ GetEffectiveClientRect (HWND hwnd, LPRECT lpRect, LPINT lpInfo) * (will be written ...) */ -void WINAPI DrawStatusTextW (HDC hdc, LPRECT lprc, LPCWSTR text, UINT style) +void WINAPI DrawStatusTextW (HDC hdc, LPCRECT lprc, LPCWSTR text, UINT style) { RECT r = *lprc; UINT border = BDR_SUNKENOUTER; @@ -470,7 +475,7 @@ void WINAPI DrawStatusTextW (HDC hdc, LPRECT lprc, LPCWSTR text, UINT style) * No return value. */ -void WINAPI DrawStatusTextA (HDC hdc, LPRECT lprc, LPCSTR text, UINT style) +void WINAPI DrawStatusTextA (HDC hdc, LPCRECT lprc, LPCSTR text, UINT style) { INT len; LPWSTR textW = NULL; @@ -593,9 +598,8 @@ CreateUpDownControl (DWORD style, INT x, INT y, INT cx, INT cy, * No return values. * * NOTES - * This function is just a dummy. - * The Win95 controls are registered at the DLL's initialization. - * To register other controls InitCommonControlsEx() must be used. + * This function is just a dummy - all the controls are registered at + * the DLL's initialization. See InitCommonContolsEx for details. */ VOID WINAPI @@ -617,81 +621,24 @@ InitCommonControls (void) * Failure: FALSE * * NOTES - * Only the additional common controls are registered by this function. - * The Win95 controls are registered at the DLL's initialization. + * Probaly all versions of comctl32 initializes the Win95 controls in DllMain + * during DLL initializaiton. Starting from comctl32 v5.82 all the controls + * are initialized there. We follow this behaviour and this function is just + * a dummy. * - * FIXME - * implement the following control classes: - * ICC_LINK_CLASS - * ICC_STANDARD_CLASSES + * Note: when writing programs under Windows, if you don't call any function + * from comctl32 the linker may not link this DLL. If InitCommonControlsEx + * was the only comctl32 function you were calling and you remove it you may + * have a false impression that InitCommonControlsEx actually did something. */ BOOL WINAPI InitCommonControlsEx (const INITCOMMONCONTROLSEX *lpInitCtrls) { - INT cCount; - DWORD dwMask; - - if (!lpInitCtrls) - return FALSE; - if (lpInitCtrls->dwSize != sizeof(INITCOMMONCONTROLSEX)) - return FALSE; + if (!lpInitCtrls || lpInitCtrls->dwSize != sizeof(INITCOMMONCONTROLSEX)) + return FALSE; TRACE("(0x%08x)\n", lpInitCtrls->dwICC); - - for (cCount = 0; cCount < 32; cCount++) { - dwMask = 1 << cCount; - if (!(lpInitCtrls->dwICC & dwMask)) - continue; - - switch (lpInitCtrls->dwICC & dwMask) { - /* dummy initialization */ - case ICC_ANIMATE_CLASS: - case ICC_BAR_CLASSES: - case ICC_LISTVIEW_CLASSES: - case ICC_TREEVIEW_CLASSES: - case ICC_TAB_CLASSES: - case ICC_UPDOWN_CLASS: - case ICC_PROGRESS_CLASS: - case ICC_HOTKEY_CLASS: - break; - - /* advanced classes - not included in Win95 */ - case ICC_DATE_CLASSES: - MONTHCAL_Register (); - DATETIME_Register (); - break; - - case ICC_USEREX_CLASSES: - COMBOEX_Register (); - break; - - case ICC_COOL_CLASSES: - REBAR_Register (); - break; - - case ICC_INTERNET_CLASSES: - IPADDRESS_Register (); - break; - - case ICC_PAGESCROLLER_CLASS: - PAGER_Register (); - break; - - case ICC_NATIVEFNTCTL_CLASS: - NATIVEFONT_Register (); - break; - - case ICC_LINK_CLASS: - SYSLINK_Register (); - break; - - default: - FIXME("Unknown class! dwICC=0x%X\n", dwMask); - break; - } - } - return TRUE; } @@ -739,19 +686,21 @@ CreateToolbarEx (HWND hwnd, DWORD style, UINT wID, INT nBitmaps, /* set bitmap and button size */ /*If CreateToolbarEx receives 0, windows sets default values*/ - if (dxBitmap <= 0) + if (dxBitmap < 0) dxBitmap = 16; - if (dyBitmap <= 0) - dyBitmap = 15; - SendMessageW (hwndTB, TB_SETBITMAPSIZE, 0, - MAKELPARAM((WORD)dxBitmap, (WORD)dyBitmap)); + if (dyBitmap < 0) + dyBitmap = 16; + if (dxBitmap == 0 || dyBitmap == 0) + dxBitmap = dyBitmap = 16; + SendMessageW(hwndTB, TB_SETBITMAPSIZE, 0, MAKELPARAM(dxBitmap, dyBitmap)); - if (dxButton <= 0) - dxButton = 24; - if (dyButton <= 0) - dyButton = 22; - SendMessageW (hwndTB, TB_SETBUTTONSIZE, 0, - MAKELPARAM((WORD)dxButton, (WORD)dyButton)); + if (dxButton < 0) + dxButton = dxBitmap; + if (dyButton < 0) + dyButton = dyBitmap; + /* TB_SETBUTTONSIZE -> TB_SETBITMAPSIZE bug introduced for Windows compatibility */ + if (dxButton != 0 && dyButton != 0) + SendMessageW(hwndTB, TB_SETBITMAPSIZE, 0, MAKELPARAM(dxButton, dyButton)); /* add bitmaps */ @@ -795,7 +744,8 @@ CreateMappedBitmap (HINSTANCE hInstance, INT_PTR idBitmap, UINT wFlags, { HGLOBAL hglb; HRSRC hRsrc; - LPBITMAPINFOHEADER lpBitmap, lpBitmapInfo; + const BITMAPINFOHEADER *lpBitmap; + LPBITMAPINFOHEADER lpBitmapInfo; UINT nSize, nColorTableSize, iColor; RGBQUAD *pColorTable; INT i, iMaps, nWidth, nHeight; @@ -871,7 +821,7 @@ CreateMappedBitmap (HINSTANCE hInstance, INT_PTR idBitmap, UINT wFlags, if (hbm) { HDC hdcDst = CreateCompatibleDC (hdcScreen); HBITMAP hbmOld = SelectObject (hdcDst, hbm); - LPBYTE lpBits = (LPBYTE)(lpBitmap + 1); + const BYTE *lpBits = (const BYTE *)(lpBitmap + 1); lpBits += nColorTableSize * sizeof(RGBQUAD); StretchDIBits (hdcDst, 0, 0, nWidth, nHeight, 0, 0, nWidth, nHeight, lpBits, (LPBITMAPINFO)lpBitmapInfo, DIB_RGB_COLORS, @@ -1139,8 +1089,8 @@ BOOL WINAPI SetWindowSubclass (HWND hWnd, SUBCLASSPROC pfnSubclass, BOOL WINAPI GetWindowSubclass (HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uID, DWORD_PTR *pdwRef) { - LPSUBCLASS_INFO stack; - LPSUBCLASSPROCS proc; + const SUBCLASS_INFO *stack; + const SUBCLASSPROCS *proc; TRACE ("(%p, %p, %x, %p)\n", hWnd, pfnSubclass, uID, pdwRef); @@ -1306,7 +1256,7 @@ LRESULT WINAPI DefSubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar else ret = CallWindowProcA (stack->origproc, hWnd, uMsg, wParam, lParam); } else { - LPSUBCLASSPROCS proc = stack->stackpos; + const SUBCLASSPROCS *proc = stack->stackpos; stack->stackpos = stack->stackpos->next; /* call the Subclass procedure from the stack */ ret = proc->subproc (hWnd, uMsg, wParam, lParam, @@ -1541,7 +1491,7 @@ static inline int IsDelimiter(WCHAR c) return FALSE; } -static int CALLBACK PathWordBreakProc(LPWSTR lpch, int ichCurrent, int cch, int code) +static int CALLBACK PathWordBreakProc(LPCWSTR lpch, int ichCurrent, int cch, int code) { if (code == WB_ISDELIMITER) return IsDelimiter(lpch[ichCurrent]); diff --git a/reactos/dll/win32/comctl32/datetime.c b/reactos/dll/win32/comctl32/datetime.c index 08e0d5814c9..4cc124df713 100644 --- a/reactos/dll/win32/comctl32/datetime.c +++ b/reactos/dll/win32/comctl32/datetime.c @@ -129,15 +129,15 @@ extern int MONTHCAL_MonthLength(int month, int year); #define DTHT_MCPOPUP 0x300 /* & DTHT_DATEFIELD 0 when DATETIME_KeyDown */ #define DTHT_GOTFOCUS 0x400 /* tests for date-fields */ -static BOOL DATETIME_SendSimpleNotify (DATETIME_INFO *infoPtr, UINT code); -static BOOL DATETIME_SendDateTimeChangeNotify (DATETIME_INFO *infoPtr); +static BOOL DATETIME_SendSimpleNotify (const DATETIME_INFO *infoPtr, UINT code); +static BOOL DATETIME_SendDateTimeChangeNotify (const DATETIME_INFO *infoPtr); extern void MONTHCAL_CopyTime(const SYSTEMTIME *from, SYSTEMTIME *to); static const WCHAR allowedformatchars[] = {'d', 'h', 'H', 'm', 'M', 's', 't', 'y', 'X', '\'', 0}; static const int maxrepetition [] = {4,2,2,2,4,2,2,4,-1,-1}; static DWORD -DATETIME_GetSystemTime (DATETIME_INFO *infoPtr, SYSTEMTIME *lprgSysTimeArray) +DATETIME_GetSystemTime (const DATETIME_INFO *infoPtr, SYSTEMTIME *lprgSysTimeArray) { if (!lprgSysTimeArray) return GDT_NONE; @@ -152,7 +152,7 @@ DATETIME_GetSystemTime (DATETIME_INFO *infoPtr, SYSTEMTIME *lprgSysTimeArray) static BOOL -DATETIME_SetSystemTime (DATETIME_INFO *infoPtr, DWORD flag, SYSTEMTIME *lprgSysTimeArray) +DATETIME_SetSystemTime (DATETIME_INFO *infoPtr, DWORD flag, const SYSTEMTIME *lprgSysTimeArray) { if (!lprgSysTimeArray) return 0; @@ -160,26 +160,28 @@ DATETIME_SetSystemTime (DATETIME_INFO *infoPtr, DWORD flag, SYSTEMTIME *lprgSysT lprgSysTimeArray->wYear, lprgSysTimeArray->wMonth, lprgSysTimeArray->wDay, lprgSysTimeArray->wHour, lprgSysTimeArray->wMinute, lprgSysTimeArray->wSecond); - if (lprgSysTimeArray->wYear < 1601 || lprgSysTimeArray->wYear > 30827 || - lprgSysTimeArray->wMonth < 1 || lprgSysTimeArray->wMonth > 12 || - lprgSysTimeArray->wDayOfWeek > 6 || - lprgSysTimeArray->wDay < 1 || lprgSysTimeArray->wDay > 31 || - lprgSysTimeArray->wHour > 23 || - lprgSysTimeArray->wMinute > 59 || - lprgSysTimeArray->wSecond > 59 || - lprgSysTimeArray->wMilliseconds > 999 - ) - return 0; - if (flag == GDT_VALID) { + if (lprgSysTimeArray->wYear < 1601 || lprgSysTimeArray->wYear > 30827 || + lprgSysTimeArray->wMonth < 1 || lprgSysTimeArray->wMonth > 12 || + lprgSysTimeArray->wDayOfWeek > 6 || + lprgSysTimeArray->wDay < 1 || lprgSysTimeArray->wDay > 31 || + lprgSysTimeArray->wHour > 23 || + lprgSysTimeArray->wMinute > 59 || + lprgSysTimeArray->wSecond > 59 || + lprgSysTimeArray->wMilliseconds > 999 + ) + return 0; + infoPtr->dateValid = TRUE; MONTHCAL_CopyTime (lprgSysTimeArray, &infoPtr->date); SendMessageW (infoPtr->hMonthCal, MCM_SETCURSEL, 0, (LPARAM)(&infoPtr->date)); SendMessageW (infoPtr->hwndCheckbut, BM_SETCHECK, BST_CHECKED, 0); - } else if (flag == GDT_NONE) { + } else if ((infoPtr->dwStyle & DTS_SHOWNONE) && (flag == GDT_NONE)) { infoPtr->dateValid = FALSE; SendMessageW (infoPtr->hwndCheckbut, BM_SETCHECK, BST_UNCHECKED, 0); } + else + return 0; InvalidateRect(infoPtr->hwndSelf, NULL, TRUE); return TRUE; @@ -279,7 +281,7 @@ DATETIME_SetFormatW (DATETIME_INFO *infoPtr, LPCWSTR lpszFormat) DATETIME_UseFormat (infoPtr, lpszFormat); InvalidateRect (infoPtr->hwndSelf, NULL, TRUE); - return infoPtr->nrFields; + return 1; } @@ -302,7 +304,7 @@ DATETIME_SetFormatA (DATETIME_INFO *infoPtr, LPCSTR lpszFormat) static void -DATETIME_ReturnTxt (DATETIME_INFO *infoPtr, int count, LPWSTR result, int resultSize) +DATETIME_ReturnTxt (const DATETIME_INFO *infoPtr, int count, LPWSTR result, int resultSize) { static const WCHAR fmt_dW[] = { '%', 'd', 0 }; static const WCHAR fmt__2dW[] = { '%', '.', '2', 'd', 0 }; @@ -523,7 +525,7 @@ DATETIME_IncreaseField (DATETIME_INFO *infoPtr, int number, int delta) static void -DATETIME_ReturnFieldWidth (DATETIME_INFO *infoPtr, HDC hdc, int count, SHORT *fieldWidthPtr) +DATETIME_ReturnFieldWidth (const DATETIME_INFO *infoPtr, HDC hdc, int count, SHORT *fieldWidthPtr) { /* fields are a fixed width, determined by the largest possible string */ /* presumably, these widths should be language dependent */ @@ -675,7 +677,7 @@ DATETIME_Refresh (DATETIME_INFO *infoPtr, HDC hdc) static INT -DATETIME_HitTest (DATETIME_INFO *infoPtr, POINT pt) +DATETIME_HitTest (const DATETIME_INFO *infoPtr, POINT pt) { int i; @@ -733,7 +735,7 @@ DATETIME_LButtonDown (DATETIME_INFO *infoPtr, WORD wKey, INT x, INT y) if(IsWindowVisible(infoPtr->hMonthCal)) { ShowWindow(infoPtr->hMonthCal, SW_HIDE); } else { - SYSTEMTIME *lprgSysTimeArray = &infoPtr->date; + const SYSTEMTIME *lprgSysTimeArray = &infoPtr->date; TRACE("update calendar %04d/%02d/%02d\n", lprgSysTimeArray->wYear, lprgSysTimeArray->wMonth, lprgSysTimeArray->wDay); SendMessageW(infoPtr->hMonthCal, MCM_SETCURSEL, 0, (LPARAM)(&infoPtr->date)); @@ -814,7 +816,7 @@ DATETIME_Enable (DATETIME_INFO *infoPtr, BOOL bEnable) static LRESULT -DATETIME_EraseBackground (DATETIME_INFO *infoPtr, HDC hdc) +DATETIME_EraseBackground (const DATETIME_INFO *infoPtr, HDC hdc) { HBRUSH hBrush, hSolidBrush = NULL; RECT rc; @@ -1042,7 +1044,7 @@ DATETIME_KillFocus (DATETIME_INFO *infoPtr, HWND lostFocus) static LRESULT -DATETIME_NCCreate (HWND hwnd, LPCREATESTRUCTW lpcs) +DATETIME_NCCreate (HWND hwnd, const CREATESTRUCTW *lpcs) { DWORD dwExStyle = GetWindowLongW(hwnd, GWL_EXSTYLE); /* force control to have client edge */ @@ -1070,7 +1072,7 @@ DATETIME_SetFocus (DATETIME_INFO *infoPtr, HWND lostFocus) static BOOL -DATETIME_SendDateTimeChangeNotify (DATETIME_INFO *infoPtr) +DATETIME_SendDateTimeChangeNotify (const DATETIME_INFO *infoPtr) { NMDATETIMECHANGE dtdtc; @@ -1087,7 +1089,7 @@ DATETIME_SendDateTimeChangeNotify (DATETIME_INFO *infoPtr) static BOOL -DATETIME_SendSimpleNotify (DATETIME_INFO *infoPtr, UINT code) +DATETIME_SendSimpleNotify (const DATETIME_INFO *infoPtr, UINT code) { NMHDR nmhdr; @@ -1140,7 +1142,7 @@ DATETIME_Size (DATETIME_INFO *infoPtr, WORD flags, INT width, INT height) static LRESULT -DATETIME_StyleChanged(DATETIME_INFO *infoPtr, WPARAM wStyleType, LPSTYLESTRUCT lpss) +DATETIME_StyleChanged(DATETIME_INFO *infoPtr, WPARAM wStyleType, const STYLESTRUCT *lpss) { static const WCHAR buttonW[] = { 'b', 'u', 't', 't', 'o', 'n', 0 }; @@ -1185,7 +1187,7 @@ DATETIME_SetFont (DATETIME_INFO *infoPtr, HFONT font, BOOL repaint) static LRESULT -DATETIME_Create (HWND hwnd, LPCREATESTRUCTW lpcs) +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)); diff --git a/reactos/dll/win32/comctl32/header.c b/reactos/dll/win32/comctl32/header.c index 4907fdf2875..b80ef74642d 100644 --- a/reactos/dll/win32/comctl32/header.c +++ b/reactos/dll/win32/comctl32/header.c @@ -108,12 +108,12 @@ typedef struct static BOOL HEADER_PrepareCallbackItems(HWND hwnd, INT iItem, INT reqMask); static void HEADER_FreeCallbackItems(HEADER_ITEM *lpItem); static LRESULT HEADER_SendNotify(HWND hwnd, UINT code, NMHDR *hdr); -static LRESULT HEADER_SendCtrlCustomDraw(HWND hwnd, DWORD dwDrawStage, HDC hdc, RECT *rect); +static LRESULT HEADER_SendCtrlCustomDraw(HWND hwnd, DWORD dwDrawStage, HDC hdc, const RECT *rect); static const WCHAR themeClass[] = {'H','e','a','d','e','r',0}; static WCHAR emptyString[] = {0}; -static void HEADER_StoreHDItemInHeader(HEADER_ITEM *lpItem, UINT mask, HDITEMW *phdi, BOOL fUnicode) +static void HEADER_StoreHDItemInHeader(HEADER_ITEM *lpItem, UINT mask, const HDITEMW *phdi, BOOL fUnicode) { if (mask & HDI_UNSUPPORTED_FIELDS) FIXME("unsupported header fields %x\n", (mask & HDI_UNSUPPORTED_FIELDS)); @@ -161,7 +161,7 @@ static void HEADER_StoreHDItemInHeader(HEADER_ITEM *lpItem, UINT mask, HDITEMW * } } -inline static LRESULT +static inline LRESULT HEADER_IndexToOrder (HWND hwnd, INT iItem) { HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); @@ -182,7 +182,7 @@ HEADER_OrderToIndex(HWND hwnd, WPARAM wParam) } static void -HEADER_ChangeItemOrder(HEADER_INFO *infoPtr, INT iItem, INT iNewOrder) +HEADER_ChangeItemOrder(const HEADER_INFO *infoPtr, INT iItem, INT iNewOrder) { HEADER_ITEM *lpItem = &infoPtr->items[iItem]; INT i, nMin, nMax; @@ -257,7 +257,7 @@ HEADER_Size (HWND hwnd, WPARAM wParam) return 0; } -static void HEADER_GetHotDividerRect(HWND hwnd, HEADER_INFO *infoPtr, RECT *r) +static void HEADER_GetHotDividerRect(HWND hwnd, const HEADER_INFO *infoPtr, RECT *r) { INT iDivider = infoPtr->iHotDivider; if (infoPtr->uNumItem > 0) @@ -588,7 +588,7 @@ HEADER_RefreshItem (HWND hwnd, HDC hdc, INT iItem) static void -HEADER_InternalHitTest (HWND hwnd, LPPOINT lpPt, UINT *pFlags, INT *pItem) +HEADER_InternalHitTest (HWND hwnd, const POINT *lpPt, UINT *pFlags, INT *pItem) { HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); RECT rect, rcTest; @@ -740,8 +740,8 @@ HEADER_DrawTrackLine (HWND hwnd, HDC hdc, INT x) * * NOTE: We depend on HDITEMA and HDITEMW having the same structure */ -static void HEADER_CopyHDItemForNotify(HEADER_INFO *infoPtr, HDITEMW *dest, - HDITEMW *src, BOOL fSourceUnicode, LPVOID *ppvScratch) +static void HEADER_CopyHDItemForNotify(const HEADER_INFO *infoPtr, HDITEMW *dest, + const HDITEMW *src, BOOL fSourceUnicode, LPVOID *ppvScratch) { *ppvScratch = NULL; *dest = *src; @@ -794,7 +794,7 @@ HEADER_SendSimpleNotify (HWND hwnd, UINT code) } static LRESULT -HEADER_SendCtrlCustomDraw(HWND hwnd, DWORD dwDrawStage, HDC hdc, RECT *rect) +HEADER_SendCtrlCustomDraw(HWND hwnd, DWORD dwDrawStage, HDC hdc, const RECT *rect) { NMCUSTOMDRAW nm; nm.dwDrawStage = dwDrawStage; @@ -979,6 +979,7 @@ HEADER_CreateDragImage (HWND hwnd, WPARAM wParam) HDC hMemoryDC; HDC hDeviceDC; int height, width; + HFONT hFont; if (wParam < 0 || wParam >= infoPtr->uNumItem) return FALSE; @@ -996,6 +997,8 @@ HEADER_CreateDragImage (HWND hwnd, WPARAM wParam) ReleaseDC(NULL, hDeviceDC); hOldBitmap = SelectObject(hMemoryDC, hMemory); SetViewportOrgEx(hMemoryDC, -lpItem->rect.left, -lpItem->rect.top, NULL); + hFont = infoPtr->hFont ? infoPtr->hFont : GetStockObject(SYSTEM_FONT); + SelectObject(hMemoryDC, hFont); GetClientRect(hwnd, &rc); lCDFlags = HEADER_SendCtrlCustomDraw(hwnd, CDDS_PREPAINT, hMemoryDC, &rc); @@ -1178,7 +1181,7 @@ HEADER_GetItemT (HWND hwnd, INT nItem, LPHDITEMW phdi, BOOL bUnicode) } -inline static LRESULT +static inline LRESULT HEADER_GetItemCount (HWND hwnd) { HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); @@ -1239,7 +1242,7 @@ HEADER_SetOrderArray(HWND hwnd, WPARAM wParam, LPARAM lParam) return TRUE; } -inline static LRESULT +static inline LRESULT HEADER_GetUnicodeFormat (HWND hwnd) { HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); @@ -1262,7 +1265,7 @@ HEADER_HitTest (HWND hwnd, WPARAM wParam, LPARAM lParam) static LRESULT -HEADER_InsertItemT (HWND hwnd, INT nItem, LPHDITEMW phdi, BOOL bUnicode) +HEADER_InsertItemT (HWND hwnd, INT nItem, const HDITEMW *phdi, BOOL bUnicode) { HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); HEADER_ITEM *lpItem; @@ -1394,7 +1397,7 @@ HEADER_SetBitmapMargin(HWND hwnd, WPARAM wParam) } static LRESULT -HEADER_SetItemT (HWND hwnd, INT nItem, LPHDITEMW phdi, BOOL bUnicode) +HEADER_SetItemT (HWND hwnd, INT nItem, const HDITEMW *phdi, BOOL bUnicode) { HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); HEADER_ITEM *lpItem; @@ -1432,7 +1435,7 @@ HEADER_SetItemT (HWND hwnd, INT nItem, LPHDITEMW phdi, BOOL bUnicode) return TRUE; } -inline static LRESULT +static inline LRESULT HEADER_SetUnicodeFormat (HWND hwnd, WPARAM wParam) { HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd); @@ -1532,7 +1535,7 @@ HEADER_GetFont (HWND hwnd) static BOOL -HEADER_IsDragDistance(HEADER_INFO *infoPtr, POINT *pt) +HEADER_IsDragDistance(const HEADER_INFO *infoPtr, const POINT *pt) { /* Windows allows for a mouse movement before starting the drag. We use the * SM_CXDOUBLECLICK/SM_CYDOUBLECLICK as that distance. diff --git a/reactos/dll/win32/comctl32/hotkey.c b/reactos/dll/win32/comctl32/hotkey.c index aa6ca4ca290..a24a678fd26 100644 --- a/reactos/dll/win32/comctl32/hotkey.c +++ b/reactos/dll/win32/comctl32/hotkey.c @@ -63,7 +63,7 @@ static LRESULT HOTKEY_SetFont (HOTKEY_INFO *infoPtr, HFONT hFont, BOOL redraw); #define IsOnlySet(flags) (infoPtr->CurrMod == (flags)) static BOOL -HOTKEY_IsCombInv(HOTKEY_INFO *infoPtr) +HOTKEY_IsCombInv(const HOTKEY_INFO *infoPtr) { TRACE("(infoPtr=%p)\n", infoPtr); if((infoPtr->InvComb & HKCOMB_NONE) && !infoPtr->CurrMod) @@ -197,7 +197,7 @@ HOTKEY_Paint(HOTKEY_INFO *infoPtr, HDC hdc) } static LRESULT -HOTKEY_GetHotKey(HOTKEY_INFO *infoPtr) +HOTKEY_GetHotKey(const HOTKEY_INFO *infoPtr) { TRACE("(infoPtr=%p) Modifiers: 0x%x, Virtual Key: %d\n", infoPtr, HIBYTE(infoPtr->HotKey), LOBYTE(infoPtr->HotKey)); @@ -226,7 +226,7 @@ HOTKEY_SetRules(HOTKEY_INFO *infoPtr, WORD invComb, WORD invMod) static LRESULT -HOTKEY_Create (HOTKEY_INFO *infoPtr, LPCREATESTRUCTW lpcs) +HOTKEY_Create (HOTKEY_INFO *infoPtr, const CREATESTRUCTW *lpcs) { infoPtr->hwndNotify = lpcs->hwndParent; @@ -248,7 +248,7 @@ HOTKEY_Destroy (HOTKEY_INFO *infoPtr) static LRESULT -HOTKEY_EraseBackground (HOTKEY_INFO *infoPtr, HDC hdc) +HOTKEY_EraseBackground (const HOTKEY_INFO *infoPtr, HDC hdc) { HBRUSH hBrush, hSolidBrush = NULL; RECT rc; @@ -274,8 +274,8 @@ HOTKEY_EraseBackground (HOTKEY_INFO *infoPtr, HDC hdc) } -inline static LRESULT -HOTKEY_GetFont (HOTKEY_INFO *infoPtr) +static inline LRESULT +HOTKEY_GetFont (const HOTKEY_INFO *infoPtr) { return (LRESULT)infoPtr->hFont; } @@ -393,7 +393,7 @@ HOTKEY_KillFocus (HOTKEY_INFO *infoPtr, HWND receiveFocus) static LRESULT -HOTKEY_LButtonDown (HOTKEY_INFO *infoPtr) +HOTKEY_LButtonDown (const HOTKEY_INFO *infoPtr) { if (!(GetWindowLongW(infoPtr->hwndSelf, GWL_STYLE) & WS_DISABLED)) SetFocus (infoPtr->hwndSelf); @@ -402,8 +402,8 @@ HOTKEY_LButtonDown (HOTKEY_INFO *infoPtr) } -inline static LRESULT -HOTKEY_NCCreate (HWND hwnd, LPCREATESTRUCTW lpcs) +static inline LRESULT +HOTKEY_NCCreate (HWND hwnd, const CREATESTRUCTW *lpcs) { HOTKEY_INFO *infoPtr; DWORD dwExStyle = GetWindowLongW (hwnd, GWL_EXSTYLE); diff --git a/reactos/dll/win32/comctl32/imagelist.c b/reactos/dll/win32/comctl32/imagelist.c index 0e314ddf9bf..0c23d19d0a7 100644 --- a/reactos/dll/win32/comctl32/imagelist.c +++ b/reactos/dll/win32/comctl32/imagelist.c @@ -608,7 +608,7 @@ ImageList_Create (INT cx, INT cy, UINT flags, himl->cx = cx; himl->cy = cy; himl->flags = flags; - himl->cMaxImage = cInitial + cGrow; + himl->cMaxImage = cInitial + 1; himl->cInitial = cInitial; himl->cGrow = cGrow; himl->clrFg = CLR_DEFAULT; @@ -2037,14 +2037,15 @@ HIMAGELIST WINAPI ImageList_Read (LPSTREAM pstm) * RETURNS * Success: TRUE * Failure: FALSE + * + * FIXME: as the image list storage test shows, native comctl32 simply shifts + * images without creating a new bitmap. */ - BOOL WINAPI ImageList_Remove (HIMAGELIST himl, INT i) { HBITMAP hbmNewImage, hbmNewMask; HDC hdcBmp; - INT nCount; SIZE sz; TRACE("(himl=%p i=%d)\n", himl, i); @@ -2060,6 +2061,8 @@ ImageList_Remove (HIMAGELIST himl, INT i) } if (i == -1) { + INT nCount; + /* remove all */ if (himl->cCurImage == 0) { /* remove all on empty ImageList is allowed */ @@ -2067,7 +2070,7 @@ ImageList_Remove (HIMAGELIST himl, INT i) return TRUE; } - himl->cMaxImage = himl->cInitial + himl->cGrow; + himl->cMaxImage = himl->cInitial + himl->cGrow - 1; himl->cCurImage = 0; for (nCount = 0; nCount < MAX_OVERLAYIMAGE; nCount++) himl->nOvlIdx[nCount] = -1; @@ -2091,16 +2094,12 @@ ImageList_Remove (HIMAGELIST himl, INT i) TRACE("Remove single image! %d\n", i); /* create new bitmap(s) */ - nCount = (himl->cCurImage + himl->cGrow - 1); - TRACE(" - Number of images: %d / %d (Old/New)\n", himl->cCurImage, himl->cCurImage - 1); - TRACE(" - Max. number of images: %d / %d (Old/New)\n", - himl->cMaxImage, himl->cCurImage + himl->cGrow - 1); - hbmNewImage = ImageList_CreateImage(himl->hdcImage, himl, nCount, himl->cx); + hbmNewImage = ImageList_CreateImage(himl->hdcImage, himl, himl->cMaxImage, himl->cx); - imagelist_get_bitmap_size(himl, nCount, himl->cx, &sz ); + imagelist_get_bitmap_size(himl, himl->cMaxImage, himl->cx, &sz ); if (himl->hbmMask) hbmNewMask = CreateBitmap (sz.cx, sz.cy, 1, 1, NULL); else @@ -2126,13 +2125,13 @@ ImageList_Remove (HIMAGELIST himl, INT i) TRACE("Post image copy!\n"); SelectObject (hdcBmp, hbmNewImage); - imagelist_copy_images( himl, himl->hdcImage, hdcBmp, i, - (himl->cCurImage - i - 1), i - 1 ); + imagelist_copy_images( himl, himl->hdcImage, hdcBmp, i + 1, + (himl->cCurImage - i), i ); if (himl->hbmMask) { SelectObject (hdcBmp, hbmNewMask); - imagelist_copy_images( himl, himl->hdcMask, hdcBmp, i, - (himl->cCurImage - i - 1), i - 1 ); + imagelist_copy_images( himl, himl->hdcMask, hdcBmp, i + 1, + (himl->cCurImage - i), i ); } } @@ -2149,7 +2148,6 @@ ImageList_Remove (HIMAGELIST himl, INT i) } himl->cCurImage--; - himl->cMaxImage = himl->cCurImage + himl->cGrow; } return TRUE; @@ -2515,7 +2513,7 @@ ImageList_SetIconSize (HIMAGELIST himl, INT cx, INT cy) return FALSE; /* remove all images */ - himl->cMaxImage = himl->cInitial + himl->cGrow; + himl->cMaxImage = himl->cInitial + 1; himl->cCurImage = 0; himl->cx = cx; himl->cy = cy; @@ -2690,7 +2688,7 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm) /* setup BITMAPFILEHEADER */ bmfh->bfType = (('M' << 8) | 'B'); - bmfh->bfSize = 0; + bmfh->bfSize = offBits; bmfh->bfReserved1 = 0; bmfh->bfReserved2 = 0; bmfh->bfOffBits = offBits; diff --git a/reactos/dll/win32/comctl32/imagelist.h b/reactos/dll/win32/comctl32/imagelist.h index a3c0b1ee94a..cd72f3846f3 100644 --- a/reactos/dll/win32/comctl32/imagelist.h +++ b/reactos/dll/win32/comctl32/imagelist.h @@ -27,8 +27,6 @@ #include "winbase.h" #include "wingdi.h" -#include "pshpack1.h" - /* the ones with offsets at the end are the same as in Windows */ struct _IMAGELIST { @@ -60,6 +58,7 @@ struct _IMAGELIST #define IMAGELIST_MAGIC 0x53414D58 /* Header used by ImageList_Read() and ImageList_Write() */ +#include "pshpack2.h" typedef struct _ILHEAD { USHORT usMagic; @@ -73,6 +72,6 @@ typedef struct _ILHEAD WORD flags; SHORT ovls[4]; } ILHEAD; - #include "poppack.h" + #endif /* __WINE_IMAGELIST_H */ diff --git a/reactos/dll/win32/comctl32/ipaddress.c b/reactos/dll/win32/comctl32/ipaddress.c index 0ccb3471eda..36682aef9d3 100644 --- a/reactos/dll/win32/comctl32/ipaddress.c +++ b/reactos/dll/win32/comctl32/ipaddress.c @@ -77,7 +77,7 @@ static const WCHAR IP_SUBCLASS_PROP[] = static LRESULT CALLBACK IPADDRESS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -static LRESULT IPADDRESS_Notify (IPADDRESS_INFO *infoPtr, UINT command) +static LRESULT IPADDRESS_Notify (const IPADDRESS_INFO *infoPtr, UINT command) { HWND hwnd = infoPtr->Self; @@ -87,7 +87,7 @@ static LRESULT IPADDRESS_Notify (IPADDRESS_INFO *infoPtr, UINT command) MAKEWPARAM (GetWindowLongPtrW (hwnd, GWLP_ID), command), (LPARAM)hwnd); } -static INT IPADDRESS_IPNotify (IPADDRESS_INFO *infoPtr, INT field, INT value) +static INT IPADDRESS_IPNotify (const IPADDRESS_INFO *infoPtr, INT field, INT value) { NMIPADDRESS nmip; @@ -109,7 +109,7 @@ static INT IPADDRESS_IPNotify (IPADDRESS_INFO *infoPtr, INT field, INT value) } -static int IPADDRESS_GetPartIndex(IPADDRESS_INFO *infoPtr, HWND hwnd) +static int IPADDRESS_GetPartIndex(const IPADDRESS_INFO *infoPtr, HWND hwnd) { int i; @@ -123,7 +123,7 @@ static int IPADDRESS_GetPartIndex(IPADDRESS_INFO *infoPtr, HWND hwnd) } -static LRESULT IPADDRESS_Draw (IPADDRESS_INFO *infoPtr, HDC hdc) +static LRESULT IPADDRESS_Draw (const IPADDRESS_INFO *infoPtr, HDC hdc) { static const WCHAR dotW[] = { '.', 0 }; RECT rect, rcPart; @@ -165,7 +165,7 @@ static LRESULT IPADDRESS_Draw (IPADDRESS_INFO *infoPtr, HDC hdc) } -static LRESULT IPADDRESS_Create (HWND hwnd, LPCREATESTRUCTA lpCreate) +static LRESULT IPADDRESS_Create (HWND hwnd, const CREATESTRUCTA *lpCreate) { static const WCHAR EDIT[] = { 'E', 'd', 'i', 't', 0 }; IPADDRESS_INFO *infoPtr; @@ -246,7 +246,7 @@ static LRESULT IPADDRESS_Enable (IPADDRESS_INFO *infoPtr, BOOL enabled) } -static LRESULT IPADDRESS_Paint (IPADDRESS_INFO *infoPtr, HDC hdc) +static LRESULT IPADDRESS_Paint (const IPADDRESS_INFO *infoPtr, HDC hdc) { PAINTSTRUCT ps; @@ -261,7 +261,7 @@ static LRESULT IPADDRESS_Paint (IPADDRESS_INFO *infoPtr, HDC hdc) } -static BOOL IPADDRESS_IsBlank (IPADDRESS_INFO *infoPtr) +static BOOL IPADDRESS_IsBlank (const IPADDRESS_INFO *infoPtr) { int i; @@ -274,7 +274,7 @@ static BOOL IPADDRESS_IsBlank (IPADDRESS_INFO *infoPtr) } -static int IPADDRESS_GetAddress (IPADDRESS_INFO *infoPtr, LPDWORD ip_address) +static int IPADDRESS_GetAddress (const IPADDRESS_INFO *infoPtr, LPDWORD ip_address) { WCHAR field[5]; int i, invalid = 0; @@ -308,7 +308,7 @@ static BOOL IPADDRESS_SetRange (IPADDRESS_INFO *infoPtr, int index, WORD range) } -static void IPADDRESS_ClearAddress (IPADDRESS_INFO *infoPtr) +static void IPADDRESS_ClearAddress (const IPADDRESS_INFO *infoPtr) { WCHAR nil[1] = { 0 }; int i; @@ -320,7 +320,7 @@ static void IPADDRESS_ClearAddress (IPADDRESS_INFO *infoPtr) } -static LRESULT IPADDRESS_SetAddress (IPADDRESS_INFO *infoPtr, DWORD ip_address) +static LRESULT IPADDRESS_SetAddress (const IPADDRESS_INFO *infoPtr, DWORD ip_address) { WCHAR buf[20]; static const WCHAR fmt[] = { '%', 'd', 0 }; @@ -329,7 +329,7 @@ static LRESULT IPADDRESS_SetAddress (IPADDRESS_INFO *infoPtr, DWORD ip_address) TRACE("\n"); for (i = 3; i >= 0; i--) { - IPPART_INFO* part = &infoPtr->Part[i]; + const IPPART_INFO* part = &infoPtr->Part[i]; int value = ip_address & 0xff; if ( (value >= part->LowerLimit) && (value <= part->UpperLimit) ) { wsprintfW (buf, fmt, value); @@ -343,7 +343,7 @@ static LRESULT IPADDRESS_SetAddress (IPADDRESS_INFO *infoPtr, DWORD ip_address) } -static void IPADDRESS_SetFocusToField (IPADDRESS_INFO *infoPtr, INT index) +static void IPADDRESS_SetFocusToField (const IPADDRESS_INFO *infoPtr, INT index) { TRACE("(index=%d)\n", index); @@ -353,9 +353,9 @@ static void IPADDRESS_SetFocusToField (IPADDRESS_INFO *infoPtr, INT index) } -static BOOL IPADDRESS_ConstrainField (IPADDRESS_INFO *infoPtr, int currentfield) +static BOOL IPADDRESS_ConstrainField (const IPADDRESS_INFO *infoPtr, int currentfield) { - IPPART_INFO *part = &infoPtr->Part[currentfield]; + const IPPART_INFO *part = &infoPtr->Part[currentfield]; WCHAR field[10]; static const WCHAR fmt[] = { '%', 'd', 0 }; int curValue, newValue; @@ -383,7 +383,7 @@ static BOOL IPADDRESS_ConstrainField (IPADDRESS_INFO *infoPtr, int currentfield) } -static BOOL IPADDRESS_GotoNextField (IPADDRESS_INFO *infoPtr, int cur, int sel) +static BOOL IPADDRESS_GotoNextField (const IPADDRESS_INFO *infoPtr, int cur, int sel) { TRACE("\n"); @@ -391,7 +391,7 @@ static BOOL IPADDRESS_GotoNextField (IPADDRESS_INFO *infoPtr, int cur, int sel) IPADDRESS_ConstrainField(infoPtr, cur); if(cur < 3) { - IPPART_INFO *next = &infoPtr->Part[cur + 1]; + const IPPART_INFO *next = &infoPtr->Part[cur + 1]; int start = 0, end = 0; SetFocus (next->EditHwnd); if (sel != POS_DEFAULT) { diff --git a/reactos/dll/win32/comctl32/listview.c b/reactos/dll/win32/comctl32/listview.c index a80c518b8ed..3aa2bca841a 100644 --- a/reactos/dll/win32/comctl32/listview.c +++ b/reactos/dll/win32/comctl32/listview.c @@ -411,33 +411,33 @@ static const WCHAR themeClass[] = {'L','i','s','t','V','i','e','w',0}; /* * forward declarations */ -static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *, LPLVITEMW, BOOL); -static void LISTVIEW_GetItemBox(LISTVIEW_INFO *, INT, LPRECT); -static void LISTVIEW_GetItemOrigin(LISTVIEW_INFO *, INT, LPPOINT); -static BOOL LISTVIEW_GetItemPosition(LISTVIEW_INFO *, INT, LPPOINT); -static BOOL LISTVIEW_GetItemRect(LISTVIEW_INFO *, INT, LPRECT); -static INT LISTVIEW_GetLabelWidth(LISTVIEW_INFO *, INT); -static void LISTVIEW_GetOrigin(LISTVIEW_INFO *, LPPOINT); -static BOOL LISTVIEW_GetViewRect(LISTVIEW_INFO *, LPRECT); +static BOOL LISTVIEW_GetItemT(const LISTVIEW_INFO *, LPLVITEMW, BOOL); +static void LISTVIEW_GetItemBox(const LISTVIEW_INFO *, INT, LPRECT); +static void LISTVIEW_GetItemOrigin(const LISTVIEW_INFO *, INT, LPPOINT); +static BOOL LISTVIEW_GetItemPosition(const LISTVIEW_INFO *, INT, LPPOINT); +static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *, INT, LPRECT); +static INT LISTVIEW_GetLabelWidth(const LISTVIEW_INFO *, INT); +static void LISTVIEW_GetOrigin(const LISTVIEW_INFO *, LPPOINT); +static BOOL LISTVIEW_GetViewRect(const LISTVIEW_INFO *, LPRECT); static void LISTVIEW_SetGroupSelection(LISTVIEW_INFO *, INT); -static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *, const LVITEMW *, BOOL); -static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *); +static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *, LVITEMW *, BOOL); +static void LISTVIEW_UpdateScroll(const LISTVIEW_INFO *); static void LISTVIEW_SetSelection(LISTVIEW_INFO *, INT); static void LISTVIEW_UpdateSize(LISTVIEW_INFO *); static HWND LISTVIEW_EditLabelT(LISTVIEW_INFO *, INT, BOOL); -static LRESULT LISTVIEW_Command(LISTVIEW_INFO *, WPARAM, LPARAM); +static LRESULT LISTVIEW_Command(const LISTVIEW_INFO *, WPARAM, LPARAM); static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *, PFNLVCOMPARE, LPARAM); -static INT LISTVIEW_GetStringWidthT(LISTVIEW_INFO *, LPCWSTR, BOOL); +static INT LISTVIEW_GetStringWidthT(const LISTVIEW_INFO *, LPCWSTR, BOOL); static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *, INT); -static UINT LISTVIEW_GetItemState(LISTVIEW_INFO *, INT, UINT); +static UINT LISTVIEW_GetItemState(const LISTVIEW_INFO *, INT, UINT); static BOOL LISTVIEW_SetItemState(LISTVIEW_INFO *, INT, const LVITEMW *); static LRESULT LISTVIEW_VScroll(LISTVIEW_INFO *, INT, INT, HWND); static LRESULT LISTVIEW_HScroll(LISTVIEW_INFO *, INT, INT, HWND); -static INT LISTVIEW_GetTopIndex(LISTVIEW_INFO *); +static INT LISTVIEW_GetTopIndex(const LISTVIEW_INFO *); static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *, INT, BOOL); static HWND CreateEditLabelT(LISTVIEW_INFO *, LPCWSTR, DWORD, INT, INT, INT, INT, BOOL); static HIMAGELIST LISTVIEW_SetImageList(LISTVIEW_INFO *, INT, HIMAGELIST); -static INT LISTVIEW_HitTest(LISTVIEW_INFO *, LPLVHITTESTINFO, BOOL, BOOL); +static INT LISTVIEW_HitTest(const LISTVIEW_INFO *, LPLVHITTESTINFO, BOOL, BOOL); /******** Text handling functions *************************************/ @@ -499,7 +499,7 @@ static inline void textfreeT(LPWSTR wstr, BOOL isW) * dest is a pointer to a Unicode string * src is a pointer to a string (Unicode if isW, ANSI if !isW) */ -static BOOL textsetptrT(LPWSTR *dest, LPWSTR src, BOOL isW) +static BOOL textsetptrT(LPWSTR *dest, LPCWSTR src, BOOL isW) { BOOL bResult = TRUE; @@ -720,13 +720,13 @@ static inline LPCSTR debugscrollcode(int nScrollCode) /******** Notification functions i************************************/ -static LRESULT notify_forward_header(LISTVIEW_INFO *infoPtr, const NMHEADERW *lpnmh) +static LRESULT notify_forward_header(const LISTVIEW_INFO *infoPtr, const NMHEADERW *lpnmh) { return SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, (WPARAM)lpnmh->hdr.idFrom, (LPARAM)lpnmh); } -static LRESULT notify_hdr(LISTVIEW_INFO *infoPtr, INT code, LPNMHDR pnmh) +static LRESULT notify_hdr(const LISTVIEW_INFO *infoPtr, INT code, LPNMHDR pnmh) { LRESULT result; @@ -743,7 +743,7 @@ static LRESULT notify_hdr(LISTVIEW_INFO *infoPtr, INT code, LPNMHDR pnmh) return result; } -static inline BOOL notify(LISTVIEW_INFO *infoPtr, INT code) +static inline BOOL notify(const LISTVIEW_INFO *infoPtr, INT code) { NMHDR nmh; HWND hwnd = infoPtr->hwndSelf; @@ -751,7 +751,7 @@ static inline BOOL notify(LISTVIEW_INFO *infoPtr, INT code) return IsWindow(hwnd); } -static inline void notify_itemactivate(LISTVIEW_INFO *infoPtr, LVHITTESTINFO *htInfo) +static inline void notify_itemactivate(const LISTVIEW_INFO *infoPtr, const LVHITTESTINFO *htInfo) { NMITEMACTIVATE nmia; LVITEMW item; @@ -783,13 +783,13 @@ static inline void notify_itemactivate(LISTVIEW_INFO *infoPtr, LVHITTESTINFO *ht notify_hdr(infoPtr, LVN_ITEMACTIVATE, (LPNMHDR)&nmia); } -static inline LRESULT notify_listview(LISTVIEW_INFO *infoPtr, INT code, LPNMLISTVIEW plvnm) +static inline LRESULT notify_listview(const LISTVIEW_INFO *infoPtr, INT code, LPNMLISTVIEW plvnm) { TRACE("(code=%d, plvnm=%s)\n", code, debugnmlistview(plvnm)); return notify_hdr(infoPtr, code, (LPNMHDR)plvnm); } -static BOOL notify_click(LISTVIEW_INFO *infoPtr, INT code, LVHITTESTINFO *lvht) +static BOOL notify_click(const LISTVIEW_INFO *infoPtr, INT code, const LVHITTESTINFO *lvht) { NMLISTVIEW nmlv; LVITEMW item; @@ -808,7 +808,7 @@ static BOOL notify_click(LISTVIEW_INFO *infoPtr, INT code, LVHITTESTINFO *lvht) return IsWindow(hwnd); } -static BOOL notify_deleteitem(LISTVIEW_INFO *infoPtr, INT nItem) +static BOOL notify_deleteitem(const LISTVIEW_INFO *infoPtr, INT nItem) { NMLISTVIEW nmlv; LVITEMW item; @@ -848,7 +848,7 @@ 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(LISTVIEW_INFO *infoPtr, INT notificationCode, LPNMLVDISPINFOW pdi, BOOL isW) +static BOOL notify_dispinfoT(const LISTVIEW_INFO *infoPtr, INT notificationCode, LPNMLVDISPINFOW pdi, BOOL isW) { BOOL bResult = FALSE; BOOL convertToAnsi = FALSE, convertToUnicode = FALSE; @@ -913,7 +913,7 @@ static BOOL notify_dispinfoT(LISTVIEW_INFO *infoPtr, INT notificationCode, LPNML return bResult; } -static void customdraw_fill(NMLVCUSTOMDRAW *lpnmlvcd, LISTVIEW_INFO *infoPtr, HDC hdc, +static void customdraw_fill(NMLVCUSTOMDRAW *lpnmlvcd, const LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *rcBounds, const LVITEMW *lplvItem) { ZeroMemory(lpnmlvcd, sizeof(NMLVCUSTOMDRAW)); @@ -930,7 +930,7 @@ static void customdraw_fill(NMLVCUSTOMDRAW *lpnmlvcd, LISTVIEW_INFO *infoPtr, HD lpnmlvcd->nmcd.lItemlParam = lplvItem->lParam; } -static inline DWORD notify_customdraw (LISTVIEW_INFO *infoPtr, DWORD dwDrawStage, NMLVCUSTOMDRAW *lpnmlvcd) +static inline DWORD notify_customdraw (const LISTVIEW_INFO *infoPtr, DWORD dwDrawStage, NMLVCUSTOMDRAW *lpnmlvcd) { BOOL isForItem = (lpnmlvcd->nmcd.dwItemSpec != 0); DWORD result; @@ -944,7 +944,7 @@ static inline DWORD notify_customdraw (LISTVIEW_INFO *infoPtr, DWORD dwDrawStage return result; } -static void prepaint_setup (LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRAW *lpnmlvcd) +static void prepaint_setup (const LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRAW *lpnmlvcd) { if (lpnmlvcd->clrTextBk == CLR_DEFAULT) lpnmlvcd->clrTextBk = comctl32_color.clrWindow; @@ -977,7 +977,7 @@ static void prepaint_setup (LISTVIEW_INFO *infoPtr, HDC hdc, NMLVCUSTOMDRAW *lpn SetTextColor(hdc, lpnmlvcd->clrText); } -static inline DWORD notify_postpaint (LISTVIEW_INFO *infoPtr, NMLVCUSTOMDRAW *lpnmlvcd) +static inline DWORD notify_postpaint (const LISTVIEW_INFO *infoPtr, NMLVCUSTOMDRAW *lpnmlvcd) { return notify_customdraw(infoPtr, CDDS_POSTPAINT, lpnmlvcd); } @@ -1141,7 +1141,7 @@ end: return (i->nItem = i->nSpecial) != -1; } -static RANGE iterator_range(ITERATOR* i) +static RANGE iterator_range(const ITERATOR *i) { RANGE range; @@ -1160,7 +1160,7 @@ static RANGE iterator_range(ITERATOR* i) /*** * Releases resources associated with this ierator. */ -static inline void iterator_destroy(ITERATOR* i) +static inline void iterator_destroy(const ITERATOR *i) { ranges_destroy(i->ranges); } @@ -1200,7 +1200,7 @@ static inline BOOL iterator_rangesitems(ITERATOR* i, RANGES ranges) /*** * Creates an iterator over the items which intersect lprc. */ -static BOOL iterator_frameditems(ITERATOR* i, LISTVIEW_INFO* infoPtr, const RECT *lprc) +static BOOL iterator_frameditems(ITERATOR* i, const LISTVIEW_INFO* infoPtr, const RECT *lprc) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; RECT frame = *lprc, rcItem, rcTemp; @@ -1285,7 +1285,7 @@ static BOOL iterator_frameditems(ITERATOR* i, LISTVIEW_INFO* infoPtr, const RECT /*** * Creates an iterator over the items which intersect the visible region of hdc. */ -static BOOL iterator_visibleitems(ITERATOR *i, LISTVIEW_INFO *infoPtr, HDC hdc) +static BOOL iterator_visibleitems(ITERATOR *i, const LISTVIEW_INFO *infoPtr, HDC hdc) { POINT Origin, Position; RECT rcItem, rcClip; @@ -1343,7 +1343,7 @@ static inline LRESULT CallWindowProcT(WNDPROC proc, HWND hwnd, UINT uMsg, else return CallWindowProcA(proc, hwnd, uMsg, wParam, lParam); } -static inline BOOL is_autoarrange(LISTVIEW_INFO *infoPtr) +static inline BOOL is_autoarrange(const LISTVIEW_INFO *infoPtr) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; @@ -1353,7 +1353,7 @@ static inline BOOL is_autoarrange(LISTVIEW_INFO *infoPtr) /******** Internal API functions ************************************/ -static inline COLUMN_INFO * LISTVIEW_GetColumnInfo(LISTVIEW_INFO *infoPtr, INT nSubItem) +static inline COLUMN_INFO * LISTVIEW_GetColumnInfo(const LISTVIEW_INFO *infoPtr, INT nSubItem) { static COLUMN_INFO mainItem; @@ -1362,31 +1362,31 @@ static inline COLUMN_INFO * LISTVIEW_GetColumnInfo(LISTVIEW_INFO *infoPtr, INT n return (COLUMN_INFO *)DPA_GetPtr(infoPtr->hdpaColumns, nSubItem); } -static inline void LISTVIEW_GetHeaderRect(LISTVIEW_INFO *infoPtr, INT nSubItem, RECT *lprc) +static inline void LISTVIEW_GetHeaderRect(const LISTVIEW_INFO *infoPtr, INT nSubItem, LPRECT lprc) { *lprc = LISTVIEW_GetColumnInfo(infoPtr, nSubItem)->rcHeader; } -static inline BOOL LISTVIEW_GetItemW(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem) +static inline BOOL LISTVIEW_GetItemW(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem) { return LISTVIEW_GetItemT(infoPtr, lpLVItem, TRUE); } /* Listview invalidation functions: use _only_ these functions to invalidate */ -static inline BOOL is_redrawing(LISTVIEW_INFO *infoPtr) +static inline BOOL is_redrawing(const LISTVIEW_INFO *infoPtr) { return infoPtr->bRedraw; } -static inline void LISTVIEW_InvalidateRect(LISTVIEW_INFO *infoPtr, const RECT* rect) +static inline void LISTVIEW_InvalidateRect(const LISTVIEW_INFO *infoPtr, const RECT* rect) { if(!is_redrawing(infoPtr)) return; TRACE(" invalidating rect=%s\n", wine_dbgstr_rect(rect)); InvalidateRect(infoPtr->hwndSelf, rect, TRUE); } -static inline void LISTVIEW_InvalidateItem(LISTVIEW_INFO *infoPtr, INT nItem) +static inline void LISTVIEW_InvalidateItem(const LISTVIEW_INFO *infoPtr, INT nItem) { RECT rcBox; @@ -1395,7 +1395,7 @@ static inline void LISTVIEW_InvalidateItem(LISTVIEW_INFO *infoPtr, INT nItem) LISTVIEW_InvalidateRect(infoPtr, &rcBox); } -static inline void LISTVIEW_InvalidateSubItem(LISTVIEW_INFO *infoPtr, INT nItem, INT nSubItem) +static inline void LISTVIEW_InvalidateSubItem(const LISTVIEW_INFO *infoPtr, INT nItem, INT nSubItem) { POINT Origin, Position; RECT rcBox; @@ -1411,12 +1411,12 @@ static inline void LISTVIEW_InvalidateSubItem(LISTVIEW_INFO *infoPtr, INT nItem, LISTVIEW_InvalidateRect(infoPtr, &rcBox); } -static inline void LISTVIEW_InvalidateList(LISTVIEW_INFO *infoPtr) +static inline void LISTVIEW_InvalidateList(const LISTVIEW_INFO *infoPtr) { LISTVIEW_InvalidateRect(infoPtr, NULL); } -static inline void LISTVIEW_InvalidateColumn(LISTVIEW_INFO *infoPtr, INT nColumn) +static inline void LISTVIEW_InvalidateColumn(const LISTVIEW_INFO *infoPtr, INT nColumn) { RECT rcCol; @@ -1437,7 +1437,7 @@ static inline void LISTVIEW_InvalidateColumn(LISTVIEW_INFO *infoPtr, INT nColumn * RETURN: * Number of items per row. */ -static inline INT LISTVIEW_GetCountPerRow(LISTVIEW_INFO *infoPtr) +static inline INT LISTVIEW_GetCountPerRow(const LISTVIEW_INFO *infoPtr) { INT nListWidth = infoPtr->rcList.right - infoPtr->rcList.left; @@ -1455,7 +1455,7 @@ static inline INT LISTVIEW_GetCountPerRow(LISTVIEW_INFO *infoPtr) * RETURN: * Number of items per column. */ -static inline INT LISTVIEW_GetCountPerColumn(LISTVIEW_INFO *infoPtr) +static inline INT LISTVIEW_GetCountPerColumn(const LISTVIEW_INFO *infoPtr) { INT nListHeight = infoPtr->rcList.bottom - infoPtr->rcList.top; @@ -1605,7 +1605,7 @@ static INT LISTVIEW_ProcessLetterKeys(LISTVIEW_INFO *infoPtr, WPARAM charCode, L * RETURNS * None. */ -static void LISTVIEW_UpdateHeaderSize(LISTVIEW_INFO *infoPtr, INT nNewScrollPos) +static void LISTVIEW_UpdateHeaderSize(const LISTVIEW_INFO *infoPtr, INT nNewScrollPos) { RECT winRect; POINT point[2]; @@ -1638,7 +1638,7 @@ static void LISTVIEW_UpdateHeaderSize(LISTVIEW_INFO *infoPtr, INT nNewScrollPos) * RETURN: * None */ -static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *infoPtr) +static void LISTVIEW_UpdateScroll(const LISTVIEW_INFO *infoPtr) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; SCROLLINFO horzInfo, vertInfo; @@ -1741,7 +1741,7 @@ static void LISTVIEW_UpdateScroll(LISTVIEW_INFO *infoPtr) * RETURN: * None */ -static void LISTVIEW_ShowFocusRect(LISTVIEW_INFO *infoPtr, BOOL fShow) +static void LISTVIEW_ShowFocusRect(const LISTVIEW_INFO *infoPtr, BOOL fShow) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; HDC hdc; @@ -1800,7 +1800,7 @@ done: /*** * Invalidates all visible selected items. */ -static void LISTVIEW_InvalidateSelectedItems(LISTVIEW_INFO *infoPtr) +static void LISTVIEW_InvalidateSelectedItems(const LISTVIEW_INFO *infoPtr) { ITERATOR i; @@ -1831,7 +1831,7 @@ static void LISTVIEW_InvalidateSelectedItems(LISTVIEW_INFO *infoPtr) * RETURN: * None. */ -static void LISTVIEW_GetItemOrigin(LISTVIEW_INFO *infoPtr, INT nItem, LPPOINT lpptPosition) +static void LISTVIEW_GetItemOrigin(const LISTVIEW_INFO *infoPtr, INT nItem, LPPOINT lpptPosition) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; @@ -1897,7 +1897,7 @@ static void LISTVIEW_GetItemOrigin(LISTVIEW_INFO *infoPtr, INT nItem, LPPOINT lp * RETURN: * None. */ -static void LISTVIEW_GetItemMetrics(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, +static void LISTVIEW_GetItemMetrics(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, LPRECT lprcBox, LPRECT lprcSelectBox, LPRECT lprcIcon, LPRECT lprcStateIcon, LPRECT lprcLabel) { @@ -1980,7 +1980,7 @@ static void LISTVIEW_GetItemMetrics(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVI (!lpColumnInfo || lpLVItem->iSubItem == 0 || (lpColumnInfo->fmt & LVCFMT_IMAGE) || ((infoPtr->dwLvExStyle & LVS_EX_SUBITEMIMAGES) && lpLVItem->iImage != I_IMAGECALLBACK))) Icon.right += infoPtr->iconSize.cx; - Icon.bottom = Icon.top + infoPtr->nItemHeight; + Icon.bottom = Icon.top + infoPtr->iconSize.cy; } if(lprcIcon) *lprcIcon = Icon; TRACE(" - icon=%s\n", wine_dbgstr_rect(&Icon)); @@ -2130,7 +2130,7 @@ calc_label: * RETURN: * None. */ -static void LISTVIEW_GetItemBox(LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprcBox) +static void LISTVIEW_GetItemBox(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprcBox) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; WCHAR szDispText[DISP_TEXT_SIZE] = { '\0' }; @@ -2228,7 +2228,7 @@ static void LISTVIEW_NextIconPosLeft(LISTVIEW_INFO *infoPtr, LPPOINT lpPos) * Success: TRUE * Failure: FALSE */ -static BOOL LISTVIEW_MoveIconTo(LISTVIEW_INFO *infoPtr, INT nItem, const POINT *lppt, BOOL isNew) +static BOOL LISTVIEW_MoveIconTo(const LISTVIEW_INFO *infoPtr, INT nItem, const POINT *lppt, BOOL isNew) { POINT old; @@ -2311,7 +2311,7 @@ static BOOL LISTVIEW_Arrange(LISTVIEW_INFO *infoPtr, INT nAlignCode) * SUCCESS : TRUE * FAILURE : FALSE */ -static void LISTVIEW_GetAreaRect(LISTVIEW_INFO *infoPtr, LPRECT lprcView) +static void LISTVIEW_GetAreaRect(const LISTVIEW_INFO *infoPtr, LPRECT lprcView) { INT i, x, y; @@ -2362,7 +2362,7 @@ static void LISTVIEW_GetAreaRect(LISTVIEW_INFO *infoPtr, LPRECT lprcView) * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_GetViewRect(LISTVIEW_INFO *infoPtr, LPRECT lprcView) +static BOOL LISTVIEW_GetViewRect(const LISTVIEW_INFO *infoPtr, LPRECT lprcView) { POINT ptOrigin; @@ -2418,7 +2418,7 @@ static SUBITEM_INFO* LISTVIEW_GetSubItemPtr(HDPA hdpaSubItems, INT nSubItem) * RETURN: * The desired item width. */ -static INT LISTVIEW_CalculateItemWidth(LISTVIEW_INFO *infoPtr) +static INT LISTVIEW_CalculateItemWidth(const LISTVIEW_INFO *infoPtr) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; INT nItemWidth = 0; @@ -2463,7 +2463,7 @@ static INT LISTVIEW_CalculateItemWidth(LISTVIEW_INFO *infoPtr) * RETURN: * The desired item height. */ -static INT LISTVIEW_CalculateItemHeight(LISTVIEW_INFO *infoPtr) +static INT LISTVIEW_CalculateItemHeight(const LISTVIEW_INFO *infoPtr) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; INT nItemHeight; @@ -2919,7 +2919,7 @@ static inline BOOL LISTVIEW_DeselectAll(LISTVIEW_INFO *infoPtr) * RETURN: * Number of items selected. */ -static INT LISTVIEW_GetSelectedCount(LISTVIEW_INFO *infoPtr) +static INT LISTVIEW_GetSelectedCount(const LISTVIEW_INFO *infoPtr) { INT nSelectedCount = 0; @@ -2966,7 +2966,7 @@ static inline BOOL LISTVIEW_SetItemFocus(LISTVIEW_INFO *infoPtr, INT nItem) } /* Helper function for LISTVIEW_ShiftIndices *only* */ -static INT shift_item(LISTVIEW_INFO *infoPtr, INT nShiftItem, INT nItem, INT direction) +static INT shift_item(const LISTVIEW_INFO *infoPtr, INT nShiftItem, INT nItem, INT direction) { if (nShiftItem < nItem) return nShiftItem; @@ -3228,7 +3228,7 @@ static BOOL LISTVIEW_KeySelection(LISTVIEW_INFO *infoPtr, INT nItem) return bResult; } -static BOOL LISTVIEW_GetItemAtPt(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, POINT pt) +static BOOL LISTVIEW_GetItemAtPt(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, POINT pt) { LVHITTESTINFO lvHitTestInfo; @@ -3513,7 +3513,7 @@ static BOOL set_main_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL set_sub_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isW, BOOL *bChanged) +static BOOL set_sub_item(const LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isW, BOOL *bChanged) { HDPA hdpaSubItems; SUBITEM_INFO *lpSubItem; @@ -3590,7 +3590,7 @@ static BOOL set_sub_item(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL i * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, BOOL isW) +static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *infoPtr, LVITEMW *lpLVItem, BOOL isW) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; HWND hwndSelf = infoPtr->hwndSelf; @@ -3606,7 +3606,7 @@ static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, B if ((lpLVItem->mask & LVIF_TEXT) && is_textW(lpLVItem->pszText)) { pszText = lpLVItem->pszText; - ((LVITEMW *)lpLVItem)->pszText = textdupTtoW(lpLVItem->pszText, isW); + lpLVItem->pszText = textdupTtoW(lpLVItem->pszText, isW); } /* actually set the fields */ @@ -3634,7 +3634,7 @@ static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, B if (pszText) { textfreeT(lpLVItem->pszText, isW); - ((LVITEMW *)lpLVItem)->pszText = pszText; + lpLVItem->pszText = pszText; } return bResult; @@ -3650,7 +3650,7 @@ static BOOL LISTVIEW_SetItemT(LISTVIEW_INFO *infoPtr, const LVITEMW *lpLVItem, B * RETURN: * item index */ -static INT LISTVIEW_GetTopIndex(LISTVIEW_INFO *infoPtr) +static INT LISTVIEW_GetTopIndex(const LISTVIEW_INFO *infoPtr) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; INT nItem = 0; @@ -3694,7 +3694,7 @@ static INT LISTVIEW_GetTopIndex(LISTVIEW_INFO *infoPtr) * Success: TRUE * Failure: FALSE */ -static inline BOOL LISTVIEW_FillBkgnd(LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *lprcBox) +static inline BOOL LISTVIEW_FillBkgnd(const LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *lprcBox) { if (!infoPtr->hBkBrush) return FALSE; @@ -3723,9 +3723,10 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, INT nS { UINT uFormat, uView = infoPtr->dwStyle & LVS_TYPEMASK; WCHAR szDispText[DISP_TEXT_SIZE] = { '\0' }; - static const WCHAR szCallback[] = { '(', 'c', 'a', 'l', 'l', 'b', 'a', 'c', 'k', ')', 0 }; + static WCHAR szCallback[] = { '(', 'c', 'a', 'l', 'l', 'b', 'a', 'c', 'k', ')', 0 }; DWORD cdsubitemmode = CDRF_DODEFAULT; - RECT *lprcFocus, rcSelect, rcBox, rcIcon, rcLabel, rcStateIcon; + LPRECT lprcFocus; + RECT rcSelect, rcBox, rcIcon, rcLabel, rcStateIcon; NMLVCUSTOMDRAW nmlvcd; HIMAGELIST himl; LVITEMW lvItem; @@ -3747,7 +3748,7 @@ static BOOL LISTVIEW_DrawItem(LISTVIEW_INFO *infoPtr, HDC hdc, INT nItem, INT nS if (!LISTVIEW_GetItemW(infoPtr, &lvItem)) return FALSE; if (nSubItem > 0 && (infoPtr->dwLvExStyle & LVS_EX_FULLROWSELECT)) lvItem.state = LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED); - if (lvItem.pszText == LPSTR_TEXTCALLBACKW) lvItem.pszText = (LPWSTR)szCallback; + if (lvItem.pszText == LPSTR_TEXTCALLBACKW) lvItem.pszText = szCallback; TRACE(" lvItem=%s\n", debuglvitem_t(&lvItem, TRUE)); /* now check if we need to update the focus rectangle */ @@ -3870,7 +3871,7 @@ postpaint: * RETURN: * None */ -static void LISTVIEW_RefreshOwnerDraw(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode) +static void LISTVIEW_RefreshOwnerDraw(const LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, DWORD cdmode) { UINT uID = (UINT)GetWindowLongPtrW(infoPtr->hwndSelf, GWLP_ID); DWORD cditemmode = CDRF_DODEFAULT; @@ -4045,7 +4046,7 @@ static void LISTVIEW_RefreshList(LISTVIEW_INFO *infoPtr, ITERATOR *i, HDC hdc, D * RETURN: * NoneX */ -static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc, RECT *prcErase) +static void LISTVIEW_Refresh(LISTVIEW_INFO *infoPtr, HDC hdc, const RECT *prcErase) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; COLORREF oldTextColor = 0, oldBkColor = 0, oldClrTextBk, oldClrText; @@ -4189,7 +4190,7 @@ enddraw: * RETURN: * Returns a DWORD. The width in the low word and the height in high word. */ -static DWORD LISTVIEW_ApproximateViewRect(LISTVIEW_INFO *infoPtr, INT nItemCount, +static DWORD LISTVIEW_ApproximateViewRect(const LISTVIEW_INFO *infoPtr, INT nItemCount, WORD wWidth, WORD wHeight) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; @@ -4896,7 +4897,7 @@ static BOOL LISTVIEW_EnsureVisible(LISTVIEW_INFO *infoPtr, INT nItem, BOOL bPart * SUCCESS : index of item * FAILURE : -1 */ -static INT LISTVIEW_FindItemW(LISTVIEW_INFO *infoPtr, INT nStart, +static INT LISTVIEW_FindItemW(const LISTVIEW_INFO *infoPtr, INT nStart, const LVFINDINFOW *lpFindInfo) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; @@ -5027,7 +5028,7 @@ again: * SUCCESS : index of item * FAILURE : -1 */ -static INT LISTVIEW_FindItemA(LISTVIEW_INFO *infoPtr, INT nStart, +static INT LISTVIEW_FindItemA(const LISTVIEW_INFO *infoPtr, INT nStart, const LVFINDINFOA *lpFindInfo) { BOOL hasText = lpFindInfo->flags & (LVFI_STRING | LVFI_PARTIAL); @@ -5053,7 +5054,7 @@ static INT LISTVIEW_FindItemA(LISTVIEW_INFO *infoPtr, INT nStart, * SUCCESS : TRUE * FAILURE : FALSE */ -/* static BOOL LISTVIEW_GetBkImage(LISTVIEW_INFO *infoPtr, LPLVBKIMAGE lpBkImage) */ +/* static BOOL LISTVIEW_GetBkImage(const LISTVIEW_INFO *infoPtr, LPLVBKIMAGE lpBkImage) */ /* { */ /* FIXME (listview, "empty stub!\n"); */ /* return FALSE; */ @@ -5074,7 +5075,7 @@ static INT LISTVIEW_FindItemA(LISTVIEW_INFO *infoPtr, INT nStart, * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_GetColumnT(LISTVIEW_INFO *infoPtr, INT nColumn, LPLVCOLUMNW lpColumn, BOOL isW) +static BOOL LISTVIEW_GetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn, LPLVCOLUMNW lpColumn, BOOL isW) { COLUMN_INFO *lpColumnInfo; HDITEMW hdi; @@ -5116,7 +5117,7 @@ static BOOL LISTVIEW_GetColumnT(LISTVIEW_INFO *infoPtr, INT nColumn, LPLVCOLUMNW } -static BOOL LISTVIEW_GetColumnOrderArray(LISTVIEW_INFO *infoPtr, INT iCount, LPINT lpiArray) +static BOOL LISTVIEW_GetColumnOrderArray(const LISTVIEW_INFO *infoPtr, INT iCount, LPINT lpiArray) { INT i; @@ -5142,7 +5143,7 @@ static BOOL LISTVIEW_GetColumnOrderArray(LISTVIEW_INFO *infoPtr, INT iCount, LPI * SUCCESS : column width * FAILURE : zero */ -static INT LISTVIEW_GetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn) +static INT LISTVIEW_GetColumnWidth(const LISTVIEW_INFO *infoPtr, INT nColumn) { INT nColumnWidth = 0; RECT rcHeader; @@ -5178,7 +5179,7 @@ static INT LISTVIEW_GetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn) * RETURN: * Number of fully visible items. */ -static INT LISTVIEW_GetCountPerPage(LISTVIEW_INFO *infoPtr) +static INT LISTVIEW_GetCountPerPage(const LISTVIEW_INFO *infoPtr) { switch (infoPtr->dwStyle & LVS_TYPEMASK) { @@ -5206,7 +5207,7 @@ static INT LISTVIEW_GetCountPerPage(LISTVIEW_INFO *infoPtr) * SUCCESS : image list handle * FAILURE : NULL */ -static HIMAGELIST LISTVIEW_GetImageList(LISTVIEW_INFO *infoPtr, INT nImageList) +static HIMAGELIST LISTVIEW_GetImageList(const LISTVIEW_INFO *infoPtr, INT nImageList) { switch (nImageList) { @@ -5246,7 +5247,7 @@ static HIMAGELIST LISTVIEW_GetImageList(LISTVIEW_INFO *infoPtr, INT nImageList) * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL isW) +static BOOL LISTVIEW_GetItemT(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL isW) { ITEMHDR callbackHdr = { LPSTR_TEXTCALLBACKW, I_IMAGECALLBACK }; NMLVDISPINFOW dispInfo; @@ -5490,7 +5491,7 @@ static BOOL LISTVIEW_GetItemT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL i * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_GetItemExtT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL isW) +static BOOL LISTVIEW_GetItemExtT(const LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOOL isW) { LPWSTR pszText; BOOL bResult; @@ -5523,7 +5524,7 @@ static BOOL LISTVIEW_GetItemExtT(LISTVIEW_INFO *infoPtr, LPLVITEMW lpLVItem, BOO * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_GetItemPosition(LISTVIEW_INFO *infoPtr, INT nItem, LPPOINT lpptPosition) +static BOOL LISTVIEW_GetItemPosition(const LISTVIEW_INFO *infoPtr, INT nItem, LPPOINT lpptPosition) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; POINT Origin; @@ -5609,7 +5610,7 @@ static BOOL LISTVIEW_GetItemPosition(LISTVIEW_INFO *infoPtr, INT nItem, LPPOINT * is the one with the focus. Ensure that the control's record of which * item has the focus agrees with the items' records. */ -static BOOL LISTVIEW_GetItemRect(LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprc) +static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprc) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; WCHAR szDispText[DISP_TEXT_SIZE] = { '\0' }; @@ -5700,7 +5701,7 @@ static BOOL LISTVIEW_GetItemRect(LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprc) * TRUE: success * FALSE: failure */ -static BOOL LISTVIEW_GetSubItemRect(LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprc) +static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprc) { POINT Position; LVITEMW lvItem; @@ -5758,7 +5759,7 @@ static BOOL LISTVIEW_GetSubItemRect(LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lp * SUCCESS : string width (in pixels) * FAILURE : zero */ -static INT LISTVIEW_GetLabelWidth(LISTVIEW_INFO *infoPtr, INT nItem) +static INT LISTVIEW_GetLabelWidth(const LISTVIEW_INFO *infoPtr, INT nItem) { WCHAR szDispText[DISP_TEXT_SIZE] = { '\0' }; LVITEMW lvItem; @@ -5786,7 +5787,7 @@ static INT LISTVIEW_GetLabelWidth(LISTVIEW_INFO *infoPtr, INT nItem) * RETURN: * Horizontal + vertical spacing */ -static LONG LISTVIEW_GetItemSpacing(LISTVIEW_INFO *infoPtr, BOOL bSmall) +static LONG LISTVIEW_GetItemSpacing(const LISTVIEW_INFO *infoPtr, BOOL bSmall) { LONG lResult; @@ -5816,7 +5817,7 @@ static LONG LISTVIEW_GetItemSpacing(LISTVIEW_INFO *infoPtr, BOOL bSmall) * RETURN: * State specified by the mask. */ -static UINT LISTVIEW_GetItemState(LISTVIEW_INFO *infoPtr, INT nItem, UINT uMask) +static UINT LISTVIEW_GetItemState(const LISTVIEW_INFO *infoPtr, INT nItem, UINT uMask) { LVITEMW lvItem; @@ -5845,7 +5846,7 @@ static UINT LISTVIEW_GetItemState(LISTVIEW_INFO *infoPtr, INT nItem, UINT uMask) * SUCCESS : string length * FAILURE : 0 */ -static INT LISTVIEW_GetItemTextT(LISTVIEW_INFO *infoPtr, INT nItem, LPLVITEMW lpLVItem, BOOL isW) +static INT LISTVIEW_GetItemTextT(const LISTVIEW_INFO *infoPtr, INT nItem, LPLVITEMW lpLVItem, BOOL isW) { if (!lpLVItem || nItem < 0 || nItem >= infoPtr->nItemCount) return 0; @@ -5869,7 +5870,7 @@ static INT LISTVIEW_GetItemTextT(LISTVIEW_INFO *infoPtr, INT nItem, LPLVITEMW lp * SUCCESS : item index * FAILURE : -1 */ -static INT LISTVIEW_GetNextItem(LISTVIEW_INFO *infoPtr, INT nItem, UINT uFlags) +static INT LISTVIEW_GetNextItem(const LISTVIEW_INFO *infoPtr, INT nItem, UINT uFlags) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; UINT uMask = 0; @@ -6073,7 +6074,7 @@ static INT LISTVIEW_GetNextItem(LISTVIEW_INFO *infoPtr, INT nItem, UINT uFlags) * RETURN: * None. */ -static void LISTVIEW_GetOrigin(LISTVIEW_INFO *infoPtr, LPPOINT lpptOrigin) +static void LISTVIEW_GetOrigin(const LISTVIEW_INFO *infoPtr, LPPOINT lpptOrigin) { UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; INT nHorzPos = 0, nVertPos = 0; @@ -6115,7 +6116,7 @@ static void LISTVIEW_GetOrigin(LISTVIEW_INFO *infoPtr, LPPOINT lpptOrigin) * SUCCESS : string width (in pixels) * FAILURE : zero */ -static INT LISTVIEW_GetStringWidthT(LISTVIEW_INFO *infoPtr, LPCWSTR lpszText, BOOL isW) +static INT LISTVIEW_GetStringWidthT(const LISTVIEW_INFO *infoPtr, LPCWSTR lpszText, BOOL isW) { SIZE stringSize; @@ -6155,7 +6156,7 @@ static INT LISTVIEW_GetStringWidthT(LISTVIEW_INFO *infoPtr, LPCWSTR lpszText, BO * SUCCESS : item index * FAILURE : -1 */ -static INT LISTVIEW_HitTest(LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht, BOOL subitem, BOOL select) +static INT LISTVIEW_HitTest(const LISTVIEW_INFO *infoPtr, LPLVHITTESTINFO lpht, BOOL subitem, BOOL select) { WCHAR szDispText[DISP_TEXT_SIZE] = { '\0' }; UINT uView = infoPtr->dwStyle & LVS_TYPEMASK; @@ -6290,7 +6291,7 @@ static INT WINAPI LISTVIEW_InsertCompare( LPVOID first, LPVOID second, LPARAM INT cmpv = textcmpWT(lv_first->hdr.pszText, lv_second->hdr.pszText, TRUE); /* if we're sorting descending, negate the return value */ - return (((LISTVIEW_INFO *)lParam)->dwStyle & LVS_SORTDESCENDING) ? -cmpv : cmpv; + return (((const LISTVIEW_INFO *)lParam)->dwStyle & LVS_SORTDESCENDING) ? -cmpv : cmpv; } /*** @@ -6441,7 +6442,7 @@ fail: * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_RedrawItems(LISTVIEW_INFO *infoPtr, INT nFirst, INT nLast) +static BOOL LISTVIEW_RedrawItems(const LISTVIEW_INFO *infoPtr, INT nFirst, INT nLast) { INT i; @@ -6541,7 +6542,8 @@ static BOOL LISTVIEW_SetBkColor(LISTVIEW_INFO *infoPtr, COLORREF clrBk) /* LISTVIEW_SetBkImage */ /*** Helper for {Insert,Set}ColumnT *only* */ -static void column_fill_hditem(LISTVIEW_INFO *infoPtr, HDITEMW *lphdi, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW) +static void column_fill_hditem(const LISTVIEW_INFO *infoPtr, HDITEMW *lphdi, INT nColumn, + const LVCOLUMNW *lpColumn, BOOL isW) { if (lpColumn->mask & LVCF_FMT) { @@ -6715,7 +6717,7 @@ fail: * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_SetColumnT(LISTVIEW_INFO *infoPtr, INT nColumn, +static BOOL LISTVIEW_SetColumnT(const LISTVIEW_INFO *infoPtr, INT nColumn, const LVCOLUMNW *lpColumn, BOOL isW) { HDITEMW hdi, hdiget; @@ -6768,7 +6770,7 @@ static BOOL LISTVIEW_SetColumnT(LISTVIEW_INFO *infoPtr, INT nColumn, * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_SetColumnOrderArray(LISTVIEW_INFO *infoPtr, INT iCount, const INT *lpiArray) +static BOOL LISTVIEW_SetColumnOrderArray(const LISTVIEW_INFO *infoPtr, INT iCount, const INT *lpiArray) { FIXME("iCount %d lpiArray %p\n", iCount, lpiArray); @@ -6897,7 +6899,7 @@ static BOOL LISTVIEW_SetColumnWidth(LISTVIEW_INFO *infoPtr, INT nColumn, INT cx) * Creates the checkbox imagelist. Helper for LISTVIEW_SetExtendedListViewStyle * */ -static HIMAGELIST LISTVIEW_CreateCheckBoxIL(LISTVIEW_INFO *infoPtr) +static HIMAGELIST LISTVIEW_CreateCheckBoxIL(const LISTVIEW_INFO *infoPtr) { HDC hdc_wnd, hdc; HBITMAP hbm_im, hbm_mask, hbm_orig; @@ -7648,7 +7650,7 @@ static BOOL LISTVIEW_SortItems(LISTVIEW_INFO *infoPtr, PFNLVCOMPARE pfnCompare, * SUCCESS : 0 * FAILURE : something else */ -static LRESULT LISTVIEW_ThemeChanged(LISTVIEW_INFO *infoPtr) +static LRESULT LISTVIEW_ThemeChanged(const LISTVIEW_INFO *infoPtr) { HTHEME theme = GetWindowTheme(infoPtr->hwndSelf); CloseThemeData(theme); @@ -7696,7 +7698,7 @@ static BOOL LISTVIEW_Update(LISTVIEW_INFO *infoPtr, INT nItem) * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_DrawTrackLine(LISTVIEW_INFO *infoPtr) +static BOOL LISTVIEW_DrawTrackLine(const LISTVIEW_INFO *infoPtr) { HPEN hOldPen; HDC hdc; @@ -7893,7 +7895,7 @@ static LRESULT LISTVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs) * Success: 0 * Failure: -1 */ -static LRESULT LISTVIEW_Destroy(LISTVIEW_INFO *infoPtr) +static LRESULT LISTVIEW_Destroy(const LISTVIEW_INFO *infoPtr) { HTHEME theme = GetWindowTheme(infoPtr->hwndSelf); CloseThemeData(theme); @@ -7912,7 +7914,7 @@ static LRESULT LISTVIEW_Destroy(LISTVIEW_INFO *infoPtr) * SUCCESS : TRUE * FAILURE : FALSE */ -static BOOL LISTVIEW_Enable(LISTVIEW_INFO *infoPtr, BOOL bEnable) +static BOOL LISTVIEW_Enable(const LISTVIEW_INFO *infoPtr, BOOL bEnable) { if (infoPtr->dwStyle & LVS_OWNERDRAWFIXED) InvalidateRect(infoPtr->hwndSelf, NULL, TRUE); @@ -7931,7 +7933,7 @@ static BOOL LISTVIEW_Enable(LISTVIEW_INFO *infoPtr, BOOL bEnable) * SUCCESS : TRUE * FAILURE : FALSE */ -static inline BOOL LISTVIEW_EraseBkgnd(LISTVIEW_INFO *infoPtr, HDC hdc) +static inline BOOL LISTVIEW_EraseBkgnd(const LISTVIEW_INFO *infoPtr, HDC hdc) { RECT rc; @@ -8776,7 +8778,7 @@ static LRESULT LISTVIEW_HeaderNotification(LISTVIEW_INFO *infoPtr, const NMHEADE * TRUE - frame was painted * FALSE - call default window proc */ -static BOOL LISTVIEW_NCPaint(LISTVIEW_INFO *infoPtr, HRGN region) +static BOOL LISTVIEW_NCPaint(const LISTVIEW_INFO *infoPtr, HRGN region) { HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); HDC dc; @@ -8917,7 +8919,7 @@ static LRESULT LISTVIEW_PrintClient(LISTVIEW_INFO *infoPtr, HDC hdc, DWORD optio * RETURN: * Zero */ -static LRESULT LISTVIEW_RButtonDblClk(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y) +static LRESULT LISTVIEW_RButtonDblClk(const LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT y) { LVHITTESTINFO lvHitTestInfo; @@ -9039,7 +9041,7 @@ static LRESULT LISTVIEW_RButtonUp(LISTVIEW_INFO *infoPtr, WORD wKey, INT x, INT * TRUE if cursor is set * FALSE otherwise */ -static BOOL LISTVIEW_SetCursor(LISTVIEW_INFO *infoPtr, HWND hwnd, UINT nHittest, UINT wMouseMsg) +static BOOL LISTVIEW_SetCursor(const LISTVIEW_INFO *infoPtr, HWND hwnd, UINT nHittest, UINT wMouseMsg) { LVHITTESTINFO lvHitTestInfo; @@ -9909,7 +9911,7 @@ void LISTVIEW_Unregister(void) * RETURN: * Zero. */ -static LRESULT LISTVIEW_Command(LISTVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +static LRESULT LISTVIEW_Command(const LISTVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { switch (HIWORD(wParam)) { diff --git a/reactos/dll/win32/comctl32/monthcal.c b/reactos/dll/win32/comctl32/monthcal.c index ded5c5cc382..33416262a24 100644 --- a/reactos/dll/win32/comctl32/monthcal.c +++ b/reactos/dll/win32/comctl32/monthcal.c @@ -94,6 +94,7 @@ typedef struct /* control moves when user clicks a scroll button */ int visible; /* # of months visible */ int firstDay; /* Start month calendar with firstDay's day */ + int firstDayHighWord; /* High word only used externally */ int monthRange; MONTHDAYSTATE *monthdayState; SYSTEMTIME todaysDate; @@ -189,7 +190,7 @@ static int MONTHCAL_CalculateDayOfWeek(DWORD day, DWORD month, DWORD year) /* From a given point, calculate the row (weekpos), column(daypos) and day in the calendar. day== 0 mean the last day of tha last month */ -static int MONTHCAL_CalcDayFromPos(MONTHCAL_INFO *infoPtr, int x, int y, +static int MONTHCAL_CalcDayFromPos(const MONTHCAL_INFO *infoPtr, int x, int y, int *daypos,int *weekpos) { int retval, firstDay; @@ -214,7 +215,7 @@ static int MONTHCAL_CalcDayFromPos(MONTHCAL_INFO *infoPtr, int x, int y, /* day is the day of the month, 1 == 1st day of the month */ /* sets x and y to be the position of the day */ /* x == day, y == week where(0,0) == firstDay, 1st week */ -static void MONTHCAL_CalcDayXY(MONTHCAL_INFO *infoPtr, int day, int month, +static void MONTHCAL_CalcDayXY(const MONTHCAL_INFO *infoPtr, int day, int month, int *x, int *y) { int firstDay, prevMonth; @@ -243,7 +244,7 @@ static void MONTHCAL_CalcDayXY(MONTHCAL_INFO *infoPtr, int day, int month, /* x: column(day), y: row(week) */ -static void MONTHCAL_CalcDayRect(MONTHCAL_INFO *infoPtr, RECT *r, int x, int y) +static void MONTHCAL_CalcDayRect(const MONTHCAL_INFO *infoPtr, RECT *r, int x, int y) { r->left = infoPtr->days.left + x * infoPtr->width_increment; r->right = r->left + infoPtr->width_increment; @@ -255,7 +256,7 @@ static void MONTHCAL_CalcDayRect(MONTHCAL_INFO *infoPtr, RECT *r, int x, int y) /* sets the RECT struct r to the rectangle around the day and month */ /* day is the day value of the month(1 == 1st), month is the month */ /* value(january == 1, december == 12) */ -static inline void MONTHCAL_CalcPosFromDay(MONTHCAL_INFO *infoPtr, +static inline void MONTHCAL_CalcPosFromDay(const MONTHCAL_INFO *infoPtr, int day, int month, RECT *r) { int x, y; @@ -267,7 +268,7 @@ static inline void MONTHCAL_CalcPosFromDay(MONTHCAL_INFO *infoPtr, /* day is the day in the month(1 == 1st of the month) */ /* month is the month value(1 == january, 12 == december) */ -static void MONTHCAL_CircleDay(MONTHCAL_INFO *infoPtr, HDC hdc, int day, int month) +static void MONTHCAL_CircleDay(const MONTHCAL_INFO *infoPtr, HDC hdc, int day, int month) { HPEN hRedPen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0)); HPEN hOldPen2 = SelectObject(hdc, hRedPen); @@ -318,7 +319,7 @@ static void MONTHCAL_CircleDay(MONTHCAL_INFO *infoPtr, HDC hdc, int day, int mon } -static void MONTHCAL_DrawDay(MONTHCAL_INFO *infoPtr, HDC hdc, int day, int month, +static void MONTHCAL_DrawDay(const MONTHCAL_INFO *infoPtr, HDC hdc, int day, int month, int x, int y, int bold) { static const WCHAR fmtW[] = { '%','d',0 }; @@ -387,7 +388,7 @@ static void MONTHCAL_DrawDay(MONTHCAL_INFO *infoPtr, HDC hdc, int day, int month } -static void paint_button (MONTHCAL_INFO *infoPtr, HDC hdc, BOOL btnNext, +static void paint_button (const MONTHCAL_INFO *infoPtr, HDC hdc, BOOL btnNext, BOOL pressed, RECT* r) { HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); @@ -426,7 +427,7 @@ static void paint_button (MONTHCAL_INFO *infoPtr, HDC hdc, BOOL btnNext, } -static void MONTHCAL_Refresh(MONTHCAL_INFO *infoPtr, HDC hdc, PAINTSTRUCT* ps) +static void MONTHCAL_Refresh(MONTHCAL_INFO *infoPtr, HDC hdc, const PAINTSTRUCT *ps) { static const WCHAR todayW[] = { 'T','o','d','a','y',':',0 }; static const WCHAR fmt1W[] = { '%','s',' ','%','l','d',0 }; @@ -773,7 +774,7 @@ static void MONTHCAL_Refresh(MONTHCAL_INFO *infoPtr, HDC hdc, PAINTSTRUCT* ps) static LRESULT -MONTHCAL_GetMinReqRect(MONTHCAL_INFO *infoPtr, LPARAM lParam) +MONTHCAL_GetMinReqRect(const MONTHCAL_INFO *infoPtr, LPARAM lParam) { LPRECT lpRect = (LPRECT) lParam; @@ -796,7 +797,7 @@ MONTHCAL_GetMinReqRect(MONTHCAL_INFO *infoPtr, LPARAM lParam) static LRESULT -MONTHCAL_GetColor(MONTHCAL_INFO *infoPtr, WPARAM wParam) +MONTHCAL_GetColor(const MONTHCAL_INFO *infoPtr, WPARAM wParam) { TRACE("\n"); @@ -859,7 +860,7 @@ MONTHCAL_SetColor(MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -MONTHCAL_GetMonthDelta(MONTHCAL_INFO *infoPtr) +MONTHCAL_GetMonthDelta(const MONTHCAL_INFO *infoPtr) { TRACE("\n"); @@ -883,9 +884,9 @@ MONTHCAL_SetMonthDelta(MONTHCAL_INFO *infoPtr, WPARAM wParam) static LRESULT -MONTHCAL_GetFirstDayOfWeek(MONTHCAL_INFO *infoPtr) +MONTHCAL_GetFirstDayOfWeek(const MONTHCAL_INFO *infoPtr) { - return infoPtr->firstDay; + return MAKELONG(infoPtr->firstDay, infoPtr->firstDayHighWord); } @@ -896,26 +897,39 @@ MONTHCAL_GetFirstDayOfWeek(MONTHCAL_INFO *infoPtr) static LRESULT MONTHCAL_SetFirstDayOfWeek(MONTHCAL_INFO *infoPtr, LPARAM lParam) { - int prev = infoPtr->firstDay; + int prev = MAKELONG(infoPtr->firstDay, infoPtr->firstDayHighWord); + int localFirstDay; WCHAR buf[40]; TRACE("day %ld\n", lParam); - if((lParam >= 0) && (lParam < 7)) { - infoPtr->firstDay = (int)lParam; + GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, buf, countof(buf)); + TRACE("%s %d\n", debugstr_w(buf), strlenW(buf)); + + localFirstDay = atoiW(buf); + + if(lParam == -1) + { + infoPtr->firstDay = localFirstDay; + infoPtr->firstDayHighWord = FALSE; + } + else if(lParam >= 7) + { + infoPtr->firstDay = localFirstDay; + infoPtr->firstDayHighWord = TRUE; } else - { - GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, buf, countof(buf)); - TRACE("%s %d\n", debugstr_w(buf), strlenW(buf)); - infoPtr->firstDay = (atoiW(buf)+1)%7; - } + { + infoPtr->firstDay = lParam; + infoPtr->firstDayHighWord = TRUE; + } + return prev; } static LRESULT -MONTHCAL_GetMonthRange(MONTHCAL_INFO *infoPtr) +MONTHCAL_GetMonthRange(const MONTHCAL_INFO *infoPtr) { TRACE("\n"); @@ -924,7 +938,7 @@ MONTHCAL_GetMonthRange(MONTHCAL_INFO *infoPtr) static LRESULT -MONTHCAL_GetMaxTodayWidth(MONTHCAL_INFO *infoPtr) +MONTHCAL_GetMaxTodayWidth(const MONTHCAL_INFO *infoPtr) { return(infoPtr->todayrect.right - infoPtr->todayrect.left); } @@ -999,7 +1013,7 @@ MONTHCAL_GetRange(HWND hwnd, WPARAM wParam, LPARAM lParam) static LRESULT -MONTHCAL_SetDayState(MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +MONTHCAL_SetDayState(const MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { int i, iMonths = (int)wParam; @@ -1014,7 +1028,7 @@ MONTHCAL_SetDayState(MONTHCAL_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } static LRESULT -MONTHCAL_GetCurSel(MONTHCAL_INFO *infoPtr, LPARAM lParam) +MONTHCAL_GetCurSel(const MONTHCAL_INFO *infoPtr, LPARAM lParam) { SYSTEMTIME *lpSel = (SYSTEMTIME *) lParam; @@ -1053,7 +1067,7 @@ MONTHCAL_SetCurSel(MONTHCAL_INFO *infoPtr, LPARAM lParam) static LRESULT -MONTHCAL_GetMaxSelCount(MONTHCAL_INFO *infoPtr) +MONTHCAL_GetMaxSelCount(const MONTHCAL_INFO *infoPtr) { return infoPtr->maxSelCount; } @@ -1073,7 +1087,7 @@ MONTHCAL_SetMaxSelCount(MONTHCAL_INFO *infoPtr, WPARAM wParam) static LRESULT -MONTHCAL_GetSelRange(MONTHCAL_INFO *infoPtr, LPARAM lParam) +MONTHCAL_GetSelRange(const MONTHCAL_INFO *infoPtr, LPARAM lParam) { SYSTEMTIME *lprgSysTimeArray = (SYSTEMTIME *) lParam; @@ -1119,7 +1133,7 @@ MONTHCAL_SetSelRange(MONTHCAL_INFO *infoPtr, LPARAM lParam) static LRESULT -MONTHCAL_GetToday(MONTHCAL_INFO *infoPtr, LPARAM lParam) +MONTHCAL_GetToday(const MONTHCAL_INFO *infoPtr, LPARAM lParam) { SYSTEMTIME *lpToday = (SYSTEMTIME *) lParam; @@ -1150,7 +1164,7 @@ MONTHCAL_SetToday(MONTHCAL_INFO *infoPtr, LPARAM lParam) static LRESULT -MONTHCAL_HitTest(MONTHCAL_INFO *infoPtr, LPARAM lParam) +MONTHCAL_HitTest(const MONTHCAL_INFO *infoPtr, LPARAM lParam) { PMCHITTESTINFO lpht = (PMCHITTESTINFO)lParam; UINT x,y; @@ -1689,7 +1703,7 @@ MONTHCAL_Paint(MONTHCAL_INFO *infoPtr, WPARAM wParam) static LRESULT -MONTHCAL_KillFocus(MONTHCAL_INFO *infoPtr) +MONTHCAL_KillFocus(const MONTHCAL_INFO *infoPtr) { TRACE("\n"); @@ -1700,7 +1714,7 @@ MONTHCAL_KillFocus(MONTHCAL_INFO *infoPtr) static LRESULT -MONTHCAL_SetFocus(MONTHCAL_INFO *infoPtr) +MONTHCAL_SetFocus(const MONTHCAL_INFO *infoPtr) { TRACE("\n"); @@ -1817,7 +1831,7 @@ static LRESULT MONTHCAL_Size(MONTHCAL_INFO *infoPtr, int Width, int Height) return 0; } -static LRESULT MONTHCAL_GetFont(MONTHCAL_INFO *infoPtr) +static LRESULT MONTHCAL_GetFont(const MONTHCAL_INFO *infoPtr) { return (LRESULT)infoPtr->hFont; } @@ -1843,7 +1857,7 @@ static LRESULT MONTHCAL_SetFont(MONTHCAL_INFO *infoPtr, HFONT hFont, BOOL redraw } /* update theme after a WM_THEMECHANGED message */ -static LRESULT theme_changed (MONTHCAL_INFO* infoPtr) +static LRESULT theme_changed (const MONTHCAL_INFO* infoPtr) { HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); CloseThemeData (theme); @@ -1875,6 +1889,7 @@ MONTHCAL_Create(HWND hwnd, WPARAM wParam, LPARAM lParam) /* FIXME: calculate systemtime ->> localtime(substract timezoneinfo) */ GetLocalTime(&infoPtr->todaysDate); + infoPtr->firstDayHighWord = FALSE; MONTHCAL_SetFirstDayOfWeek(infoPtr, (LPARAM)-1); infoPtr->currentMonth = infoPtr->todaysDate.wMonth; infoPtr->currentYear = infoPtr->todaysDate.wYear; diff --git a/reactos/dll/win32/comctl32/pager.c b/reactos/dll/win32/comctl32/pager.c index 04fb6d2f2ed..5fccc494989 100644 --- a/reactos/dll/win32/comctl32/pager.c +++ b/reactos/dll/win32/comctl32/pager.c @@ -93,7 +93,7 @@ typedef struct #define REPEAT_DELAY 50 static void -PAGER_GetButtonRects(PAGER_INFO* infoPtr, RECT* prcTopLeft, RECT* prcBottomRight, BOOL bClientCoords) +PAGER_GetButtonRects(const PAGER_INFO* infoPtr, RECT* prcTopLeft, RECT* prcBottomRight, BOOL bClientCoords) { RECT rcWindow; GetWindowRect (infoPtr->hwndSelf, &rcWindow); @@ -299,7 +299,7 @@ PAGER_ForwardMouse (PAGER_INFO* infoPtr, BOOL bFwd) } static inline LRESULT -PAGER_GetButtonState (PAGER_INFO* infoPtr, INT btn) +PAGER_GetButtonState (const PAGER_INFO* infoPtr, INT btn) { LRESULT btnState = PGF_INVISIBLE; TRACE("[%p]\n", infoPtr->hwndSelf); @@ -314,35 +314,35 @@ PAGER_GetButtonState (PAGER_INFO* infoPtr, INT btn) static inline INT -PAGER_GetPos(PAGER_INFO *infoPtr) +PAGER_GetPos(const PAGER_INFO *infoPtr) { TRACE("[%p] returns %d\n", infoPtr->hwndSelf, infoPtr->nPos); return infoPtr->nPos; } static inline INT -PAGER_GetButtonSize(PAGER_INFO *infoPtr) +PAGER_GetButtonSize(const PAGER_INFO *infoPtr) { TRACE("[%p] returns %d\n", infoPtr->hwndSelf, infoPtr->nButtonSize); return infoPtr->nButtonSize; } static inline INT -PAGER_GetBorder(PAGER_INFO *infoPtr) +PAGER_GetBorder(const PAGER_INFO *infoPtr) { TRACE("[%p] returns %d\n", infoPtr->hwndSelf, infoPtr->nBorder); return infoPtr->nBorder; } static inline COLORREF -PAGER_GetBkColor(PAGER_INFO *infoPtr) +PAGER_GetBkColor(const PAGER_INFO *infoPtr) { TRACE("[%p] returns %06x\n", infoPtr->hwndSelf, infoPtr->clrBk); return infoPtr->clrBk; } static void -PAGER_CalcSize (PAGER_INFO *infoPtr, INT* size, BOOL getWidth) +PAGER_CalcSize (const PAGER_INFO *infoPtr, INT* size, BOOL getWidth) { NMPGCALCSIZE nmpgcs; ZeroMemory (&nmpgcs, sizeof (NMPGCALCSIZE)); @@ -783,7 +783,7 @@ PAGER_Scroll(PAGER_INFO* infoPtr, INT dir) } static LRESULT -PAGER_FmtLines(PAGER_INFO *infoPtr) +PAGER_FmtLines(const PAGER_INFO *infoPtr) { /* initiate NCCalcSize to resize client wnd and get size */ SetWindowPos(infoPtr->hwndSelf, 0, 0, 0, 0, 0, @@ -798,7 +798,7 @@ PAGER_FmtLines(PAGER_INFO *infoPtr) } static LRESULT -PAGER_Create (HWND hwnd, LPCREATESTRUCTW lpcs) +PAGER_Create (HWND hwnd, const CREATESTRUCTW *lpcs) { PAGER_INFO *infoPtr; @@ -898,7 +898,7 @@ PAGER_NCCalcSize(PAGER_INFO* infoPtr, WPARAM wParam, LPRECT lpRect) } static LRESULT -PAGER_NCPaint (PAGER_INFO* infoPtr, HRGN hRgn) +PAGER_NCPaint (const PAGER_INFO* infoPtr, HRGN hRgn) { RECT rcBottomRight, rcTopLeft; HDC hdc; @@ -923,7 +923,7 @@ PAGER_NCPaint (PAGER_INFO* infoPtr, HRGN hRgn) } static INT -PAGER_HitTest (PAGER_INFO* infoPtr, const POINT * pt) +PAGER_HitTest (const PAGER_INFO* infoPtr, const POINT * pt) { RECT clientRect, rcTopLeft, rcBottomRight; POINT ptWindow; @@ -955,7 +955,7 @@ PAGER_HitTest (PAGER_INFO* infoPtr, const POINT * pt) } static LRESULT -PAGER_NCHitTest (PAGER_INFO* infoPtr, INT x, INT y) +PAGER_NCHitTest (const PAGER_INFO* infoPtr, INT x, INT y) { POINT pt; INT nHit; @@ -1203,7 +1203,7 @@ PAGER_Timer (PAGER_INFO* infoPtr, INT nTimerId) } static LRESULT -PAGER_EraseBackground (PAGER_INFO* infoPtr, HDC hdc) +PAGER_EraseBackground (const PAGER_INFO* infoPtr, HDC hdc) { POINT pt, ptorig; HWND parent; @@ -1237,7 +1237,7 @@ PAGER_Size (PAGER_INFO* infoPtr, INT type, INT x, INT y) static LRESULT -PAGER_StyleChanged(PAGER_INFO *infoPtr, WPARAM wStyleType, LPSTYLESTRUCT lpss) +PAGER_StyleChanged(PAGER_INFO *infoPtr, WPARAM wStyleType, const STYLESTRUCT *lpss) { DWORD oldStyle = infoPtr->dwStyle; diff --git a/reactos/dll/win32/comctl32/progress.c b/reactos/dll/win32/comctl32/progress.c index 7acf71b66f3..5f29fc8654b 100644 --- a/reactos/dll/win32/comctl32/progress.c +++ b/reactos/dll/win32/comctl32/progress.c @@ -65,7 +65,7 @@ typedef struct #define ID_MARQUEE_TIMER 1 /* Helper to obtain size of a progress bar chunk ("led"). */ -static inline int get_led_size ( PROGRESS_INFO *infoPtr, LONG style, +static inline int get_led_size ( const PROGRESS_INFO *infoPtr, LONG style, const RECT* rect ) { HTHEME theme = GetWindowTheme (infoPtr->Self); @@ -83,7 +83,7 @@ static inline int get_led_size ( PROGRESS_INFO *infoPtr, LONG style, } /* Helper to obtain gap between progress bar chunks */ -static inline int get_led_gap ( PROGRESS_INFO *infoPtr ) +static inline int get_led_gap ( const PROGRESS_INFO *infoPtr ) { HTHEME theme = GetWindowTheme (infoPtr->Self); if (theme) @@ -121,7 +121,7 @@ static inline int get_bar_size( LONG style, const RECT* rect ) } /* Compute the pixel position of a progress value */ -static inline int get_bar_position( PROGRESS_INFO *infoPtr, LONG style, +static inline int get_bar_position( const PROGRESS_INFO *infoPtr, LONG style, const RECT* rect, INT value ) { return MulDiv (value - infoPtr->MinVal, get_bar_size (style, rect), @@ -134,7 +134,7 @@ static inline int get_bar_position( PROGRESS_INFO *infoPtr, LONG style, * Don't be too clever about invalidating the progress bar. * InstallShield depends on this simple behaviour. */ -static void PROGRESS_Invalidate( PROGRESS_INFO *infoPtr, INT old, INT new ) +static void PROGRESS_Invalidate( const PROGRESS_INFO *infoPtr, INT old, INT new ) { InvalidateRect( infoPtr->Self, NULL, old > new ); } diff --git a/reactos/dll/win32/comctl32/propsheet.c b/reactos/dll/win32/comctl32/propsheet.c index 77388982a20..8168895d423 100644 --- a/reactos/dll/win32/comctl32/propsheet.c +++ b/reactos/dll/win32/comctl32/propsheet.c @@ -167,7 +167,7 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg, int index, int skipdir, HPROPSHEETPAGE hpage); -static int PROPSHEET_GetPageIndex(HPROPSHEETPAGE hpage, PropSheetInfo* psInfo); +static int PROPSHEET_GetPageIndex(HPROPSHEETPAGE hpage, const PropSheetInfo* psInfo); static PADDING_INFO PROPSHEET_GetPaddingInfoWizard(HWND hwndDlg, const PropSheetInfo* psInfo); static BOOL PROPSHEET_DoCommand(HWND hwnd, WORD wID); @@ -252,7 +252,7 @@ static void PROPSHEET_GetPageRect(const PropSheetInfo * psInfo, HWND hwndDlg, * * Find page index corresponding to page resource id. */ -static INT PROPSHEET_FindPageByResId(PropSheetInfo * psInfo, LRESULT resId) +static INT PROPSHEET_FindPageByResId(const PropSheetInfo * psInfo, LRESULT resId) { INT i; @@ -700,7 +700,7 @@ static INT_PTR PROPSHEET_CreateDialog(PropSheetInfo* psInfo) * Verify that the tab control and the "largest" property sheet page dlg. template * match in size. */ -static BOOL PROPSHEET_SizeMismatch(HWND hwndDlg, PropSheetInfo* psInfo) +static BOOL PROPSHEET_SizeMismatch(HWND hwndDlg, const PropSheetInfo* psInfo) { HWND hwndTabCtrl = GetDlgItem(hwndDlg, IDC_TABCONTROL); RECT rcOrigTab, rcPage; @@ -819,7 +819,7 @@ static BOOL PROPSHEET_AdjustSize(HWND hwndDlg, PropSheetInfo* psInfo) * * Resizes the property sheet to fit the largest page. */ -static BOOL PROPSHEET_AdjustSizeWizard(HWND hwndDlg, PropSheetInfo* psInfo) +static BOOL PROPSHEET_AdjustSizeWizard(HWND hwndDlg, const PropSheetInfo* psInfo) { HWND hwndLine = GetDlgItem(hwndDlg, IDC_SUNKEN_LINE); RECT rc, lineRect, dialogRect; @@ -856,7 +856,7 @@ static BOOL PROPSHEET_AdjustSizeWizard(HWND hwndDlg, PropSheetInfo* psInfo) * * Adjusts the buttons' positions. */ -static BOOL PROPSHEET_AdjustButtons(HWND hwndParent, PropSheetInfo* psInfo) +static BOOL PROPSHEET_AdjustButtons(HWND hwndParent, const PropSheetInfo* psInfo) { HWND hwndButton = GetDlgItem(hwndParent, IDOK); RECT rcSheet; @@ -955,7 +955,7 @@ static BOOL PROPSHEET_AdjustButtons(HWND hwndParent, PropSheetInfo* psInfo) * Adjusts the buttons' positions. */ static BOOL PROPSHEET_AdjustButtonsWizard(HWND hwndParent, - PropSheetInfo* psInfo) + const PropSheetInfo* psInfo) { HWND hwndButton = GetDlgItem(hwndParent, IDCANCEL); HWND hwndLine = GetDlgItem(hwndParent, IDC_SUNKEN_LINE); @@ -1173,7 +1173,7 @@ static PADDING_INFO PROPSHEET_GetPaddingInfoWizard(HWND hwndDlg, const PropSheet * Insert the tabs in the tab control. */ static BOOL PROPSHEET_CreateTabControl(HWND hwndParent, - PropSheetInfo * psInfo) + const PropSheetInfo * psInfo) { HWND hwndTabCtrl = GetDlgItem(hwndParent, IDC_TABCONTROL); TCITEMW item; @@ -2023,6 +2023,11 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg, return FALSE; } + /* unset active page while doing this transition. */ + if (psInfo->active_page != -1) + ShowWindow(psInfo->proppage[psInfo->active_page].hwndPage, SW_HIDE); + psInfo->active_page = -1; + while (1) { int result; PSHNOTIFY psn; @@ -2704,7 +2709,7 @@ static BOOL PROPSHEET_RecalcPageSizes(HWND hwndDlg) * Given a HPROPSHEETPAGE, returns the index of the corresponding page from * the array of PropPageInfo. */ -static int PROPSHEET_GetPageIndex(HPROPSHEETPAGE hpage, PropSheetInfo* psInfo) +static int PROPSHEET_GetPageIndex(HPROPSHEETPAGE hpage, const PropSheetInfo* psInfo) { BOOL found = FALSE; int index = 0; @@ -2780,7 +2785,7 @@ static void PROPSHEET_CleanUp(HWND hwndDlg) GlobalFree((HGLOBAL)psInfo); } -static INT do_loop(PropSheetInfo *psInfo) +static INT do_loop(const PropSheetInfo *psInfo) { MSG msg; INT ret = -1; @@ -3261,6 +3266,7 @@ static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam) WCHAR szBuffer[256]; int nLength; + if (psInfo->active_page < 0) return 1; hdc = hdcParam ? hdcParam : BeginPaint(hwnd, &ps); if (!hdc) return 1; diff --git a/reactos/dll/win32/comctl32/rebar.c b/reactos/dll/win32/comctl32/rebar.c index e7a1e1bce2a..6d4e8698a42 100644 --- a/reactos/dll/win32/comctl32/rebar.c +++ b/reactos/dll/win32/comctl32/rebar.c @@ -326,7 +326,7 @@ REBAR_FmtMask( UINT mask) static VOID -REBAR_DumpBandInfo(LPREBARBANDINFOW pB) +REBAR_DumpBandInfo(const REBARBANDINFOW *pB) { if( !TRACE_ON(rebar) ) return; TRACE("band info: "); @@ -359,7 +359,7 @@ REBAR_DumpBandInfo(LPREBARBANDINFOW pB) } static VOID -REBAR_DumpBand (REBAR_INFO *iP) +REBAR_DumpBand (const REBAR_INFO *iP) { REBAR_BAND *pB; UINT i; @@ -423,7 +423,7 @@ REBAR_DumpBand (REBAR_INFO *iP) } /* dest can be equal to src */ -static void translate_rect(REBAR_INFO *infoPtr, RECT *dest, const RECT *src) +static void translate_rect(const REBAR_INFO *infoPtr, RECT *dest, const RECT *src) { if (infoPtr->dwStyle & CCS_VERT) { int tmp; @@ -439,14 +439,14 @@ static void translate_rect(REBAR_INFO *infoPtr, RECT *dest, const RECT *src) } } -static int get_rect_cx(REBAR_INFO *infoPtr, RECT *lpRect) +static int get_rect_cx(const REBAR_INFO *infoPtr, const RECT *lpRect) { if (infoPtr->dwStyle & CCS_VERT) return lpRect->bottom - lpRect->top; return lpRect->right - lpRect->left; } -static int get_rect_cy(REBAR_INFO *infoPtr, RECT *lpRect) +static int get_rect_cy(const REBAR_INFO *infoPtr, const RECT *lpRect) { if (infoPtr->dwStyle & CCS_VERT) return lpRect->right - lpRect->left; @@ -485,7 +485,7 @@ REBAR_DrawChevron (HDC hdc, INT left, INT top, INT colorRef) } static HWND -REBAR_GetNotifyParent (REBAR_INFO *infoPtr) +REBAR_GetNotifyParent (const REBAR_INFO *infoPtr) { HWND parent, owner; @@ -500,7 +500,7 @@ REBAR_GetNotifyParent (REBAR_INFO *infoPtr) static INT -REBAR_Notify (NMHDR *nmhdr, REBAR_INFO *infoPtr, UINT code) +REBAR_Notify (NMHDR *nmhdr, const REBAR_INFO *infoPtr, UINT code) { HWND parent; @@ -515,7 +515,7 @@ REBAR_Notify (NMHDR *nmhdr, REBAR_INFO *infoPtr, UINT code) } static INT -REBAR_Notify_NMREBAR (REBAR_INFO *infoPtr, UINT uBand, UINT code) +REBAR_Notify_NMREBAR (const REBAR_INFO *infoPtr, UINT uBand, UINT code) { NMREBAR notify_rebar; REBAR_BAND *lpBand; @@ -541,7 +541,7 @@ REBAR_Notify_NMREBAR (REBAR_INFO *infoPtr, UINT uBand, UINT code) } static VOID -REBAR_DrawBand (HDC hdc, REBAR_INFO *infoPtr, REBAR_BAND *lpBand) +REBAR_DrawBand (HDC hdc, const REBAR_INFO *infoPtr, REBAR_BAND *lpBand) { HFONT hOldFont = 0; INT oldBkMode = 0; @@ -667,7 +667,7 @@ REBAR_DrawBand (HDC hdc, REBAR_INFO *infoPtr, REBAR_BAND *lpBand) static VOID -REBAR_Refresh (REBAR_INFO *infoPtr, HDC hdc) +REBAR_Refresh (const REBAR_INFO *infoPtr, HDC hdc) { REBAR_BAND *lpBand; UINT i; @@ -689,7 +689,7 @@ REBAR_Refresh (REBAR_INFO *infoPtr, HDC hdc) static void -REBAR_CalcHorzBand (REBAR_INFO *infoPtr, UINT rstart, UINT rend) +REBAR_CalcHorzBand (const REBAR_INFO *infoPtr, UINT rstart, UINT rend) /* Function: this routine initializes all the rectangles in */ /* each band in a row to fit in the adjusted rcBand rect. */ /* *** Supports only Horizontal bars. *** */ @@ -798,7 +798,7 @@ REBAR_CalcHorzBand (REBAR_INFO *infoPtr, UINT rstart, UINT rend) static VOID -REBAR_CalcVertBand (REBAR_INFO *infoPtr, UINT rstart, UINT rend) +REBAR_CalcVertBand (const REBAR_INFO *infoPtr, UINT rstart, UINT rend) /* Function: this routine initializes all the rectangles in */ /* each band in a row to fit in the adjusted rcBand rect. */ /* *** Supports only Vertical bars. *** */ @@ -986,7 +986,7 @@ REBAR_ForceResize (REBAR_INFO *infoPtr) static VOID -REBAR_MoveChildWindows (REBAR_INFO *infoPtr, UINT start, UINT endplus) +REBAR_MoveChildWindows (const REBAR_INFO *infoPtr, UINT start, UINT endplus) { static const WCHAR strComboBox[] = { 'C','o','m','b','o','B','o','x',0 }; REBAR_BAND *lpBand; @@ -1096,7 +1096,7 @@ REBAR_MoveChildWindows (REBAR_INFO *infoPtr, UINT start, UINT endplus) } -static int next_band(REBAR_INFO *infoPtr, int i) +static int next_band(const REBAR_INFO *infoPtr, int i) { int n; for (n = i + 1; n < infoPtr->uNumBands; n++) @@ -1105,7 +1105,7 @@ static int next_band(REBAR_INFO *infoPtr, int i) return n; } -static int prev_band(REBAR_INFO *infoPtr, int i) +static int prev_band(const REBAR_INFO *infoPtr, int i) { int n; for (n = i - 1; n >= 0; n--) @@ -1114,7 +1114,7 @@ static int prev_band(REBAR_INFO *infoPtr, int i) return n; } -static int get_row_begin_for_band(REBAR_INFO *infoPtr, INT iBand) +static int get_row_begin_for_band(const REBAR_INFO *infoPtr, INT iBand) { int iLastBand = iBand; int iRow = infoPtr->bands[iBand].iRow; @@ -1127,7 +1127,7 @@ static int get_row_begin_for_band(REBAR_INFO *infoPtr, INT iBand) return iLastBand; } -static int get_row_end_for_band(REBAR_INFO *infoPtr, INT iBand) +static int get_row_end_for_band(const REBAR_INFO *infoPtr, INT iBand) { int iRow = infoPtr->bands[iBand].iRow; while ((iBand = next_band(infoPtr, iBand)) < infoPtr->uNumBands) @@ -1136,7 +1136,7 @@ static int get_row_end_for_band(REBAR_INFO *infoPtr, INT iBand) return iBand; } -static void REBAR_SetRowRectsX(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand) +static void REBAR_SetRowRectsX(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand) { int xPos = 0, i; for (i = iBeginBand; i < iEndBand; i = next_band(infoPtr, i)) @@ -1160,7 +1160,7 @@ static void REBAR_SetRowRectsX(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand * For some reason "big enough" is defined as bigger than the minimum size of the * first band in the row */ -static REBAR_BAND *REBAR_FindBandToGrow(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand) +static REBAR_BAND *REBAR_FindBandToGrow(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand) { INT iLcx = 0, i; @@ -1179,7 +1179,7 @@ static REBAR_BAND *REBAR_FindBandToGrow(REBAR_INFO *infoPtr, INT iBeginBand, INT return &infoPtr->bands[i]; } -static int REBAR_ShrinkBandsRTL(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT cxShrink, BOOL bEnforce) +static int REBAR_ShrinkBandsRTL(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT cxShrink, BOOL bEnforce) { REBAR_BAND *lpBand; INT width, i; @@ -1201,7 +1201,7 @@ static int REBAR_ShrinkBandsRTL(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBan } -static int REBAR_ShrinkBandsLTR(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT cxShrink, BOOL bEnforce) +static int REBAR_ShrinkBandsLTR(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT cxShrink, BOOL bEnforce) { REBAR_BAND *lpBand; INT width, i; @@ -1222,7 +1222,7 @@ static int REBAR_ShrinkBandsLTR(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBan return cxShrink; } -static int REBAR_SetBandsHeight(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT yStart) +static int REBAR_SetBandsHeight(const REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBand, INT yStart) { REBAR_BAND *lpBand; int yMaxHeight = 0; @@ -1255,7 +1255,7 @@ static int REBAR_SetBandsHeight(REBAR_INFO *infoPtr, INT iBeginBand, INT iEndBan return yPos + yMaxHeight; } -static void REBAR_LayoutRow(REBAR_INFO *infoPtr, int iBeginBand, int iEndBand, int cx, int *piRow, int *pyPos) +static void REBAR_LayoutRow(const REBAR_INFO *infoPtr, int iBeginBand, int iEndBand, int cx, int *piRow, int *pyPos) { REBAR_BAND *lpBand; int i, extra; @@ -1298,7 +1298,7 @@ static void REBAR_LayoutRow(REBAR_INFO *infoPtr, int iBeginBand, int iEndBand, i } static VOID -REBAR_Layout(REBAR_INFO *infoPtr, LPRECT lpRect) +REBAR_Layout(REBAR_INFO *infoPtr, const RECT *lpRect) { REBAR_BAND *lpBand; RECT rcAdj; @@ -1387,7 +1387,7 @@ REBAR_Layout(REBAR_INFO *infoPtr, LPRECT lpRect) static VOID -REBAR_ValidateBand (REBAR_INFO *infoPtr, REBAR_BAND *lpBand) +REBAR_ValidateBand (const REBAR_INFO *infoPtr, REBAR_BAND *lpBand) /* Function: This routine evaluates the band specs supplied */ /* by the user and updates the following 5 fields in */ /* the internal band structure: cxHeader, lcx, lcy, hcx, hcy*/ @@ -1508,7 +1508,7 @@ REBAR_ValidateBand (REBAR_INFO *infoPtr, REBAR_BAND *lpBand) } static BOOL -REBAR_CommonSetupBand(HWND hwnd, LPREBARBANDINFOW lprbbi, REBAR_BAND *lpBand) +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. */ @@ -1640,7 +1640,7 @@ REBAR_CommonSetupBand(HWND hwnd, LPREBARBANDINFOW lprbbi, REBAR_BAND *lpBand) } static LRESULT -REBAR_InternalEraseBkGnd (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, RECT *clip) +REBAR_InternalEraseBkGnd (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, 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 */ @@ -1762,7 +1762,7 @@ REBAR_InternalEraseBkGnd (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, REC } static void -REBAR_InternalHitTest (REBAR_INFO *infoPtr, const POINT *lpPt, UINT *pFlags, INT *pBand) +REBAR_InternalHitTest (const REBAR_INFO *infoPtr, const POINT *lpPt, UINT *pFlags, INT *pBand) { REBAR_BAND *lpBand; RECT rect; @@ -1940,7 +1940,7 @@ REBAR_DeleteBand (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_GetBandBorders (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_GetBandBorders (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { LPRECT lpRect = (LPRECT)lParam; REBAR_BAND *lpBand; @@ -1978,8 +1978,8 @@ REBAR_GetBandBorders (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } -inline static LRESULT -REBAR_GetBandCount (REBAR_INFO *infoPtr) +static inline LRESULT +REBAR_GetBandCount (const REBAR_INFO *infoPtr) { TRACE("band count %u!\n", infoPtr->uNumBands); @@ -1988,7 +1988,7 @@ REBAR_GetBandCount (REBAR_INFO *infoPtr) static LRESULT -REBAR_GetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnicode) +REBAR_GetBandInfoT(const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnicode) { LPREBARBANDINFOW lprbbi = (LPREBARBANDINFOW)lParam; REBAR_BAND *lpBand; @@ -2068,7 +2068,7 @@ REBAR_GetBandInfoT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnic static LRESULT -REBAR_GetBarHeight (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_GetBarHeight (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { INT nHeight; @@ -2081,7 +2081,7 @@ REBAR_GetBarHeight (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_GetBarInfo (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_GetBarInfo (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { LPREBARINFO lpInfo = (LPREBARINFO)lParam; @@ -2102,8 +2102,8 @@ REBAR_GetBarInfo (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } -inline static LRESULT -REBAR_GetBkColor (REBAR_INFO *infoPtr) +static inline LRESULT +REBAR_GetBkColor (const REBAR_INFO *infoPtr) { COLORREF clr = infoPtr->clrBk; @@ -2121,7 +2121,7 @@ REBAR_GetBkColor (REBAR_INFO *infoPtr) static LRESULT -REBAR_GetPalette (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_GetPalette (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { FIXME("empty stub!\n"); @@ -2130,7 +2130,7 @@ REBAR_GetPalette (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_GetRect (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_GetRect (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { INT iBand = (INT)wParam; LPRECT lprc = (LPRECT)lParam; @@ -2152,8 +2152,8 @@ REBAR_GetRect (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } -inline static LRESULT -REBAR_GetRowCount (REBAR_INFO *infoPtr) +static inline LRESULT +REBAR_GetRowCount (const REBAR_INFO *infoPtr) { TRACE("%u\n", infoPtr->uNumRows); @@ -2162,7 +2162,7 @@ REBAR_GetRowCount (REBAR_INFO *infoPtr) static LRESULT -REBAR_GetRowHeight (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_GetRowHeight (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { INT iRow = (INT)wParam; int j = 0, ret = 0; @@ -2183,8 +2183,8 @@ REBAR_GetRowHeight (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } -inline static LRESULT -REBAR_GetTextColor (REBAR_INFO *infoPtr) +static inline LRESULT +REBAR_GetTextColor (const REBAR_INFO *infoPtr) { TRACE("text color 0x%06x!\n", infoPtr->clrText); @@ -2192,15 +2192,15 @@ REBAR_GetTextColor (REBAR_INFO *infoPtr) } -inline static LRESULT -REBAR_GetToolTips (REBAR_INFO *infoPtr) +static inline LRESULT +REBAR_GetToolTips (const REBAR_INFO *infoPtr) { return (LRESULT)infoPtr->hwndToolTip; } -inline static LRESULT -REBAR_GetUnicodeFormat (REBAR_INFO *infoPtr) +static inline LRESULT +REBAR_GetUnicodeFormat (const REBAR_INFO *infoPtr) { TRACE("%s hwnd=%p\n", infoPtr->bUnicode ? "TRUE" : "FALSE", infoPtr->hwndSelf); @@ -2209,8 +2209,8 @@ REBAR_GetUnicodeFormat (REBAR_INFO *infoPtr) } -inline static LRESULT -REBAR_GetVersion (REBAR_INFO *infoPtr) +static inline LRESULT +REBAR_GetVersion (const REBAR_INFO *infoPtr) { TRACE("version %d\n", infoPtr->iVersion); return infoPtr->iVersion; @@ -2218,7 +2218,7 @@ REBAR_GetVersion (REBAR_INFO *infoPtr) static LRESULT -REBAR_HitTest (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_HitTest (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { LPRBHITTESTINFO lprbht = (LPRBHITTESTINFO)lParam; @@ -2232,7 +2232,7 @@ REBAR_HitTest (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_IdToIndex (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_IdToIndex (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { UINT i; @@ -2311,7 +2311,7 @@ REBAR_InsertBandT(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam, BOOL bUnico static LRESULT -REBAR_MaximizeBand (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_MaximizeBand (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { REBAR_BAND *lpBand; UINT uBand = (UINT) wParam; @@ -2359,7 +2359,7 @@ REBAR_MaximizeBand (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_MinimizeBand (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_MinimizeBand (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { REBAR_BAND *lpBand; UINT uBand = (UINT) wParam; @@ -2619,7 +2619,7 @@ REBAR_SetTextColor (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) /* << REBAR_SetTooltips >> */ -inline static LRESULT +static inline LRESULT REBAR_SetUnicodeFormat (REBAR_INFO *infoPtr, WPARAM wParam) { BOOL bTemp = infoPtr->bUnicode; @@ -2778,7 +2778,7 @@ REBAR_Destroy (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_EraseBkGnd (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_EraseBkGnd (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { RECT cliprect; @@ -2789,13 +2789,13 @@ REBAR_EraseBkGnd (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_GetFont (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_GetFont (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { return (LRESULT)infoPtr->hFont; } static LRESULT -REBAR_PushChevron(REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_PushChevron(const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { if (wParam >= 0 && (UINT)wParam < infoPtr->uNumBands) { @@ -2999,8 +2999,8 @@ REBAR_MouseMove (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } -inline static LRESULT -REBAR_NCCalcSize (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +static inline LRESULT +REBAR_NCCalcSize (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { HTHEME theme; RECT *rect = (RECT *)lParam; @@ -3116,7 +3116,7 @@ REBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_NCHitTest (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_NCHitTest (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { NMMOUSE nmmouse; POINT clpt; @@ -3151,7 +3151,7 @@ REBAR_NCHitTest (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_NCPaint (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_NCPaint (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { RECT rcWindow; HDC hdc; @@ -3211,7 +3211,7 @@ REBAR_NotifyFormat (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_Paint (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_Paint (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; @@ -3238,7 +3238,7 @@ REBAR_Paint (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT -REBAR_SetCursor (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_SetCursor (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { POINT pt; UINT flags; @@ -3283,7 +3283,7 @@ REBAR_SetFont (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT REBAR_SetRedraw (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) /***************************************************** * @@ -3376,7 +3376,7 @@ static LRESULT theme_changed (REBAR_INFO* infoPtr) } static LRESULT -REBAR_WindowPosChanged (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +REBAR_WindowPosChanged (const REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { LRESULT ret; RECT rc; diff --git a/reactos/dll/win32/comctl32/smoothscroll.c b/reactos/dll/win32/comctl32/smoothscroll.c index 4c57ea94ac8..e71fac330e3 100644 --- a/reactos/dll/win32/comctl32/smoothscroll.c +++ b/reactos/dll/win32/comctl32/smoothscroll.c @@ -68,7 +68,7 @@ typedef struct tagSMOOTHSCROLLSTRUCT { * Currently only scrolls ONCE. The comctl32 implementation uses GetTickCount * and what else to do smooth scrolling. */ -BOOL WINAPI SmoothScrollWindow( SMOOTHSCROLLSTRUCT *smooth ) { +BOOL WINAPI SmoothScrollWindow( const SMOOTHSCROLLSTRUCT *smooth ) { LPRECT lpupdaterect = smooth->lpupdaterect; HRGN hrgnupdate = smooth->hrgnupdate; RECT tmprect; diff --git a/reactos/dll/win32/comctl32/status.c b/reactos/dll/win32/comctl32/status.c index 82c784d4503..522123c7b29 100644 --- a/reactos/dll/win32/comctl32/status.c +++ b/reactos/dll/win32/comctl32/status.c @@ -168,7 +168,7 @@ STATUSBAR_DrawSizeGrip (HTHEME theme, HDC hdc, LPRECT lpRect) static void -STATUSBAR_DrawPart (STATUS_INFO *infoPtr, HDC hdc, STATUSWINDOWPART *part, int itemID) +STATUSBAR_DrawPart (const STATUS_INFO *infoPtr, HDC hdc, const STATUSWINDOWPART *part, int itemID) { RECT r = part->bound; UINT border = BDR_SUNKENOUTER; @@ -215,7 +215,7 @@ STATUSBAR_DrawPart (STATUS_INFO *infoPtr, HDC hdc, STATUSWINDOWPART *part, int i static void -STATUSBAR_RefreshPart (STATUS_INFO *infoPtr, HDC hdc, STATUSWINDOWPART *part, int itemID) +STATUSBAR_RefreshPart (const STATUS_INFO *infoPtr, HDC hdc, const STATUSWINDOWPART *part, int itemID) { HBRUSH hbrBk; HFONT hOldFont; @@ -357,7 +357,7 @@ STATUSBAR_SetPartBounds (STATUS_INFO *infoPtr) static LRESULT -STATUSBAR_Relay2Tip (STATUS_INFO *infoPtr, UINT uMsg, +STATUSBAR_Relay2Tip (const STATUS_INFO *infoPtr, UINT uMsg, WPARAM wParam, LPARAM lParam) { MSG msg; @@ -375,7 +375,7 @@ STATUSBAR_Relay2Tip (STATUS_INFO *infoPtr, UINT uMsg, static BOOL -STATUSBAR_GetBorders (STATUS_INFO *infoPtr, INT out[]) +STATUSBAR_GetBorders (const STATUS_INFO *infoPtr, INT out[]) { TRACE("\n"); out[0] = infoPtr->horizontalBorder; @@ -387,7 +387,7 @@ STATUSBAR_GetBorders (STATUS_INFO *infoPtr, INT out[]) static BOOL -STATUSBAR_SetBorders (STATUS_INFO *infoPtr, INT in[]) +STATUSBAR_SetBorders (STATUS_INFO *infoPtr, const INT in[]) { TRACE("\n"); infoPtr->horizontalBorder = in[0]; @@ -400,7 +400,7 @@ STATUSBAR_SetBorders (STATUS_INFO *infoPtr, INT in[]) static HICON -STATUSBAR_GetIcon (STATUS_INFO *infoPtr, INT nPart) +STATUSBAR_GetIcon (const STATUS_INFO *infoPtr, INT nPart) { TRACE("%d\n", nPart); /* MSDN says: "simple parts are indexed with -1" */ @@ -415,7 +415,7 @@ STATUSBAR_GetIcon (STATUS_INFO *infoPtr, INT nPart) static INT -STATUSBAR_GetParts (STATUS_INFO *infoPtr, INT num_parts, INT parts[]) +STATUSBAR_GetParts (const STATUS_INFO *infoPtr, INT num_parts, INT parts[]) { INT i; @@ -430,7 +430,7 @@ STATUSBAR_GetParts (STATUS_INFO *infoPtr, INT num_parts, INT parts[]) static BOOL -STATUSBAR_GetRect (STATUS_INFO *infoPtr, INT nPart, LPRECT rect) +STATUSBAR_GetRect (const STATUS_INFO *infoPtr, INT nPart, LPRECT rect) { TRACE("part %d\n", nPart); if(nPart >= infoPtr->numParts || nPart < 0) @@ -524,7 +524,7 @@ STATUSBAR_GetTextLength (STATUS_INFO *infoPtr, INT nPart) } static LRESULT -STATUSBAR_GetTipTextA (STATUS_INFO *infoPtr, INT id, LPSTR tip, INT size) +STATUSBAR_GetTipTextA (const STATUS_INFO *infoPtr, INT id, LPSTR tip, INT size) { TRACE("\n"); if (tip) { @@ -546,7 +546,7 @@ STATUSBAR_GetTipTextA (STATUS_INFO *infoPtr, INT id, LPSTR tip, INT size) static LRESULT -STATUSBAR_GetTipTextW (STATUS_INFO *infoPtr, INT id, LPWSTR tip, INT size) +STATUSBAR_GetTipTextW (const STATUS_INFO *infoPtr, INT id, LPWSTR tip, INT size) { TRACE("\n"); if (tip) { @@ -793,7 +793,7 @@ STATUSBAR_SetTextT (STATUS_INFO *infoPtr, INT nPart, WORD style, static LRESULT -STATUSBAR_SetTipTextA (STATUS_INFO *infoPtr, INT id, LPSTR text) +STATUSBAR_SetTipTextA (const STATUS_INFO *infoPtr, INT id, LPSTR text) { TRACE("part %d: \"%s\"\n", id, text); if (infoPtr->hwndToolTip) { @@ -811,7 +811,7 @@ STATUSBAR_SetTipTextA (STATUS_INFO *infoPtr, INT id, LPSTR text) static LRESULT -STATUSBAR_SetTipTextW (STATUS_INFO *infoPtr, INT id, LPWSTR text) +STATUSBAR_SetTipTextW (const STATUS_INFO *infoPtr, INT id, LPWSTR text) { TRACE("part %d: \"%s\"\n", id, debugstr_w(text)); if (infoPtr->hwndToolTip) { @@ -828,7 +828,7 @@ STATUSBAR_SetTipTextW (STATUS_INFO *infoPtr, INT id, LPWSTR text) } -inline static LRESULT +static inline LRESULT STATUSBAR_SetUnicodeFormat (STATUS_INFO *infoPtr, BOOL bUnicode) { BOOL bOld = infoPtr->bUnicode; @@ -892,7 +892,7 @@ STATUSBAR_WMDestroy (STATUS_INFO *infoPtr) static LRESULT -STATUSBAR_WMCreate (HWND hwnd, LPCREATESTRUCTA lpCreate) +STATUSBAR_WMCreate (HWND hwnd, const CREATESTRUCTA *lpCreate) { STATUS_INFO *infoPtr; NONCLIENTMETRICSW nclm; @@ -1048,7 +1048,7 @@ create_fail: /* in contrast to SB_GETTEXT*, WM_GETTEXT handles the text * of the first part only (usual behaviour) */ static INT -STATUSBAR_WMGetText (STATUS_INFO *infoPtr, INT size, LPWSTR buf) +STATUSBAR_WMGetText (const STATUS_INFO *infoPtr, INT size, LPWSTR buf) { INT len; @@ -1074,7 +1074,7 @@ STATUSBAR_WMGetText (STATUS_INFO *infoPtr, INT size, LPWSTR buf) static BOOL -STATUSBAR_WMNCHitTest (STATUS_INFO *infoPtr, INT x, INT y) +STATUSBAR_WMNCHitTest (const STATUS_INFO *infoPtr, INT x, INT y) { if (GetWindowLongW (infoPtr->Self, GWL_STYLE) & SBARS_SIZEGRIP) { RECT rect; @@ -1125,7 +1125,7 @@ STATUSBAR_WMSetFont (STATUS_INFO *infoPtr, HFONT font, BOOL redraw) static BOOL -STATUSBAR_WMSetText (STATUS_INFO *infoPtr, LPCSTR text) +STATUSBAR_WMSetText (const STATUS_INFO *infoPtr, LPCSTR text) { STATUSWINDOWPART *part; int len; @@ -1190,7 +1190,7 @@ STATUSBAR_WMSize (STATUS_INFO *infoPtr, WORD flags) /* update theme after a WM_THEMECHANGED message */ -static LRESULT theme_changed (STATUS_INFO* infoPtr) +static LRESULT theme_changed (const STATUS_INFO* infoPtr) { HTHEME theme = GetWindowTheme (infoPtr->Self); CloseThemeData (theme); @@ -1211,7 +1211,7 @@ STATUSBAR_NotifyFormat (STATUS_INFO *infoPtr, HWND from, INT cmd) static LRESULT -STATUSBAR_SendNotify (STATUS_INFO *infoPtr, UINT code) +STATUSBAR_SendNotify (const STATUS_INFO *infoPtr, UINT code) { NMHDR nmhdr; diff --git a/reactos/dll/win32/comctl32/string.c b/reactos/dll/win32/comctl32/string.c index 33effbd0703..00f72adac13 100644 --- a/reactos/dll/win32/comctl32/string.c +++ b/reactos/dll/win32/comctl32/string.c @@ -427,7 +427,7 @@ LPSTR WINAPI StrStrIA(LPCSTR lpszStr, LPCSTR lpszSearch) * The signed integer value represented by the string, or 0 if no integer is * present. */ -INT WINAPI StrToIntA (LPSTR lpszStr) +INT WINAPI StrToIntA (LPCSTR lpszStr) { return atoi(lpszStr); } @@ -449,7 +449,7 @@ LPWSTR WINAPI StrStrIW(LPCWSTR lpszStr, LPCWSTR lpszSearch) * * See StrToIntA. */ -INT WINAPI StrToIntW (LPWSTR lpString) +INT WINAPI StrToIntW (LPCWSTR lpString) { return atoiW(lpString); } diff --git a/reactos/dll/win32/comctl32/syslink.c b/reactos/dll/win32/comctl32/syslink.c index fcf253da6c4..1d90b5ca2d3 100644 --- a/reactos/dll/win32/comctl32/syslink.c +++ b/reactos/dll/win32/comctl32/syslink.c @@ -472,7 +472,7 @@ CheckParameter: * SYSLINK_RepaintLink * Repaints a link. */ -static VOID SYSLINK_RepaintLink (SYSLINK_INFO *infoPtr, PDOC_ITEM DocItem) +static VOID SYSLINK_RepaintLink (const SYSLINK_INFO *infoPtr, const DOC_ITEM *DocItem) { PDOC_TEXTBLOCK bl; int n; @@ -501,7 +501,7 @@ static VOID SYSLINK_RepaintLink (SYSLINK_INFO *infoPtr, PDOC_ITEM DocItem) * SYSLINK_GetLinkItemByIndex * Retrieves a document link by its index */ -static PDOC_ITEM SYSLINK_GetLinkItemByIndex (SYSLINK_INFO *infoPtr, int iLink) +static PDOC_ITEM SYSLINK_GetLinkItemByIndex (const SYSLINK_INFO *infoPtr, int iLink) { PDOC_ITEM Current = infoPtr->Items; @@ -520,7 +520,7 @@ static PDOC_ITEM SYSLINK_GetLinkItemByIndex (SYSLINK_INFO *infoPtr, int iLink) * SYSLINK_GetFocusLink * Retrieves the link that has the LIS_FOCUSED bit */ -static PDOC_ITEM SYSLINK_GetFocusLink (SYSLINK_INFO *infoPtr, int *LinkId) +static PDOC_ITEM SYSLINK_GetFocusLink (const SYSLINK_INFO *infoPtr, int *LinkId) { PDOC_ITEM Current = infoPtr->Items; int id = 0; @@ -546,7 +546,7 @@ static PDOC_ITEM SYSLINK_GetFocusLink (SYSLINK_INFO *infoPtr, int *LinkId) * SYSLINK_GetNextLink * Gets the next link */ -static PDOC_ITEM SYSLINK_GetNextLink (SYSLINK_INFO *infoPtr, PDOC_ITEM Current) +static PDOC_ITEM SYSLINK_GetNextLink (const SYSLINK_INFO *infoPtr, PDOC_ITEM Current) { for(Current = (Current != NULL ? Current->Next : infoPtr->Items); Current != NULL; @@ -564,7 +564,7 @@ static PDOC_ITEM SYSLINK_GetNextLink (SYSLINK_INFO *infoPtr, PDOC_ITEM Current) * SYSLINK_GetPrevLink * Gets the previous link */ -static PDOC_ITEM SYSLINK_GetPrevLink (SYSLINK_INFO *infoPtr, PDOC_ITEM Current) +static PDOC_ITEM SYSLINK_GetPrevLink (const SYSLINK_INFO *infoPtr, PDOC_ITEM Current) { if(Current == NULL) { @@ -643,7 +643,7 @@ static BOOL SYSLINK_WrapLine (HDC hdc, LPWSTR Text, WCHAR BreakChar, int *LineLe * SYSLINK_Render * Renders the document in memory */ -static VOID SYSLINK_Render (SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect) +static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect) { RECT rc; PDOC_ITEM Current; @@ -824,7 +824,7 @@ static VOID SYSLINK_Render (SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect) * SYSLINK_Draw * Draws the SysLink control. */ -static LRESULT SYSLINK_Draw (SYSLINK_INFO *infoPtr, HDC hdc) +static LRESULT SYSLINK_Draw (const SYSLINK_INFO *infoPtr, HDC hdc) { RECT rc; PDOC_ITEM Current; @@ -894,7 +894,7 @@ static LRESULT SYSLINK_Draw (SYSLINK_INFO *infoPtr, HDC hdc) * SYSLINK_Paint * Handles the WM_PAINT message. */ -static LRESULT SYSLINK_Paint (SYSLINK_INFO *infoPtr, HDC hdcParam) +static LRESULT SYSLINK_Paint (const SYSLINK_INFO *infoPtr, HDC hdcParam) { HDC hdc; PAINTSTRUCT ps; @@ -1005,7 +1005,7 @@ static LRESULT SYSLINK_SetText (SYSLINK_INFO *infoPtr, LPCWSTR Text) * If no document item is specified, the focus bit will be removed from all links. * Returns the previous focused item. */ -static PDOC_ITEM SYSLINK_SetFocusLink (SYSLINK_INFO *infoPtr, PDOC_ITEM DocItem) +static PDOC_ITEM SYSLINK_SetFocusLink (const SYSLINK_INFO *infoPtr, const DOC_ITEM *DocItem) { PDOC_ITEM Current, PrevFocus = NULL; @@ -1036,7 +1036,7 @@ static PDOC_ITEM SYSLINK_SetFocusLink (SYSLINK_INFO *infoPtr, PDOC_ITEM DocItem) * SYSLINK_SetItem * Sets the states and attributes of a link item. */ -static LRESULT SYSLINK_SetItem (SYSLINK_INFO *infoPtr, PLITEM Item) +static LRESULT SYSLINK_SetItem (const SYSLINK_INFO *infoPtr, const LITEM *Item) { PDOC_ITEM di; int nc; @@ -1126,7 +1126,7 @@ static LRESULT SYSLINK_SetItem (SYSLINK_INFO *infoPtr, PLITEM Item) * SYSLINK_GetItem * Retrieves the states and attributes of a link item. */ -static LRESULT SYSLINK_GetItem (SYSLINK_INFO *infoPtr, PLITEM Item) +static LRESULT SYSLINK_GetItem (const SYSLINK_INFO *infoPtr, PLITEM Item) { PDOC_ITEM di; @@ -1184,7 +1184,7 @@ static LRESULT SYSLINK_GetItem (SYSLINK_INFO *infoPtr, PLITEM Item) * SYSLINK_PtInDocItem * Determines if a point is in the region of a document item */ -static BOOL SYSLINK_PtInDocItem (PDOC_ITEM DocItem, POINT pt) +static BOOL SYSLINK_PtInDocItem (const DOC_ITEM *DocItem, POINT pt) { PDOC_TEXTBLOCK bl; int n; @@ -1212,7 +1212,7 @@ static BOOL SYSLINK_PtInDocItem (PDOC_ITEM DocItem, POINT pt) * SYSLINK_HitTest * Determines the link the user clicked on. */ -static LRESULT SYSLINK_HitTest (SYSLINK_INFO *infoPtr, PLHITTESTINFO HitTest) +static LRESULT SYSLINK_HitTest (const SYSLINK_INFO *infoPtr, PLHITTESTINFO HitTest) { PDOC_ITEM Current; int id = 0; @@ -1256,7 +1256,7 @@ static LRESULT SYSLINK_HitTest (SYSLINK_INFO *infoPtr, PLHITTESTINFO HitTest) * SYSLINK_GetIdealHeight * Returns the preferred height of a link at the current control's width. */ -static LRESULT SYSLINK_GetIdealHeight (SYSLINK_INFO *infoPtr) +static LRESULT SYSLINK_GetIdealHeight (const SYSLINK_INFO *infoPtr) { HDC hdc = GetDC(infoPtr->Self); if(hdc != NULL) @@ -1285,7 +1285,7 @@ static LRESULT SYSLINK_GetIdealHeight (SYSLINK_INFO *infoPtr) * SYSLINK_SendParentNotify * Sends a WM_NOTIFY message to the parent window. */ -static LRESULT SYSLINK_SendParentNotify (SYSLINK_INFO *infoPtr, UINT code, PDOC_ITEM Link, int iLink) +static LRESULT SYSLINK_SendParentNotify (const SYSLINK_INFO *infoPtr, UINT code, const DOC_ITEM *Link, int iLink) { NMLINK nml; @@ -1363,7 +1363,7 @@ static LRESULT SYSLINK_KillFocus (SYSLINK_INFO *infoPtr, HWND NewFocusWindow) * SYSLINK_LinkAtPt * Returns a link at the specified position */ -static PDOC_ITEM SYSLINK_LinkAtPt (SYSLINK_INFO *infoPtr, POINT *pt, int *LinkId, BOOL MustBeEnabled) +static PDOC_ITEM SYSLINK_LinkAtPt (const SYSLINK_INFO *infoPtr, const POINT *pt, int *LinkId, BOOL MustBeEnabled) { PDOC_ITEM Current; int id = 0; @@ -1389,7 +1389,7 @@ static PDOC_ITEM SYSLINK_LinkAtPt (SYSLINK_INFO *infoPtr, POINT *pt, int *LinkId * SYSLINK_LButtonDown * Handles mouse clicks */ -static LRESULT SYSLINK_LButtonDown (SYSLINK_INFO *infoPtr, DWORD Buttons, POINT *pt) +static LRESULT SYSLINK_LButtonDown (SYSLINK_INFO *infoPtr, DWORD Buttons, const POINT *pt) { PDOC_ITEM Current, Old; int id; @@ -1415,7 +1415,7 @@ static LRESULT SYSLINK_LButtonDown (SYSLINK_INFO *infoPtr, DWORD Buttons, POINT * SYSLINK_LButtonUp * Handles mouse clicks */ -static LRESULT SYSLINK_LButtonUp (SYSLINK_INFO *infoPtr, DWORD Buttons, POINT *pt) +static LRESULT SYSLINK_LButtonUp (SYSLINK_INFO *infoPtr, DWORD Buttons, const POINT *pt) { if(infoPtr->MouseDownID > -1) { @@ -1438,7 +1438,7 @@ static LRESULT SYSLINK_LButtonUp (SYSLINK_INFO *infoPtr, DWORD Buttons, POINT *p * SYSLINK_OnEnter * Handles ENTER key events */ -static BOOL SYSLINK_OnEnter (SYSLINK_INFO *infoPtr) +static BOOL SYSLINK_OnEnter (const SYSLINK_INFO *infoPtr) { if(infoPtr->HasFocus) { @@ -1459,7 +1459,7 @@ static BOOL SYSLINK_OnEnter (SYSLINK_INFO *infoPtr) * SYSKEY_SelectNextPrevLink * Changes the currently focused link */ -static BOOL SYSKEY_SelectNextPrevLink (SYSLINK_INFO *infoPtr, BOOL Prev) +static BOOL SYSKEY_SelectNextPrevLink (const SYSLINK_INFO *infoPtr, BOOL Prev) { if(infoPtr->HasFocus) { @@ -1497,7 +1497,7 @@ static BOOL SYSKEY_SelectNextPrevLink (SYSLINK_INFO *infoPtr, BOOL Prev) * Determines if there's a next or previous link to decide whether the control * should capture the tab key message */ -static BOOL SYSLINK_NoNextLink (SYSLINK_INFO *infoPtr, BOOL Prev) +static BOOL SYSLINK_NoNextLink (const SYSLINK_INFO *infoPtr, BOOL Prev) { PDOC_ITEM Focus, NewFocus; @@ -1514,7 +1514,7 @@ static BOOL SYSLINK_NoNextLink (SYSLINK_INFO *infoPtr, BOOL Prev) * SYSLINK_GetIdealSize * Calculates the ideal size of a link control at a given maximum width. */ -static VOID SYSLINK_GetIdealSize (SYSLINK_INFO *infoPtr, int cxMaxWidth, LPSIZE lpSize) +static VOID SYSLINK_GetIdealSize (const SYSLINK_INFO *infoPtr, int cxMaxWidth, LPSIZE lpSize) { RECT rc; HDC hdc; diff --git a/reactos/dll/win32/comctl32/tab.c b/reactos/dll/win32/comctl32/tab.c index c63b0f747ae..d3237c728de 100644 --- a/reactos/dll/win32/comctl32/tab.c +++ b/reactos/dll/win32/comctl32/tab.c @@ -164,9 +164,9 @@ static const WCHAR themeClass[] = { 'T','a','b',0 }; /****************************************************************************** * Prototypes */ -static void TAB_InvalidateTabArea(TAB_INFO *); +static void TAB_InvalidateTabArea(const TAB_INFO *); static void TAB_EnsureSelectionVisible(TAB_INFO *); -static void TAB_DrawItemInterior(TAB_INFO *, HDC, INT, RECT*); +static void TAB_DrawItemInterior(const TAB_INFO *, HDC, INT, RECT*); static BOOL TAB_SendSimpleNotify (const TAB_INFO *infoPtr, UINT code) @@ -199,7 +199,7 @@ TAB_RelayEvent (HWND hwndTip, HWND hwndMsg, UINT uMsg, } static void -TAB_DumpItemExternalT(TCITEMW *pti, UINT iItem, BOOL isW) +TAB_DumpItemExternalT(const TCITEMW *pti, UINT iItem, BOOL isW) { if (TRACE_ON(tab)) { TRACE("external tab %d, mask=0x%08x, dwState=0x%08x, dwStateMask=0x%08x, cchTextMax=0x%08x\n", @@ -210,7 +210,7 @@ TAB_DumpItemExternalT(TCITEMW *pti, UINT iItem, BOOL isW) } static void -TAB_DumpItemInternal(TAB_INFO *infoPtr, UINT iItem) +TAB_DumpItemInternal(const TAB_INFO *infoPtr, UINT iItem) { if (TRACE_ON(tab)) { TAB_ITEM *ti; @@ -231,19 +231,10 @@ static inline LRESULT TAB_GetCurSel (const TAB_INFO *infoPtr) } /* RETURNS - * the index of the tab item that has the focus - * NOTE - * we have not to return negative value - * TODO - * test for windows */ + * the index of the tab item that has the focus. */ static inline LRESULT TAB_GetCurFocus (const TAB_INFO *infoPtr) { - if (infoPtr->uFocus<0) - { - FIXME("we have not to return negative value\n"); - return 0; - } return infoPtr->uFocus; } @@ -255,10 +246,13 @@ static inline LRESULT TAB_GetToolTips (const TAB_INFO *infoPtr) static inline LRESULT TAB_SetCurSel (TAB_INFO *infoPtr, INT iItem) { - INT prevItem = -1; + INT prevItem = infoPtr->iSelected; - if (iItem >= 0 && iItem < infoPtr->uNumItem) { - prevItem=infoPtr->iSelected; + if (iItem < 0) + infoPtr->iSelected=-1; + else if (iItem >= infoPtr->uNumItem) + return -1; + else { if (infoPtr->iSelected != iItem) { infoPtr->iSelected=iItem; TAB_EnsureSelectionVisible(infoPtr); @@ -270,23 +264,25 @@ static inline LRESULT TAB_SetCurSel (TAB_INFO *infoPtr, INT iItem) static LRESULT TAB_SetCurFocus (TAB_INFO *infoPtr, INT iItem) { - if (iItem < 0 || iItem >= infoPtr->uNumItem) return 0; - - if (GetWindowLongW(infoPtr->hwnd, GWL_STYLE) & TCS_BUTTONS) { - FIXME("Should set input focus\n"); - } else { - int oldFocus = infoPtr->uFocus; - if (infoPtr->iSelected != iItem || oldFocus == -1 ) { - infoPtr->uFocus = iItem; - if (oldFocus != -1) { - if (!TAB_SendSimpleNotify(infoPtr, TCN_SELCHANGING)) { - infoPtr->iSelected = iItem; - TAB_SendSimpleNotify(infoPtr, TCN_SELCHANGE); + if (iItem < 0) + infoPtr->uFocus = -1; + else if (iItem < infoPtr->uNumItem) { + if (GetWindowLongW(infoPtr->hwnd, GWL_STYLE) & TCS_BUTTONS) { + FIXME("Should set input focus\n"); + } else { + int oldFocus = infoPtr->uFocus; + if (infoPtr->iSelected != iItem || oldFocus == -1 ) { + infoPtr->uFocus = iItem; + if (oldFocus != -1) { + if (!TAB_SendSimpleNotify(infoPtr, TCN_SELCHANGING)) { + infoPtr->iSelected = iItem; + TAB_SendSimpleNotify(infoPtr, TCN_SELCHANGE); + } + else + infoPtr->iSelected = iItem; + TAB_EnsureSelectionVisible(infoPtr); + TAB_InvalidateTabArea(infoPtr); } - else - infoPtr->iSelected = iItem; - TAB_EnsureSelectionVisible(infoPtr); - TAB_InvalidateTabArea(infoPtr); } } } @@ -462,7 +458,7 @@ static BOOL TAB_InternalGetItemRect( } static inline BOOL -TAB_GetItemRect(TAB_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +TAB_GetItemRect(const TAB_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { return TAB_InternalGetItemRect(infoPtr, (INT)wParam, (LPRECT)lParam, (LPRECT)NULL); } @@ -539,11 +535,7 @@ static void TAB_FocusChanging(const TAB_INFO *infoPtr) } } -static INT TAB_InternalHitTest ( - TAB_INFO* infoPtr, - POINT pt, - UINT* flags) - +static INT TAB_InternalHitTest (const TAB_INFO *infoPtr, POINT pt, UINT *flags) { RECT rect; INT iCount; @@ -564,7 +556,7 @@ static INT TAB_InternalHitTest ( } static inline LRESULT -TAB_HitTest (TAB_INFO *infoPtr, LPTCHITTESTINFO lptest) +TAB_HitTest (const TAB_INFO *infoPtr, LPTCHITTESTINFO lptest) { return TAB_InternalHitTest (infoPtr, lptest->pt, &lptest->flags); } @@ -582,7 +574,7 @@ TAB_HitTest (TAB_INFO *infoPtr, LPTCHITTESTINFO lptest) * doesn't do it that way. Maybe depends on tab control styles ? */ static inline LRESULT -TAB_NCHitTest (TAB_INFO *infoPtr, LPARAM lParam) +TAB_NCHitTest (const TAB_INFO *infoPtr, LPARAM lParam) { POINT pt; UINT dummyflag; @@ -663,7 +655,7 @@ TAB_RButtonDown (const TAB_INFO *infoPtr) * only calls TAB_DrawItemInterior for the single specified item. */ static void -TAB_DrawLoneItemInterior(TAB_INFO* infoPtr, int iItem) +TAB_DrawLoneItemInterior(const TAB_INFO* infoPtr, int iItem) { HDC hdc = GetDC(infoPtr->hwnd); RECT r, rC; @@ -681,7 +673,7 @@ TAB_DrawLoneItemInterior(TAB_INFO* infoPtr, int iItem) /* update a tab after hottracking - invalidate it or just redraw the interior, * based on whether theming is used or not */ -static inline void hottrack_refresh (TAB_INFO* infoPtr, int tabIndex) +static inline void hottrack_refresh(const TAB_INFO *infoPtr, int tabIndex) { if (tabIndex == -1) return; @@ -866,10 +858,7 @@ TAB_MouseMove (TAB_INFO *infoPtr, WPARAM wParam, LPARAM lParam) * Calculates the tab control's display area given the window rectangle or * the window rectangle given the requested display rectangle. */ -static LRESULT TAB_AdjustRect( - TAB_INFO *infoPtr, - WPARAM fLarger, - LPRECT prc) +static LRESULT TAB_AdjustRect(const TAB_INFO *infoPtr, WPARAM fLarger, LPRECT prc) { DWORD lStyle = GetWindowLongW(infoPtr->hwnd, GWL_STYLE); LONG *iRightBottom, *iLeftTop; @@ -927,11 +916,7 @@ static LRESULT TAB_AdjustRect( * This method will handle the notification from the scroll control and * perform the scrolling operation on the tab control. */ -static LRESULT TAB_OnHScroll( - TAB_INFO *infoPtr, - int nScrollCode, - int nPos, - HWND hwndScroll) +static LRESULT TAB_OnHScroll(TAB_INFO *infoPtr, int nScrollCode, int nPos, HWND hwndScroll) { if(nScrollCode == SB_THUMBPOSITION && nPos != infoPtr->leftmostVisible) { @@ -1443,13 +1428,7 @@ static void TAB_SetItemBounds (TAB_INFO *infoPtr) static void -TAB_EraseTabInterior - ( - TAB_INFO* infoPtr, - HDC hdc, - INT iItem, - RECT* drawRect - ) +TAB_EraseTabInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect) { LONG lStyle = GetWindowLongW(infoPtr->hwnd, GWL_STYLE); HBRUSH hbr = CreateSolidBrush (comctl32_color.clrBtnFace); @@ -1511,13 +1490,7 @@ TAB_EraseTabInterior * into the tab control. */ static void -TAB_DrawItemInterior - ( - TAB_INFO* infoPtr, - HDC hdc, - INT iItem, - RECT* drawRect - ) +TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect) { LONG lStyle = GetWindowLongW(infoPtr->hwnd, GWL_STYLE); @@ -1933,10 +1906,7 @@ TAB_DrawItemInterior * * This method is used to draw a single tab into the tab control. */ -static void TAB_DrawItem( - TAB_INFO *infoPtr, - HDC hdc, - INT iItem) +static void TAB_DrawItem(const TAB_INFO *infoPtr, HDC hdc, INT iItem) { LONG lStyle = GetWindowLongW(infoPtr->hwnd, GWL_STYLE); RECT itemRect; @@ -2286,7 +2256,7 @@ static void TAB_DrawItem( * This method is used to draw the raised border around the tab control * "content" area. */ -static void TAB_DrawBorder (TAB_INFO *infoPtr, HDC hdc) +static void TAB_DrawBorder(const TAB_INFO *infoPtr, HDC hdc) { RECT rect; DWORD lStyle = GetWindowLongW(infoPtr->hwnd, GWL_STYLE); @@ -2501,7 +2471,7 @@ static void TAB_EnsureSelectionVisible( * tabs. It is called when the state of the control changes and needs * to be redisplayed */ -static void TAB_InvalidateTabArea(TAB_INFO* infoPtr) +static void TAB_InvalidateTabArea(const TAB_INFO *infoPtr) { RECT clientRect, rInvalidate, rAdjClient; DWORD lStyle = GetWindowLongW(infoPtr->hwnd, GWL_STYLE); @@ -3118,7 +3088,7 @@ TAB_Destroy (TAB_INFO *infoPtr) } /* update theme after a WM_THEMECHANGED message */ -static LRESULT theme_changed (TAB_INFO* infoPtr) +static LRESULT theme_changed(const TAB_INFO *infoPtr) { HTHEME theme = GetWindowTheme (infoPtr->hwnd); CloseThemeData (theme); diff --git a/reactos/dll/win32/comctl32/theme_combo.c b/reactos/dll/win32/comctl32/theme_combo.c index b4007db8a6b..af6eee8dbb7 100644 --- a/reactos/dll/win32/comctl32/theme_combo.c +++ b/reactos/dll/win32/comctl32/theme_combo.c @@ -45,7 +45,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(themingcombo); #define EDIT_CONTROL_PADDING 1 /* paint text of combobox, needed for read-only drop downs. */ -static void paint_text (HWND hwnd, HDC hdc, DWORD dwStyle, COMBOBOXINFO* cbi) +static void paint_text (HWND hwnd, HDC hdc, DWORD dwStyle, const COMBOBOXINFO *cbi) { INT id, size = 0; LPWSTR pText = NULL; diff --git a/reactos/dll/win32/comctl32/toolbar.c b/reactos/dll/win32/comctl32/toolbar.c index 86d3ffcbf63..89037c4d4e2 100644 --- a/reactos/dll/win32/comctl32/toolbar.c +++ b/reactos/dll/win32/comctl32/toolbar.c @@ -125,7 +125,6 @@ typedef struct INT nButtonHeight; INT nButtonWidth; INT nBitmapHeight; - INT nVBitmapHeight; /* see TOOLBAR_Create for an explanation */ INT nBitmapWidth; INT nIndent; INT nRows; /* number of button rows */ @@ -240,10 +239,10 @@ typedef enum static const WCHAR themeClass[] = { 'T','o','o','l','b','a','r',0 }; -static BOOL TOOLBAR_GetButtonInfo(TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb); -static BOOL TOOLBAR_IsButtonRemovable(TOOLBAR_INFO *infoPtr, int iItem, PCUSTOMBUTTON btnInfo); -static HIMAGELIST TOOLBAR_GetImageList(PIMLENTRY *pies, INT cies, INT id); -static PIMLENTRY TOOLBAR_GetImageListEntry(PIMLENTRY *pies, INT cies, INT id); +static BOOL TOOLBAR_GetButtonInfo(const TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb); +static BOOL TOOLBAR_IsButtonRemovable(const TOOLBAR_INFO *infoPtr, int iItem, PCUSTOMBUTTON btnInfo); +static HIMAGELIST TOOLBAR_GetImageList(const PIMLENTRY *pies, INT cies, INT id); +static PIMLENTRY TOOLBAR_GetImageListEntry(const PIMLENTRY *pies, INT cies, INT id); static VOID TOOLBAR_DeleteImageList(PIMLENTRY **pies, INT *cies); static HIMAGELIST TOOLBAR_InsertImageList(PIMLENTRY **pies, INT *cies, HIMAGELIST himl, INT id); static LRESULT TOOLBAR_LButtonDown(HWND hwnd, WPARAM wParam, LPARAM lParam); @@ -251,18 +250,18 @@ static void TOOLBAR_SetHotItemEx (TOOLBAR_INFO *infoPtr, INT nHit, DWORD dwReaso static void TOOLBAR_LayoutToolbar(HWND hwnd); static LRESULT TOOLBAR_AutoSize(HWND hwnd); static void TOOLBAR_CheckImageListIconSize(TOOLBAR_INFO *infoPtr); -static void TOOLBAR_TooltipSetRect(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *button); +static void TOOLBAR_TooltipSetRect(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *button); static LRESULT -TOOLBAR_NotifyFormat(TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam); +TOOLBAR_NotifyFormat(const TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam); -inline static int default_top_margin(TOOLBAR_INFO *infoPtr) +static inline int default_top_margin(const TOOLBAR_INFO *infoPtr) { return (infoPtr->dwStyle & TBSTYLE_FLAT ? 0 : TOP_BORDER); } static LPWSTR -TOOLBAR_GetText(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr) +TOOLBAR_GetText(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *btnPtr) { LPWSTR lpText = NULL; @@ -276,7 +275,7 @@ TOOLBAR_GetText(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr) } static void -TOOLBAR_DumpButton(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *bP, INT btn_num, BOOL internal) +TOOLBAR_DumpButton(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *bP, INT btn_num, BOOL internal) { if (TRACE_ON(toolbar)){ TRACE("button %d id %d, bitmap=%d, state=%02x, style=%02x, data=%08lx, stringid=0x%08x\n", @@ -294,7 +293,7 @@ TOOLBAR_DumpButton(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *bP, INT btn_num, BOOL in static void -TOOLBAR_DumpToolbar(TOOLBAR_INFO *iP, INT line) +TOOLBAR_DumpToolbar(const TOOLBAR_INFO *iP, INT line) { if (TRACE_ON(toolbar)) { INT i; @@ -330,7 +329,7 @@ TOOLBAR_CheckStyle (HWND hwnd, DWORD dwStyle) static INT -TOOLBAR_SendNotify (NMHDR *nmhdr, TOOLBAR_INFO *infoPtr, UINT code) +TOOLBAR_SendNotify (NMHDR *nmhdr, const TOOLBAR_INFO *infoPtr, UINT code) { if(!IsWindow(infoPtr->hwndSelf)) return 0; /* we have just been destroyed */ @@ -354,7 +353,7 @@ TOOLBAR_SendNotify (NMHDR *nmhdr, TOOLBAR_INFO *infoPtr, UINT code) * is issued to retrieve the index. */ static INT -TOOLBAR_GetBitmapIndex(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr) +TOOLBAR_GetBitmapIndex(const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr) { INT ret = btnPtr->iBitmap; @@ -384,7 +383,7 @@ TOOLBAR_GetBitmapIndex(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr) static BOOL -TOOLBAR_IsValidBitmapIndex(TOOLBAR_INFO *infoPtr, INT index) +TOOLBAR_IsValidBitmapIndex(const TOOLBAR_INFO *infoPtr, INT index) { HIMAGELIST himl; INT id = GETHIMLID(infoPtr, index); @@ -400,7 +399,7 @@ TOOLBAR_IsValidBitmapIndex(TOOLBAR_INFO *infoPtr, INT index) static inline BOOL -TOOLBAR_IsValidImageList(TOOLBAR_INFO *infoPtr, INT index) +TOOLBAR_IsValidImageList(const TOOLBAR_INFO *infoPtr, INT index) { HIMAGELIST himl = GETDEFIMAGELIST(infoPtr, GETHIMLID(infoPtr, index)); return (himl != NULL) && (ImageList_GetImageCount(himl) > 0); @@ -414,7 +413,8 @@ TOOLBAR_IsValidImageList(TOOLBAR_INFO *infoPtr, INT index) * functionality) and returns the corresponding image list. */ static HIMAGELIST -TOOLBAR_GetImageListForDrawing (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, IMAGE_LIST_TYPE imagelist, INT * index) +TOOLBAR_GetImageListForDrawing (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, + IMAGE_LIST_TYPE imagelist, INT * index) { HIMAGELIST himl; @@ -457,7 +457,7 @@ TOOLBAR_GetImageListForDrawing (TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, IMA static void -TOOLBAR_DrawFlatSeparator (LPRECT lpRect, HDC hdc, TOOLBAR_INFO *infoPtr) +TOOLBAR_DrawFlatSeparator (const RECT *lpRect, HDC hdc, const TOOLBAR_INFO *infoPtr) { RECT myrect; COLORREF oldcolor, newcolor; @@ -496,7 +496,8 @@ TOOLBAR_DrawFlatSeparator (LPRECT lpRect, HDC hdc, TOOLBAR_INFO *infoPtr) * FIXME: It is possible that the height of each line is really SM_CYBORDER. */ static void -TOOLBAR_DrawDDFlatSeparator (LPRECT lpRect, HDC hdc, TBUTTON_INFO *btnPtr, TOOLBAR_INFO *infoPtr) +TOOLBAR_DrawDDFlatSeparator (const RECT *lpRect, HDC hdc, const TBUTTON_INFO *btnPtr, + const TOOLBAR_INFO *infoPtr) { RECT myrect; COLORREF oldcolor, newcolor; @@ -555,8 +556,8 @@ TOOLBAR_DrawArrow (HDC hdc, INT left, INT top, COLORREF clr) * an image list */ static void -TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, RECT *rcText, LPWSTR lpText, - NMTBCUSTOMDRAW *tbcd, DWORD dwItemCDFlag) +TOOLBAR_DrawString (const TOOLBAR_INFO *infoPtr, RECT *rcText, LPCWSTR lpText, + const NMTBCUSTOMDRAW *tbcd, DWORD dwItemCDFlag) { HDC hdc = tbcd->nmcd.hdc; HFONT hOldFont = 0; @@ -606,7 +607,7 @@ TOOLBAR_DrawString (TOOLBAR_INFO *infoPtr, RECT *rcText, LPWSTR lpText, static void -TOOLBAR_DrawPattern (LPRECT lpRect, NMTBCUSTOMDRAW *tbcd) +TOOLBAR_DrawPattern (const RECT *lpRect, const NMTBCUSTOMDRAW *tbcd) { HDC hdc = tbcd->nmcd.hdc; HBRUSH hbr = SelectObject (hdc, tbcd->hbrMonoDither); @@ -669,7 +670,7 @@ static void TOOLBAR_DrawMasked(HIMAGELIST himl, int index, HDC hdc, INT x, INT y static UINT -TOOLBAR_TranslateState(TBUTTON_INFO *btnPtr) +TOOLBAR_TranslateState(const TBUTTON_INFO *btnPtr) { UINT retstate = 0; @@ -685,8 +686,8 @@ TOOLBAR_TranslateState(TBUTTON_INFO *btnPtr) /* draws the image on a toolbar button */ static void -TOOLBAR_DrawImage(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, INT left, INT top, - const NMTBCUSTOMDRAW *tbcd, DWORD dwItemCDFlag) +TOOLBAR_DrawImage(const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, INT left, INT top, + const NMTBCUSTOMDRAW *tbcd, DWORD dwItemCDFlag) { HIMAGELIST himl = NULL; BOOL draw_masked = FALSE; @@ -1075,7 +1076,7 @@ TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc, DWORD dwBaseCustDr static void -TOOLBAR_Refresh (HWND hwnd, HDC hdc, PAINTSTRUCT* ps) +TOOLBAR_Refresh (HWND hwnd, HDC hdc, const PAINTSTRUCT *ps) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); TBUTTON_INFO *btnPtr; @@ -1170,7 +1171,7 @@ TOOLBAR_Refresh (HWND hwnd, HDC hdc, PAINTSTRUCT* ps) * only DrawText does. Note that the BTNS_NOPREFIX is handled here. */ static void -TOOLBAR_MeasureString(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, +TOOLBAR_MeasureString(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *btnPtr, HDC hdc, LPSIZE lpSize) { RECT myrect; @@ -1554,13 +1555,14 @@ TOOLBAR_WrapToolbar( HWND hwnd, DWORD dwStyle ) * Without text: * As for with bitmaps, but with szText.cx zero. */ -static inline SIZE TOOLBAR_MeasureButton(TOOLBAR_INFO *infoPtr, SIZE sizeString, BOOL bHasBitmap, BOOL bValidImageList) +static inline SIZE TOOLBAR_MeasureButton(const TOOLBAR_INFO *infoPtr, SIZE sizeString, + BOOL bHasBitmap, BOOL bValidImageList) { SIZE sizeButton; if (infoPtr->dwStyle & TBSTYLE_LIST) { /* set button height from bitmap / text height... */ - sizeButton.cy = max((bHasBitmap ? infoPtr->nVBitmapHeight : 0), + sizeButton.cy = max((bHasBitmap ? infoPtr->nBitmapHeight : 0), sizeString.cy); /* ... add on the necessary padding */ @@ -1589,7 +1591,7 @@ static inline SIZE TOOLBAR_MeasureButton(TOOLBAR_INFO *infoPtr, SIZE sizeString, { if (bHasBitmap) { - sizeButton.cy = infoPtr->nVBitmapHeight + DEFPAD_CY; + sizeButton.cy = infoPtr->nBitmapHeight + DEFPAD_CY; if (sizeString.cy > 0) sizeButton.cy += 1 + sizeString.cy; sizeButton.cx = infoPtr->szPadding.cx + @@ -1790,7 +1792,7 @@ TOOLBAR_LayoutToolbar(HWND hwnd) static INT -TOOLBAR_InternalHitTest (HWND hwnd, LPPOINT lpPt) +TOOLBAR_InternalHitTest (HWND hwnd, const POINT *lpPt) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); TBUTTON_INFO *btnPtr; @@ -1821,7 +1823,7 @@ TOOLBAR_InternalHitTest (HWND hwnd, LPPOINT lpPt) static INT -TOOLBAR_GetButtonIndex (TOOLBAR_INFO *infoPtr, INT idCommand, BOOL CommandIsIndex) +TOOLBAR_GetButtonIndex (const TOOLBAR_INFO *infoPtr, INT idCommand, BOOL CommandIsIndex) { TBUTTON_INFO *btnPtr; INT i; @@ -1844,7 +1846,7 @@ TOOLBAR_GetButtonIndex (TOOLBAR_INFO *infoPtr, INT idCommand, BOOL CommandIsInde static INT -TOOLBAR_GetCheckedGroupButtonIndex (TOOLBAR_INFO *infoPtr, INT nIndex) +TOOLBAR_GetCheckedGroupButtonIndex (const TOOLBAR_INFO *infoPtr, INT nIndex) { TBUTTON_INFO *btnPtr; INT nRunIndex; @@ -1907,7 +1909,7 @@ TOOLBAR_RelayEvent (HWND hwndTip, HWND hwndMsg, UINT uMsg, } static void -TOOLBAR_TooltipAddTool(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *button) +TOOLBAR_TooltipAddTool(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *button) { if (infoPtr->hwndToolTip && !(button->fsStyle & BTNS_SEP)) { TTTOOLINFOW ti; @@ -1926,7 +1928,7 @@ TOOLBAR_TooltipAddTool(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *button) } static void -TOOLBAR_TooltipDelTool(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *button) +TOOLBAR_TooltipDelTool(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *button) { if ((infoPtr->hwndToolTip) && !(button->fsStyle & BTNS_SEP)) { TTTOOLINFOW ti; @@ -1940,7 +1942,7 @@ TOOLBAR_TooltipDelTool(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *button) } } -static void TOOLBAR_TooltipSetRect(TOOLBAR_INFO *infoPtr, TBUTTON_INFO *button) +static void TOOLBAR_TooltipSetRect(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *button) { /* Set the toolTip only for non-hidden, non-separator button */ if (infoPtr->hwndToolTip && !(button->fsStyle & BTNS_SEP)) @@ -2009,7 +2011,7 @@ static void TOOLBAR_Cust_InsertAvailButton(HWND hwnd, PCUSTOMBUTTON btnInfoNew) SendMessageW(hwndAvail, LB_SETITEMDATA, i, (LPARAM)btnInfoNew); } -static void TOOLBAR_Cust_MoveButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT nIndexFrom, INT nIndexTo) +static void TOOLBAR_Cust_MoveButton(const CUSTDLG_INFO *custInfo, HWND hwnd, INT nIndexFrom, INT nIndexTo) { NMTOOLBARW nmtb; @@ -2053,7 +2055,7 @@ static void TOOLBAR_Cust_MoveButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT nInde } } -static void TOOLBAR_Cust_AddButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT nIndexAvail, INT nIndexTo) +static void TOOLBAR_Cust_AddButton(const CUSTDLG_INFO *custInfo, HWND hwnd, INT nIndexAvail, INT nIndexTo) { NMTOOLBARW nmtb; @@ -2101,7 +2103,7 @@ static void TOOLBAR_Cust_AddButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT nIndex } } -static void TOOLBAR_Cust_RemoveButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT index) +static void TOOLBAR_Cust_RemoveButton(const CUSTDLG_INFO *custInfo, HWND hwnd, INT index) { PCUSTOMBUTTON btnInfo; HWND hwndList = GetDlgItem(hwnd, IDC_TOOLBARBTN_LBOX); @@ -2131,7 +2133,8 @@ static void TOOLBAR_Cust_RemoveButton(PCUSTDLG_INFO custInfo, HWND hwnd, INT ind } /* drag list notification function for toolbar buttons list box */ -static LRESULT TOOLBAR_Cust_ToolbarDragListNotification(PCUSTDLG_INFO custInfo, HWND hwnd, DRAGLISTINFO *pDLI) +static LRESULT TOOLBAR_Cust_ToolbarDragListNotification(const CUSTDLG_INFO *custInfo, HWND hwnd, + const DRAGLISTINFO *pDLI) { HWND hwndList = GetDlgItem(hwnd, IDC_TOOLBARBTN_LBOX); switch (pDLI->uNotification) @@ -2205,7 +2208,8 @@ static LRESULT TOOLBAR_Cust_ToolbarDragListNotification(PCUSTDLG_INFO custInfo, } /* drag list notification function for available buttons list box */ -static LRESULT TOOLBAR_Cust_AvailDragListNotification(PCUSTDLG_INFO custInfo, HWND hwnd, DRAGLISTINFO *pDLI) +static LRESULT TOOLBAR_Cust_AvailDragListNotification(const CUSTDLG_INFO *custInfo, HWND hwnd, + const DRAGLISTINFO *pDLI) { HWND hwndList = GetDlgItem(hwnd, IDC_TOOLBARBTN_LBOX); switch (pDLI->uNotification) @@ -2670,7 +2674,8 @@ TOOLBAR_AddBitmapToImageList(TOOLBAR_INFO *infoPtr, HIMAGELIST himlDef, const TB /* enlarge the bitmap if needed */ ImageList_GetIconSize(himlDef, &cxIcon, &cyIcon); - COMCTL32_EnsureBitmapSize(&hbmLoad, cxIcon*(INT)bitmap->nButtons, cyIcon, comctl32_color.clrBtnFace); + if (bitmap->hInst != COMCTL32_hModule) + COMCTL32_EnsureBitmapSize(&hbmLoad, cxIcon*(INT)bitmap->nButtons, cyIcon, comctl32_color.clrBtnFace); nIndex = ImageList_AddMasked(himlDef, hbmLoad, comctl32_color.clrBtnFace); DeleteObject(hbmLoad); @@ -2776,22 +2781,13 @@ TOOLBAR_AddBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam) /* Windows resize all the buttons to the size of a newly added standard image */ if (lpAddBmp->nID & 1) { - /* large icons */ - /* FIXME: on windows the size of the images is 25x24 but the size of the bitmap - * in rsrc is only 24x24. Fix the bitmap (how?) and then fix this - */ - SendMessageW (hwnd, TB_SETBITMAPSIZE, 0, - MAKELPARAM((WORD)24, (WORD)24)); - SendMessageW (hwnd, TB_SETBUTTONSIZE, 0, - MAKELPARAM((WORD)31, (WORD)30)); + /* large icons: 24x24. Will make the button 31x30 */ + SendMessageW (hwnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(24, 24)); } else { - /* small icons */ - SendMessageW (hwnd, TB_SETBITMAPSIZE, 0, - MAKELPARAM((WORD)16, (WORD)16)); - SendMessageW (hwnd, TB_SETBUTTONSIZE, 0, - MAKELPARAM((WORD)22, (WORD)22)); + /* small icons: 16x16. Will make the buttons 23x22 */ + SendMessageW (hwnd, TB_SETBITMAPSIZE, 0, MAKELPARAM(16, 16)); } TOOLBAR_CalcToolbar (hwnd); @@ -3358,17 +3354,26 @@ TOOLBAR_GetButton (HWND hwnd, WPARAM wParam, LPARAM lParam) static LRESULT -TOOLBAR_GetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam) +TOOLBAR_GetButtonInfoT(HWND hwnd, WPARAM wParam, LPARAM lParam, BOOL bUnicode) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); - LPTBBUTTONINFOA lpTbInfo = (LPTBBUTTONINFOA)lParam; + /* TBBUTTONINFOW and TBBUTTONINFOA have the same layout*/ + LPTBBUTTONINFOW lpTbInfo = (LPTBBUTTONINFOW)lParam; TBUTTON_INFO *btnPtr; INT nIndex; if (lpTbInfo == NULL) return -1; - if (lpTbInfo->cbSize < sizeof(TBBUTTONINFOA)) + + /* MSDN documents a iImageLabel field added in Vista but it is not present in + * the headers and tests shows that even with comctl 6 Vista accepts only the + * original TBBUTTONINFO size + */ + if (lpTbInfo->cbSize != sizeof(TBBUTTONINFOW)) + { + WARN("Invalid button size\n"); return -1; + } nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, lpTbInfo->dwMask & 0x80000000); @@ -3392,10 +3397,12 @@ TOOLBAR_GetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam) if (lpTbInfo->dwMask & TBIF_TEXT) { /* TB_GETBUTTONINFO doesn't retrieve text from the string list, so we can't use TOOLBAR_GetText here */ - LPWSTR lpText; if (HIWORD(btnPtr->iString) && (btnPtr->iString != -1)) { - lpText = (LPWSTR)btnPtr->iString; - Str_GetPtrWtoA (lpText, lpTbInfo->pszText,lpTbInfo->cchText); + LPWSTR lpText = (LPWSTR)btnPtr->iString; + if (bUnicode) + Str_GetPtrW(lpText, lpTbInfo->pszText, lpTbInfo->cchText); + else + Str_GetPtrWtoA(lpText, (LPSTR)lpTbInfo->pszText, lpTbInfo->cchText); } else lpTbInfo->pszText[0] = '\0'; } @@ -3403,56 +3410,6 @@ TOOLBAR_GetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam) } -static LRESULT -TOOLBAR_GetButtonInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam) -{ - TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); - LPTBBUTTONINFOW lpTbInfo = (LPTBBUTTONINFOW)lParam; - TBUTTON_INFO *btnPtr; - INT nIndex; - - if (lpTbInfo == NULL) - return -1; - if (lpTbInfo->cbSize < sizeof(TBBUTTONINFOW)) - return -1; - - nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam, - lpTbInfo->dwMask & 0x80000000); - if (nIndex == -1) - return -1; - - btnPtr = &infoPtr->buttons[nIndex]; - - if(!btnPtr) - return -1; - - if (lpTbInfo->dwMask & TBIF_COMMAND) - lpTbInfo->idCommand = btnPtr->idCommand; - if (lpTbInfo->dwMask & TBIF_IMAGE) - lpTbInfo->iImage = btnPtr->iBitmap; - if (lpTbInfo->dwMask & TBIF_LPARAM) - lpTbInfo->lParam = btnPtr->dwData; - if (lpTbInfo->dwMask & TBIF_SIZE) - lpTbInfo->cx = (WORD)(btnPtr->rect.right - btnPtr->rect.left); - if (lpTbInfo->dwMask & TBIF_STATE) - lpTbInfo->fsState = btnPtr->fsState; - if (lpTbInfo->dwMask & TBIF_STYLE) - lpTbInfo->fsStyle = btnPtr->fsStyle; - if (lpTbInfo->dwMask & TBIF_TEXT) { - /* TB_GETBUTTONINFO doesn't retrieve text from the string list, so we - can't use TOOLBAR_GetText here */ - LPWSTR lpText; - if (HIWORD(btnPtr->iString) && (btnPtr->iString != -1)) { - lpText = (LPWSTR)btnPtr->iString; - Str_GetPtrW (lpText,lpTbInfo->pszText,lpTbInfo->cchText); - } else - lpTbInfo->pszText[0] = '\0'; - } - - return nIndex; -} - - static LRESULT TOOLBAR_GetButtonSize (HWND hwnd) { @@ -3519,7 +3476,7 @@ TOOLBAR_GetDisabledImageList (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLBAR_GetExtendedStyle (HWND hwnd) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); @@ -3739,7 +3696,7 @@ TOOLBAR_GetUnicodeFormat (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLBAR_GetVersion (HWND hwnd) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); @@ -3766,7 +3723,7 @@ TOOLBAR_HideButton (HWND hwnd, WPARAM wParam, LPARAM lParam) else btnPtr->fsState |= TBSTATE_HIDDEN; - TOOLBAR_CalcToolbar (hwnd); + TOOLBAR_LayoutToolbar (hwnd); InvalidateRect (hwnd, NULL, TRUE); @@ -3774,7 +3731,7 @@ TOOLBAR_HideButton (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLBAR_HitTest (HWND hwnd, WPARAM wParam, LPARAM lParam) { return TOOLBAR_InternalHitTest (hwnd, (LPPOINT)lParam); @@ -4045,7 +4002,7 @@ TOOLBAR_MarkButton (HWND hwnd, WPARAM wParam, LPARAM lParam) /* fixes up an index of a button affected by a move */ -inline static void TOOLBAR_MoveFixupIndex(INT* pIndex, INT nIndex, INT nMoveIndex, BOOL bMoveUp) +static inline void TOOLBAR_MoveFixupIndex(INT* pIndex, INT nIndex, INT nMoveIndex, BOOL bMoveUp) { if (bMoveUp) { @@ -4108,7 +4065,7 @@ TOOLBAR_MoveButton (HWND hwnd, WPARAM wParam, LPARAM lParam) TOOLBAR_MoveFixupIndex(&infoPtr->nHotItem, nIndex, nMoveIndex, FALSE); } - TOOLBAR_CalcToolbar(hwnd); + TOOLBAR_LayoutToolbar(hwnd); TOOLBAR_AutoSize(hwnd); InvalidateRect(hwnd, NULL, TRUE); @@ -4223,7 +4180,7 @@ TOOLBAR_ReplaceBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam) /* helper for TOOLBAR_SaveRestoreW */ static BOOL -TOOLBAR_Save(TOOLBAR_INFO *infoPtr, LPTBSAVEPARAMSW lpSave) +TOOLBAR_Save(const TOOLBAR_INFO *infoPtr, const TBSAVEPARAMSW *lpSave) { FIXME("save to %s %s\n", debugstr_w(lpSave->pszSubKey), debugstr_w(lpSave->pszValueName)); @@ -4251,7 +4208,7 @@ TOOLBAR_DeleteAllButtons(TOOLBAR_INFO *infoPtr) /* helper for TOOLBAR_SaveRestoreW */ static BOOL -TOOLBAR_Restore(TOOLBAR_INFO *infoPtr, LPTBSAVEPARAMSW lpSave) +TOOLBAR_Restore(TOOLBAR_INFO *infoPtr, const TBSAVEPARAMSW *lpSave) { LONG res; HKEY hkey = NULL; @@ -4356,7 +4313,7 @@ TOOLBAR_Restore(TOOLBAR_INFO *infoPtr, LPTBSAVEPARAMSW lpSave) static LRESULT -TOOLBAR_SaveRestoreW (HWND hwnd, WPARAM wParam, LPTBSAVEPARAMSW lpSave) +TOOLBAR_SaveRestoreW (HWND hwnd, WPARAM wParam, const TBSAVEPARAMSW *lpSave) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); @@ -4370,7 +4327,7 @@ TOOLBAR_SaveRestoreW (HWND hwnd, WPARAM wParam, LPTBSAVEPARAMSW lpSave) static LRESULT -TOOLBAR_SaveRestoreA (HWND hwnd, WPARAM wParam, LPTBSAVEPARAMSA lpSave) +TOOLBAR_SaveRestoreA (HWND hwnd, WPARAM wParam, const TBSAVEPARAMSA *lpSave) { LPWSTR pszValueName = 0, pszSubKey = 0; TBSAVEPARAMSW SaveW; @@ -4442,7 +4399,7 @@ TOOLBAR_SetBitmapSize (HWND hwnd, WPARAM wParam, LPARAM lParam) LOWORD(lParam), HIWORD(lParam)); infoPtr->nBitmapWidth = (INT)LOWORD(lParam); - infoPtr->nVBitmapHeight = infoPtr->nBitmapHeight = (INT)HIWORD(lParam); + infoPtr->nBitmapHeight = (INT)HIWORD(lParam); if ((himlDef == infoPtr->himlInt) && (ImageList_GetImageCount(infoPtr->himlInt) == 0)) @@ -4593,7 +4550,7 @@ TOOLBAR_SetButtonSize (HWND hwnd, WPARAM wParam, LPARAM lParam) if (cy == 0) cx = 22; cx = max(cx, infoPtr->szPadding.cx + infoPtr->nBitmapWidth); - cy = max(cy, infoPtr->szPadding.cy + infoPtr->nVBitmapHeight); + cy = max(cy, infoPtr->szPadding.cy + infoPtr->nBitmapHeight); infoPtr->nButtonWidth = cx; infoPtr->nButtonHeight = cy; @@ -4852,7 +4809,6 @@ TOOLBAR_SetImageList (HWND hwnd, WPARAM wParam, LPARAM lParam) infoPtr->nBitmapWidth = 1; infoPtr->nBitmapHeight = 1; } - infoPtr->nVBitmapHeight = infoPtr->nBitmapHeight; TOOLBAR_CalcToolbar(hwnd); TRACE("hwnd %p, new himl=%p, id = %d, count=%d, bitmap w=%d, h=%d\n", @@ -5058,7 +5014,7 @@ TOOLBAR_SetStyle (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLBAR_SetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); @@ -5101,7 +5057,7 @@ TOOLBAR_GetColorScheme (HWND hwnd, LPCOLORSCHEME lParam) static LRESULT -TOOLBAR_SetColorScheme (HWND hwnd, LPCOLORSCHEME lParam) +TOOLBAR_SetColorScheme (HWND hwnd, const COLORSCHEME *lParam) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); @@ -5321,13 +5277,8 @@ TOOLBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam) /* initialize info structure */ infoPtr->nButtonWidth = 23; infoPtr->nButtonHeight = 22; - infoPtr->nBitmapHeight = 15; + infoPtr->nBitmapHeight = 16; infoPtr->nBitmapWidth = 16; - /* By default Windows creates an image list with 16x15 icons but computes the button size as - * if the icons were 16x16. That's why we keep infoPtr->nVBitmapHeight. After a call to - * TB_SETBITMAPSIZE or TB_SETIMAGELIST the nVBitmapHeight = nBitmapHeight. - */ - infoPtr->nVBitmapHeight = 16; infoPtr->nMaxTextRows = 1; infoPtr->cxMin = -1; @@ -5870,6 +5821,10 @@ TOOLBAR_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam) { SendMessageW (infoPtr->hwndNotify, WM_COMMAND, MAKEWPARAM(infoPtr->buttons[nHit].idCommand, BN_CLICKED), (LPARAM)hwnd); + + /* In case we have just been destroyed... */ + if(!IsWindow(hwnd)) + return 0; } } @@ -6078,7 +6033,7 @@ TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLBAR_NCActivate (HWND hwnd, WPARAM wParam, LPARAM lParam) { /* if (wndPtr->dwStyle & CCS_NODIVIDER) */ @@ -6088,7 +6043,7 @@ TOOLBAR_NCActivate (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLBAR_NCCalcSize (HWND hwnd, WPARAM wParam, LPARAM lParam) { if (!(GetWindowLongW(hwnd, GWL_STYLE) & CCS_NODIVIDER)) @@ -6336,7 +6291,7 @@ static LRESULT TOOLBAR_TTGetDispInfo (TOOLBAR_INFO *infoPtr, NMTTDISPINFOW *lpnm } -inline static LRESULT +static inline LRESULT TOOLBAR_Notify (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); @@ -6386,7 +6341,7 @@ TOOLBAR_Notify (HWND hwnd, WPARAM wParam, LPARAM lParam) static LRESULT -TOOLBAR_NotifyFormat(TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +TOOLBAR_NotifyFormat(const TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { LRESULT format; @@ -6547,7 +6502,7 @@ TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam) static LRESULT -TOOLBAR_StyleChanged (HWND hwnd, INT nType, LPSTYLESTRUCT lpStyle) +TOOLBAR_StyleChanged (HWND hwnd, INT nType, const STYLESTRUCT *lpStyle) { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); @@ -6669,10 +6624,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return TOOLBAR_GetButton (hwnd, wParam, lParam); case TB_GETBUTTONINFOA: - return TOOLBAR_GetButtonInfoA (hwnd, wParam, lParam); + return TOOLBAR_GetButtonInfoT(hwnd, wParam, lParam, FALSE); case TB_GETBUTTONINFOW: - return TOOLBAR_GetButtonInfoW (hwnd, wParam, lParam); + return TOOLBAR_GetButtonInfoT(hwnd, wParam, lParam, TRUE); case TB_GETBUTTONSIZE: return TOOLBAR_GetButtonSize (hwnd); @@ -7087,7 +7042,7 @@ static VOID TOOLBAR_DeleteImageList(PIMLENTRY **pies, INT *cies) } -static PIMLENTRY TOOLBAR_GetImageListEntry(PIMLENTRY *pies, INT cies, INT id) +static PIMLENTRY TOOLBAR_GetImageListEntry(const PIMLENTRY *pies, INT cies, INT id) { PIMLENTRY c = NULL; @@ -7109,7 +7064,7 @@ static PIMLENTRY TOOLBAR_GetImageListEntry(PIMLENTRY *pies, INT cies, INT id) } -static HIMAGELIST TOOLBAR_GetImageList(PIMLENTRY *pies, INT cies, INT id) +static HIMAGELIST TOOLBAR_GetImageList(const PIMLENTRY *pies, INT cies, INT id) { HIMAGELIST himlDef = 0; PIMLENTRY pie = TOOLBAR_GetImageListEntry(pies, cies, id); @@ -7121,7 +7076,7 @@ static HIMAGELIST TOOLBAR_GetImageList(PIMLENTRY *pies, INT cies, INT id) } -static BOOL TOOLBAR_GetButtonInfo(TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb) +static BOOL TOOLBAR_GetButtonInfo(const TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb) { if (infoPtr->bUnicode) return TOOLBAR_SendNotify(&nmtb->hdr, infoPtr, TBN_GETBUTTONINFOW); @@ -7152,8 +7107,7 @@ static BOOL TOOLBAR_GetButtonInfo(TOOLBAR_INFO *infoPtr, NMTOOLBARW *nmtb) } -static BOOL TOOLBAR_IsButtonRemovable(TOOLBAR_INFO *infoPtr, - int iItem, PCUSTOMBUTTON btnInfo) +static BOOL TOOLBAR_IsButtonRemovable(const TOOLBAR_INFO *infoPtr, int iItem, PCUSTOMBUTTON btnInfo) { NMTOOLBARW nmtb; diff --git a/reactos/dll/win32/comctl32/tooltips.c b/reactos/dll/win32/comctl32/tooltips.c index a4191d40bb5..da5f7d8ea77 100644 --- a/reactos/dll/win32/comctl32/tooltips.c +++ b/reactos/dll/win32/comctl32/tooltips.c @@ -174,7 +174,7 @@ static LRESULT CALLBACK TOOLTIPS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uId, DWORD_PTR dwRef); -inline static UINT_PTR +static inline UINT_PTR TOOLTIPS_GetTitleIconIndex(HICON hIcon) { UINT i; @@ -435,7 +435,7 @@ TOOLTIPS_GetTipText (HWND hwnd, TOOLTIPS_INFO *infoPtr, INT nTool) static void -TOOLTIPS_CalcTipSize (HWND hwnd, TOOLTIPS_INFO *infoPtr, LPSIZE lpSize) +TOOLTIPS_CalcTipSize (HWND hwnd, const TOOLTIPS_INFO *infoPtr, LPSIZE lpSize) { HDC hdc; HFONT hOldFont; @@ -816,7 +816,7 @@ TOOLTIPS_TrackShow (HWND hwnd, TOOLTIPS_INFO *infoPtr) static void -TOOLTIPS_TrackHide (HWND hwnd, TOOLTIPS_INFO *infoPtr) +TOOLTIPS_TrackHide (HWND hwnd, const TOOLTIPS_INFO *infoPtr) { TTTOOL_INFO *toolPtr; NMHDR hdr; @@ -840,7 +840,7 @@ TOOLTIPS_TrackHide (HWND hwnd, TOOLTIPS_INFO *infoPtr) static INT -TOOLTIPS_GetToolFromInfoA (TOOLTIPS_INFO *infoPtr, LPTTTOOLINFOA lpToolInfo) +TOOLTIPS_GetToolFromInfoA (const TOOLTIPS_INFO *infoPtr, const TTTOOLINFOA *lpToolInfo) { TTTOOL_INFO *toolPtr; INT nTool; @@ -867,7 +867,7 @@ TOOLTIPS_GetToolFromInfoA (TOOLTIPS_INFO *infoPtr, LPTTTOOLINFOA lpToolInfo) static INT -TOOLTIPS_GetToolFromInfoW (TOOLTIPS_INFO *infoPtr, LPTTTOOLINFOW lpToolInfo) +TOOLTIPS_GetToolFromInfoW (const TOOLTIPS_INFO *infoPtr, const TTTOOLINFOW *lpToolInfo) { TTTOOL_INFO *toolPtr; INT nTool; @@ -894,7 +894,7 @@ TOOLTIPS_GetToolFromInfoW (TOOLTIPS_INFO *infoPtr, LPTTTOOLINFOW lpToolInfo) static INT -TOOLTIPS_GetToolFromPoint (TOOLTIPS_INFO *infoPtr, HWND hwnd, LPPOINT lpPt) +TOOLTIPS_GetToolFromPoint (const TOOLTIPS_INFO *infoPtr, HWND hwnd, const POINT *lpPt) { TTTOOL_INFO *toolPtr; INT nTool; @@ -1484,7 +1484,7 @@ TOOLTIPS_GetMargin (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_GetMaxTipWidth (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); @@ -1540,7 +1540,7 @@ TOOLTIPS_GetTextW (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_GetTipBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); @@ -1548,7 +1548,7 @@ TOOLTIPS_GetTipBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_GetTipTextColor (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); @@ -1556,7 +1556,7 @@ TOOLTIPS_GetTipTextColor (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_GetToolCount (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); @@ -1756,7 +1756,7 @@ TOOLTIPS_NewToolRectW (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_Pop (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); @@ -1889,7 +1889,7 @@ TOOLTIPS_SetMargin (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_SetMaxTipWidth (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); @@ -1901,7 +1901,7 @@ TOOLTIPS_SetMaxTipWidth (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_SetTipBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); @@ -1912,7 +1912,7 @@ TOOLTIPS_SetTipBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam) } -inline static LRESULT +static inline LRESULT TOOLTIPS_SetTipTextColor (HWND hwnd, WPARAM wParam, LPARAM lParam) { TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); diff --git a/reactos/dll/win32/comctl32/trackbar.c b/reactos/dll/win32/comctl32/trackbar.c index b61e64d0c3a..8282e7c089f 100644 --- a/reactos/dll/win32/comctl32/trackbar.c +++ b/reactos/dll/win32/comctl32/trackbar.c @@ -103,14 +103,14 @@ typedef struct static const WCHAR themeClass[] = { 'T','r','a','c','k','b','a','r',0 }; static inline int -notify_customdraw(TRACKBAR_INFO *infoPtr, NMCUSTOMDRAW *pnmcd, int stage) +notify_customdraw (const TRACKBAR_INFO *infoPtr, NMCUSTOMDRAW *pnmcd, int stage) { pnmcd->dwDrawStage = stage; return SendMessageW (infoPtr->hwndNotify, WM_NOTIFY, pnmcd->hdr.idFrom, (LPARAM)pnmcd); } -static LRESULT notify_hdr(TRACKBAR_INFO *infoPtr, INT code, LPNMHDR pnmh) +static LRESULT notify_hdr (const TRACKBAR_INFO *infoPtr, INT code, LPNMHDR pnmh) { LRESULT result; @@ -127,14 +127,14 @@ static LRESULT notify_hdr(TRACKBAR_INFO *infoPtr, INT code, LPNMHDR pnmh) return result; } -static inline int notify(TRACKBAR_INFO *infoPtr, INT code) +static inline int notify (const TRACKBAR_INFO *infoPtr, INT code) { NMHDR nmh; return notify_hdr(infoPtr, code, &nmh); } static BOOL -notify_with_scroll (TRACKBAR_INFO *infoPtr, UINT code) +notify_with_scroll (const TRACKBAR_INFO *infoPtr, UINT code) { BOOL bVert = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_VERT; @@ -179,8 +179,7 @@ static void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr) (in range of trackbar) */ static inline LONG -TRACKBAR_ConvertPlaceToPosition (TRACKBAR_INFO *infoPtr, int place, - int vertical) +TRACKBAR_ConvertPlaceToPosition (const TRACKBAR_INFO *infoPtr, int place, int vertical) { double range, width, pos, offsetthumb; @@ -207,7 +206,7 @@ TRACKBAR_ConvertPlaceToPosition (TRACKBAR_INFO *infoPtr, int place, /* return: 0> prev, 0 none, >0 next */ static LONG -TRACKBAR_GetAutoPageDirection (TRACKBAR_INFO *infoPtr, POINT clickPoint) +TRACKBAR_GetAutoPageDirection (const TRACKBAR_INFO *infoPtr, POINT clickPoint) { DWORD dwStyle = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE); RECT pageRect; @@ -237,7 +236,7 @@ TRACKBAR_GetAutoPageDirection (TRACKBAR_INFO *infoPtr, POINT clickPoint) return 0; } -inline static void +static inline void TRACKBAR_PageDown (TRACKBAR_INFO *infoPtr) { if (infoPtr->lPos == infoPtr->lRangeMax) return; @@ -249,7 +248,7 @@ TRACKBAR_PageDown (TRACKBAR_INFO *infoPtr) } -inline static void +static inline void TRACKBAR_PageUp (TRACKBAR_INFO *infoPtr) { if (infoPtr->lPos == infoPtr->lRangeMin) return; @@ -260,7 +259,7 @@ TRACKBAR_PageUp (TRACKBAR_INFO *infoPtr) notify_with_scroll (infoPtr, TB_PAGEUP); } -inline static void TRACKBAR_LineUp(TRACKBAR_INFO *infoPtr) +static inline void TRACKBAR_LineUp(TRACKBAR_INFO *infoPtr) { if (infoPtr->lPos == infoPtr->lRangeMin) return; infoPtr->lPos -= infoPtr->lLineSize; @@ -269,7 +268,7 @@ inline static void TRACKBAR_LineUp(TRACKBAR_INFO *infoPtr) notify_with_scroll (infoPtr, TB_LINEUP); } -inline static void TRACKBAR_LineDown(TRACKBAR_INFO *infoPtr) +static inline void TRACKBAR_LineDown(TRACKBAR_INFO *infoPtr) { if (infoPtr->lPos == infoPtr->lRangeMax) return; infoPtr->lPos += infoPtr->lLineSize; @@ -334,7 +333,7 @@ TRACKBAR_CalcChannel (TRACKBAR_INFO *infoPtr) } static void -TRACKBAR_CalcThumb (TRACKBAR_INFO *infoPtr, LONG lPos, RECT *thumb) +TRACKBAR_CalcThumb (const TRACKBAR_INFO *infoPtr, LONG lPos, RECT *thumb) { int range, width, height, thumbwidth; DWORD dwStyle = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE); @@ -374,20 +373,20 @@ TRACKBAR_CalcThumb (TRACKBAR_INFO *infoPtr, LONG lPos, RECT *thumb) } } -inline static void +static inline void TRACKBAR_UpdateThumb (TRACKBAR_INFO *infoPtr) { TRACKBAR_CalcThumb(infoPtr, infoPtr->lPos, &infoPtr->rcThumb); } static inline void -TRACKBAR_InvalidateAll(TRACKBAR_INFO * infoPtr) +TRACKBAR_InvalidateAll (const TRACKBAR_INFO *infoPtr) { InvalidateRect(infoPtr->hwndSelf, NULL, FALSE); } static void -TRACKBAR_InvalidateThumb (TRACKBAR_INFO *infoPtr, LONG thumbPos) +TRACKBAR_InvalidateThumb (const TRACKBAR_INFO *infoPtr, LONG thumbPos) { RECT rcThumb; @@ -397,15 +396,15 @@ TRACKBAR_InvalidateThumb (TRACKBAR_INFO *infoPtr, LONG thumbPos) } static inline void -TRACKBAR_InvalidateThumbMove (TRACKBAR_INFO *infoPtr, LONG oldPos, LONG newPos) +TRACKBAR_InvalidateThumbMove (const TRACKBAR_INFO *infoPtr, LONG oldPos, LONG newPos) { TRACKBAR_InvalidateThumb (infoPtr, oldPos); if (newPos != oldPos) TRACKBAR_InvalidateThumb (infoPtr, newPos); } -inline static BOOL -TRACKBAR_HasSelection (TRACKBAR_INFO *infoPtr) +static inline BOOL +TRACKBAR_HasSelection (const TRACKBAR_INFO *infoPtr) { return infoPtr->lSelMin != infoPtr->lSelMax; } @@ -468,7 +467,7 @@ TRACKBAR_AutoPage (TRACKBAR_INFO *infoPtr, POINT clickPoint) /* Trackbar drawing code. I like my spaghetti done milanese. */ static void -TRACKBAR_DrawChannel (TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) +TRACKBAR_DrawChannel (const TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) { RECT rcChannel = infoPtr->rcChannel; HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); @@ -491,7 +490,7 @@ TRACKBAR_DrawChannel (TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) } static void -TRACKBAR_DrawOneTic (TRACKBAR_INFO *infoPtr, HDC hdc, LONG ticPos, int flags) +TRACKBAR_DrawOneTic (const TRACKBAR_INFO *infoPtr, HDC hdc, LONG ticPos, int flags) { int x, y, ox, oy, range, side, indent = 0, len = 3; int offsetthumb; @@ -566,7 +565,7 @@ TRACKBAR_DrawOneTic (TRACKBAR_INFO *infoPtr, HDC hdc, LONG ticPos, int flags) static inline void -TRACKBAR_DrawTic (TRACKBAR_INFO *infoPtr, HDC hdc, LONG ticPos, int flags) +TRACKBAR_DrawTic (const TRACKBAR_INFO *infoPtr, HDC hdc, LONG ticPos, int flags) { if ((flags & (TBS_LEFT | TBS_TOP)) || (flags & TBS_BOTH)) TRACKBAR_DrawOneTic (infoPtr, hdc, ticPos, flags | TBS_LEFT); @@ -576,7 +575,7 @@ TRACKBAR_DrawTic (TRACKBAR_INFO *infoPtr, HDC hdc, LONG ticPos, int flags) } static void -TRACKBAR_DrawTics (TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) +TRACKBAR_DrawTics (const TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) { unsigned int i; int ticFlags = dwStyle & 0x0f; @@ -615,7 +614,7 @@ TRACKBAR_DrawTics (TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) } static void -TRACKBAR_DrawThumb(TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) +TRACKBAR_DrawThumb (const TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) { HBRUSH oldbr; HPEN oldpen; @@ -757,8 +756,8 @@ TRACKBAR_DrawThumb(TRACKBAR_INFO *infoPtr, HDC hdc, DWORD dwStyle) } -inline static void -TRACKBAR_ActivateToolTip (TRACKBAR_INFO *infoPtr, BOOL fShow) +static inline void +TRACKBAR_ActivateToolTip (const TRACKBAR_INFO *infoPtr, BOOL fShow) { TTTOOLINFOW ti; @@ -773,7 +772,7 @@ TRACKBAR_ActivateToolTip (TRACKBAR_INFO *infoPtr, BOOL fShow) static void -TRACKBAR_UpdateToolTip (TRACKBAR_INFO *infoPtr) +TRACKBAR_UpdateToolTip (const TRACKBAR_INFO *infoPtr) { DWORD dwStyle = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE); WCHAR buf[80]; @@ -942,7 +941,7 @@ cleanup: static void -TRACKBAR_AlignBuddies (TRACKBAR_INFO *infoPtr) +TRACKBAR_AlignBuddies (const TRACKBAR_INFO *infoPtr) { DWORD dwStyle = GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE); HWND hwndParent = GetParent (infoPtr->hwndSelf); @@ -1022,8 +1021,8 @@ TRACKBAR_ClearTics (TRACKBAR_INFO *infoPtr, BOOL fRedraw) } -inline static LRESULT -TRACKBAR_GetChannelRect (TRACKBAR_INFO *infoPtr, LPRECT lprc) +static inline LRESULT +TRACKBAR_GetChannelRect (const TRACKBAR_INFO *infoPtr, LPRECT lprc) { if (lprc == NULL) return 0; @@ -1036,17 +1035,20 @@ TRACKBAR_GetChannelRect (TRACKBAR_INFO *infoPtr, LPRECT lprc) } -inline static LONG -TRACKBAR_GetNumTics (TRACKBAR_INFO *infoPtr) +static inline LONG +TRACKBAR_GetNumTics (const TRACKBAR_INFO *infoPtr) { if (GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_NOTICKS) return 0; - return infoPtr->uNumTics + 2; + if(infoPtr->uNumTics == 0) + return 2; + else + return infoPtr->uNumTics + 1; } -static int comp_tics(const void *ap, const void *bp) +static int comp_tics (const void *ap, const void *bp) { const DWORD a = *(const DWORD *)ap; const DWORD b = *(const DWORD *)bp; @@ -1058,8 +1060,8 @@ static int comp_tics(const void *ap, const void *bp) } -inline static LONG -TRACKBAR_GetTic (TRACKBAR_INFO *infoPtr, INT iTic) +static inline LONG +TRACKBAR_GetTic (const TRACKBAR_INFO *infoPtr, INT iTic) { if ((iTic < 0) || (iTic >= infoPtr->uNumTics) || !infoPtr->tics) return -1; @@ -1069,8 +1071,8 @@ TRACKBAR_GetTic (TRACKBAR_INFO *infoPtr, INT iTic) } -inline static LONG -TRACKBAR_GetTicPos (TRACKBAR_INFO *infoPtr, INT iTic) +static inline LONG +TRACKBAR_GetTicPos (const TRACKBAR_INFO *infoPtr, INT iTic) { LONG range, width, pos, tic; int offsetthumb; @@ -1111,7 +1113,7 @@ TRACKBAR_SetBuddy (TRACKBAR_INFO *infoPtr, BOOL fLocation, HWND hwndBuddy) } -inline static LONG +static inline LONG TRACKBAR_SetLineSize (TRACKBAR_INFO *infoPtr, LONG lLineSize) { LONG lTemp = infoPtr->lLineSize; @@ -1122,7 +1124,7 @@ TRACKBAR_SetLineSize (TRACKBAR_INFO *infoPtr, LONG lLineSize) } -inline static LONG +static inline LONG TRACKBAR_SetPageSize (TRACKBAR_INFO *infoPtr, LONG lPageSize) { LONG lTemp = infoPtr->lPageSize; @@ -1133,7 +1135,7 @@ TRACKBAR_SetPageSize (TRACKBAR_INFO *infoPtr, LONG lPageSize) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetPos (TRACKBAR_INFO *infoPtr, BOOL fPosition, LONG lPosition) { LONG oldPos = infoPtr->lPos; @@ -1152,7 +1154,7 @@ TRACKBAR_SetPos (TRACKBAR_INFO *infoPtr, BOOL fPosition, LONG lPosition) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetRange (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lRange) { infoPtr->lRangeMin = (SHORT)LOWORD(lRange); @@ -1177,7 +1179,7 @@ TRACKBAR_SetRange (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lRange) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetRangeMax (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lMax) { infoPtr->lRangeMax = lMax; @@ -1195,7 +1197,7 @@ TRACKBAR_SetRangeMax (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lMax) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetRangeMin (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lMin) { infoPtr->lRangeMin = lMin; @@ -1213,11 +1215,14 @@ TRACKBAR_SetRangeMin (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lMin) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetSel (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lSel) { - if (!GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE) + if (!(GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)){ + infoPtr->lSelMin = 0; + infoPtr->lSelMax = 0; return 0; + } infoPtr->lSelMin = (SHORT)LOWORD(lSel); infoPtr->lSelMax = (SHORT)HIWORD(lSel); @@ -1234,11 +1239,13 @@ TRACKBAR_SetSel (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lSel) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetSelEnd (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lEnd) { - if (!GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE) + if (!(GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)){ + infoPtr->lSelMax = 0; return 0; + } infoPtr->lSelMax = lEnd; infoPtr->flags |= TB_SELECTIONCHANGED; @@ -1252,11 +1259,13 @@ TRACKBAR_SetSelEnd (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lEnd) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetSelStart (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lStart) { - if (!GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE) + if (!(GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_ENABLESELRANGE)){ + infoPtr->lSelMin = 0; return 0; + } infoPtr->lSelMin = lStart; infoPtr->flags |=TB_SELECTIONCHANGED; @@ -1270,7 +1279,7 @@ TRACKBAR_SetSelStart (TRACKBAR_INFO *infoPtr, BOOL fRedraw, LONG lStart) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetThumbLength (TRACKBAR_INFO *infoPtr, UINT iLength) { if (GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_FIXEDLENGTH) { @@ -1283,7 +1292,7 @@ TRACKBAR_SetThumbLength (TRACKBAR_INFO *infoPtr, UINT iLength) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetTic (TRACKBAR_INFO *infoPtr, LONG lPos) { if (GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_AUTOTICKS) @@ -1310,7 +1319,7 @@ TRACKBAR_SetTic (TRACKBAR_INFO *infoPtr, LONG lPos) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetTicFreq (TRACKBAR_INFO *infoPtr, WORD wFreq) { if (GetWindowLongW (infoPtr->hwndSelf, GWL_STYLE) & TBS_AUTOTICKS) { @@ -1323,7 +1332,7 @@ TRACKBAR_SetTicFreq (TRACKBAR_INFO *infoPtr, WORD wFreq) } -inline static INT +static inline INT TRACKBAR_SetTipSide (TRACKBAR_INFO *infoPtr, INT fLocation) { INT fTemp = infoPtr->fLocation; @@ -1334,7 +1343,7 @@ TRACKBAR_SetTipSide (TRACKBAR_INFO *infoPtr, INT fLocation) } -inline static LRESULT +static inline LRESULT TRACKBAR_SetToolTips (TRACKBAR_INFO *infoPtr, HWND hwndTT) { infoPtr->hwndToolTip = hwndTT; @@ -1343,7 +1352,7 @@ TRACKBAR_SetToolTips (TRACKBAR_INFO *infoPtr, HWND hwndTT) } -inline static BOOL +static inline BOOL TRACKBAR_SetUnicodeFormat (TRACKBAR_INFO *infoPtr, BOOL fUnicode) { BOOL bTemp = infoPtr->bUnicode; @@ -1383,7 +1392,7 @@ TRACKBAR_InitializeThumb (TRACKBAR_INFO *infoPtr) static LRESULT -TRACKBAR_Create (HWND hwnd, LPCREATESTRUCTW lpcs) +TRACKBAR_Create (HWND hwnd, const CREATESTRUCTW *lpcs) { TRACKBAR_INFO *infoPtr; DWORD dwStyle; @@ -1515,7 +1524,7 @@ TRACKBAR_LButtonUp (TRACKBAR_INFO *infoPtr, DWORD fwKeys, INT x, INT y) static LRESULT -TRACKBAR_CaptureChanged (TRACKBAR_INFO *infoPtr) +TRACKBAR_CaptureChanged (const TRACKBAR_INFO *infoPtr) { notify_with_scroll (infoPtr, TB_ENDTRACK); return 0; @@ -1560,7 +1569,7 @@ TRACKBAR_Size (TRACKBAR_INFO *infoPtr, DWORD fwSizeType, INT nWidth, INT nHeight static LRESULT -TRACKBAR_Timer (TRACKBAR_INFO *infoPtr, INT wTimerID, TIMERPROC *tmrpc) +TRACKBAR_Timer (TRACKBAR_INFO *infoPtr, INT wTimerID, const TIMERPROC *tmrpc) { if (infoPtr->flags & TB_AUTO_PAGE) { POINT pt; @@ -1573,7 +1582,7 @@ TRACKBAR_Timer (TRACKBAR_INFO *infoPtr, INT wTimerID, TIMERPROC *tmrpc) /* update theme after a WM_THEMECHANGED message */ -static LRESULT theme_changed (TRACKBAR_INFO* infoPtr) +static LRESULT theme_changed (const TRACKBAR_INFO* infoPtr) { HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); CloseThemeData (theme); @@ -1702,8 +1711,8 @@ TRACKBAR_KeyDown (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData) } -inline static BOOL -TRACKBAR_KeyUp (TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData) +static inline BOOL +TRACKBAR_KeyUp (const TRACKBAR_INFO *infoPtr, INT nVirtKey, DWORD lKeyData) { switch (nVirtKey) { case VK_LEFT: diff --git a/reactos/dll/win32/comctl32/treeview.c b/reactos/dll/win32/comctl32/treeview.c index 8ababc9ae12..8adf28bd3c0 100644 --- a/reactos/dll/win32/comctl32/treeview.c +++ b/reactos/dll/win32/comctl32/treeview.c @@ -204,12 +204,12 @@ static const WCHAR themeClass[] = { 'T','r','e','e','v','i','e','w',0 }; typedef VOID (*TREEVIEW_ItemEnumFunc)(TREEVIEW_INFO *, TREEVIEW_ITEM *,LPVOID); -static VOID TREEVIEW_Invalidate(TREEVIEW_INFO *, TREEVIEW_ITEM *); +static VOID TREEVIEW_Invalidate(const TREEVIEW_INFO *, const TREEVIEW_ITEM *); static LRESULT TREEVIEW_DoSelectItem(TREEVIEW_INFO *, INT, HTREEITEM, INT); static VOID TREEVIEW_SetFirstVisible(TREEVIEW_INFO *, TREEVIEW_ITEM *, BOOL); static LRESULT TREEVIEW_EnsureVisible(TREEVIEW_INFO *, HTREEITEM, BOOL); -static LRESULT TREEVIEW_RButtonUp(TREEVIEW_INFO *, LPPOINT); +static LRESULT TREEVIEW_RButtonUp(const TREEVIEW_INFO *, const POINT *); static LRESULT TREEVIEW_EndEditLabelNow(TREEVIEW_INFO *infoPtr, BOOL bCancel); static VOID TREEVIEW_UpdateScrollBars(TREEVIEW_INFO *infoPtr); static LRESULT TREEVIEW_HScroll(TREEVIEW_INFO *, WPARAM); @@ -239,7 +239,7 @@ TREEVIEW_GetInfoPtr(HWND hwnd) /* Don't call this. Nothing wants an item index. */ static inline int -TREEVIEW_GetItemIndex(TREEVIEW_INFO *infoPtr, HTREEITEM handle) +TREEVIEW_GetItemIndex(const TREEVIEW_INFO *infoPtr, HTREEITEM handle) { assert(infoPtr != NULL); @@ -247,7 +247,8 @@ TREEVIEW_GetItemIndex(TREEVIEW_INFO *infoPtr, HTREEITEM handle) } /* Checks if item has changed and needs to be redrawn */ -static inline BOOL item_changed (TREEVIEW_ITEM *tiOld, TREEVIEW_ITEM *tiNew, LPTVITEMEXW tvChange) +static inline BOOL item_changed (const TREEVIEW_ITEM *tiOld, const TREEVIEW_ITEM *tiNew, + const TVITEMEXW *tvChange) { /* Number of children has changed */ if ((tvChange->mask & TVIF_CHILDREN) && (tiOld->cChildren != tiNew->cChildren)) @@ -283,7 +284,7 @@ static inline BOOL item_changed (TREEVIEW_ITEM *tiOld, TREEVIEW_ITEM *tiNew, LPT * This method checks that handle is an item for this tree. */ static BOOL -TREEVIEW_ValidItem(TREEVIEW_INFO *infoPtr, HTREEITEM handle) +TREEVIEW_ValidItem(const TREEVIEW_INFO *infoPtr, HTREEITEM handle) { if (TREEVIEW_GetItemIndex(infoPtr, handle) == -1) { @@ -315,7 +316,7 @@ TREEVIEW_CreateUnderlineFont(HFONT hOrigFont) } static inline HFONT -TREEVIEW_FontForItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) +TREEVIEW_FontForItem(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item) { if ((infoPtr->dwStyle & TVS_TRACKSELECT) && (item == infoPtr->hotItem)) return infoPtr->hUnderlineFont; @@ -326,7 +327,7 @@ TREEVIEW_FontForItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) /* for trace/debugging purposes only */ static const char * -TREEVIEW_ItemName(TREEVIEW_ITEM *item) +TREEVIEW_ItemName(const TREEVIEW_ITEM *item) { if (item == NULL) return ""; if (item->pszText == LPSTR_TEXTCALLBACKW) return ""; @@ -336,7 +337,7 @@ TREEVIEW_ItemName(TREEVIEW_ITEM *item) /* An item is not a child of itself. */ static BOOL -TREEVIEW_IsChildOf(TREEVIEW_ITEM *parent, TREEVIEW_ITEM *child) +TREEVIEW_IsChildOf(const TREEVIEW_ITEM *parent, const TREEVIEW_ITEM *child) { do { @@ -355,7 +356,7 @@ TREEVIEW_IsChildOf(TREEVIEW_ITEM *parent, TREEVIEW_ITEM *child) * of a tree node */ static TREEVIEW_ITEM * -TREEVIEW_GetLastListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem) +TREEVIEW_GetLastListItem(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem) { if (!wineItem) return NULL; @@ -379,7 +380,7 @@ TREEVIEW_GetLastListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem) * considering the tree hierarchy. */ static TREEVIEW_ITEM * -TREEVIEW_GetPrevListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *tvItem) +TREEVIEW_GetPrevListItem(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *tvItem) { if (tvItem->prevSibling) { @@ -404,7 +405,7 @@ TREEVIEW_GetPrevListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *tvItem) * considering the tree hierarchy. */ static TREEVIEW_ITEM * -TREEVIEW_GetNextListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *tvItem) +TREEVIEW_GetNextListItem(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *tvItem) { assert(tvItem != NULL); @@ -445,10 +446,10 @@ TREEVIEW_GetNextListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *tvItem) * forward if count is >0. */ static TREEVIEW_ITEM * -TREEVIEW_GetListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, +TREEVIEW_GetListItem(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, LONG count) { - TREEVIEW_ITEM *(*next_item)(TREEVIEW_INFO *, TREEVIEW_ITEM *); + TREEVIEW_ITEM *(*next_item)(const TREEVIEW_INFO *, const TREEVIEW_ITEM *); TREEVIEW_ITEM *previousItem; assert(wineItem != NULL); @@ -478,7 +479,7 @@ TREEVIEW_GetListItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, /* Notifications ************************************************************/ -static INT get_notifycode(TREEVIEW_INFO *infoPtr, INT code) +static INT get_notifycode(const TREEVIEW_INFO *infoPtr, INT code) { if (!infoPtr->bNtfUnicode) { switch (code) { @@ -500,14 +501,14 @@ static INT get_notifycode(TREEVIEW_INFO *infoPtr, INT code) } static LRESULT -TREEVIEW_SendRealNotify(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +TREEVIEW_SendRealNotify(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { TRACE("wParam=%d, lParam=%ld\n", wParam, lParam); return SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, wParam, lParam); } static BOOL -TREEVIEW_SendSimpleNotify(TREEVIEW_INFO *infoPtr, UINT code) +TREEVIEW_SendSimpleNotify(const TREEVIEW_INFO *infoPtr, UINT code) { NMHDR nmhdr; HWND hwnd = infoPtr->hwnd; @@ -522,7 +523,7 @@ TREEVIEW_SendSimpleNotify(TREEVIEW_INFO *infoPtr, UINT code) } static VOID -TREEVIEW_TVItemFromItem(TREEVIEW_INFO *infoPtr, UINT mask, TVITEMW *tvItem, TREEVIEW_ITEM *item) +TREEVIEW_TVItemFromItem(const TREEVIEW_INFO *infoPtr, UINT mask, TVITEMW *tvItem, TREEVIEW_ITEM *item) { tvItem->mask = mask; tvItem->hItem = item; @@ -555,7 +556,7 @@ TREEVIEW_TVItemFromItem(TREEVIEW_INFO *infoPtr, UINT mask, TVITEMW *tvItem, TREE } static BOOL -TREEVIEW_SendTreeviewNotify(TREEVIEW_INFO *infoPtr, UINT code, UINT action, +TREEVIEW_SendTreeviewNotify(const TREEVIEW_INFO *infoPtr, UINT code, UINT action, UINT mask, HTREEITEM oldItem, HTREEITEM newItem) { HWND hwnd = infoPtr->hwnd; @@ -593,7 +594,7 @@ TREEVIEW_SendTreeviewNotify(TREEVIEW_INFO *infoPtr, UINT code, UINT action, } static BOOL -TREEVIEW_SendTreeviewDnDNotify(TREEVIEW_INFO *infoPtr, UINT code, +TREEVIEW_SendTreeviewDnDNotify(const TREEVIEW_INFO *infoPtr, UINT code, HTREEITEM dragItem, POINT pt) { HWND hwnd = infoPtr->hwnd; @@ -620,7 +621,7 @@ TREEVIEW_SendTreeviewDnDNotify(TREEVIEW_INFO *infoPtr, UINT code, static BOOL -TREEVIEW_SendCustomDrawNotify(TREEVIEW_INFO *infoPtr, DWORD dwDrawStage, +TREEVIEW_SendCustomDrawNotify(const TREEVIEW_INFO *infoPtr, DWORD dwDrawStage, HDC hdc, RECT rc) { HWND hwnd = infoPtr->hwnd; @@ -653,7 +654,7 @@ TREEVIEW_SendCustomDrawNotify(TREEVIEW_INFO *infoPtr, DWORD dwDrawStage, /* FIXME: need to find out when the flags in uItemState need to be set */ static BOOL -TREEVIEW_SendCustomDrawItemNotify(TREEVIEW_INFO *infoPtr, HDC hdc, +TREEVIEW_SendCustomDrawItemNotify(const TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *wineItem, UINT uItemDrawState, NMTVCUSTOMDRAW *nmcdhdr) { @@ -698,7 +699,7 @@ TREEVIEW_SendCustomDrawItemNotify(TREEVIEW_INFO *infoPtr, HDC hdc, } static BOOL -TREEVIEW_BeginLabelEditNotify(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *editItem) +TREEVIEW_BeginLabelEditNotify(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *editItem) { HWND hwnd = infoPtr->hwnd; NMTVDISPINFOW tvdi; @@ -720,7 +721,7 @@ TREEVIEW_BeginLabelEditNotify(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *editItem) } static void -TREEVIEW_UpdateDispInfo(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, +TREEVIEW_UpdateDispInfo(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, UINT mask) { NMTVDISPINFOW callback; @@ -848,7 +849,7 @@ TREEVIEW_UpdateDispInfo(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, * Just use wineItem->firstChild to check for physical children. */ static BOOL -TREEVIEW_HasChildren(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem) +TREEVIEW_HasChildren(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem) { TREEVIEW_UpdateDispInfo(infoPtr, wineItem, TVIF_CHILDREN); @@ -860,8 +861,7 @@ TREEVIEW_HasChildren(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem) /* Compute linesOffset, stateOffset, imageOffset, textOffset of an item. */ static VOID -TREEVIEW_ComputeItemInternalMetrics(TREEVIEW_INFO *infoPtr, - TREEVIEW_ITEM *item) +TREEVIEW_ComputeItemInternalMetrics(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) { /* Same effect, different optimisation. */ #if 0 @@ -882,7 +882,7 @@ TREEVIEW_ComputeItemInternalMetrics(TREEVIEW_INFO *infoPtr, } static VOID -TREEVIEW_ComputeTextWidth(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, HDC hDC) +TREEVIEW_ComputeTextWidth(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, HDC hDC) { HDC hdc; HFONT hOldFont=0; @@ -916,7 +916,7 @@ TREEVIEW_ComputeTextWidth(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item, HDC hDC) } static VOID -TREEVIEW_ComputeItemRect(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) +TREEVIEW_ComputeItemRect(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) { item->rect.top = infoPtr->uItemHeight * (item->visibleOrder - infoPtr->firstVisible->visibleOrder); @@ -964,7 +964,7 @@ TREEVIEW_RecalculateVisibleOrder(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *start) * root must be expanded */ static VOID -TREEVIEW_UpdateSubTree(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *root) +TREEVIEW_UpdateSubTree(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *root) { TREEVIEW_ITEM *sibling; HDC hdc; @@ -1002,7 +1002,7 @@ TREEVIEW_UpdateSubTree(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *root) /* Item Allocation **********************************************************/ static TREEVIEW_ITEM * -TREEVIEW_AllocateItem(TREEVIEW_INFO *infoPtr) +TREEVIEW_AllocateItem(const TREEVIEW_INFO *infoPtr) { TREEVIEW_ITEM *newItem = Alloc(sizeof(TREEVIEW_ITEM)); @@ -1116,7 +1116,7 @@ TREEVIEW_InsertAfter(TREEVIEW_ITEM *newItem, TREEVIEW_ITEM *sibling, } static BOOL -TREEVIEW_DoSetItemT(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, +TREEVIEW_DoSetItemT(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, const TVITEMEXW *tvItem, BOOL isW) { UINT callbackClear = 0; @@ -1425,7 +1425,7 @@ static void TREEVIEW_RemoveItem(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem); static void -TREEVIEW_RemoveAllChildren(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *parentItem) +TREEVIEW_RemoveAllChildren(TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *parentItem) { TREEVIEW_ITEM *kill = parentItem->firstChild; @@ -1444,7 +1444,7 @@ TREEVIEW_RemoveAllChildren(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *parentItem) } static void -TREEVIEW_UnlinkItem(TREEVIEW_ITEM *item) +TREEVIEW_UnlinkItem(const TREEVIEW_ITEM *item) { TREEVIEW_ITEM *parentItem = item->parent; @@ -1610,7 +1610,7 @@ TREEVIEW_SetRedraw(TREEVIEW_INFO* infoPtr, WPARAM wParam, LPARAM lParam) } static LRESULT -TREEVIEW_GetIndent(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetIndent(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); return infoPtr->uIndent; @@ -1637,7 +1637,7 @@ TREEVIEW_SetIndent(TREEVIEW_INFO *infoPtr, UINT newIndent) static LRESULT -TREEVIEW_GetToolTips(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetToolTips(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); return (LRESULT)infoPtr->hwndToolTip; @@ -1664,13 +1664,13 @@ TREEVIEW_SetUnicodeFormat(TREEVIEW_INFO *infoPtr, BOOL fUnicode) } static LRESULT -TREEVIEW_GetUnicodeFormat(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetUnicodeFormat(const TREEVIEW_INFO *infoPtr) { return infoPtr->bNtfUnicode; } static LRESULT -TREEVIEW_GetScrollTime(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetScrollTime(const TREEVIEW_INFO *infoPtr) { return infoPtr->uScrollTime; } @@ -1687,7 +1687,7 @@ TREEVIEW_SetScrollTime(TREEVIEW_INFO *infoPtr, UINT uScrollTime) static LRESULT -TREEVIEW_GetImageList(TREEVIEW_INFO *infoPtr, WPARAM wParam) +TREEVIEW_GetImageList(const TREEVIEW_INFO *infoPtr, WPARAM wParam) { TRACE("\n"); @@ -1709,7 +1709,7 @@ TREEVIEW_GetImageList(TREEVIEW_INFO *infoPtr, WPARAM wParam) /* Compute the natural height for items. */ static UINT -TREEVIEW_NaturalHeight(TREEVIEW_INFO *infoPtr) +TREEVIEW_NaturalHeight(const TREEVIEW_INFO *infoPtr) { TEXTMETRICW tm; HDC hdc = GetDC(0); @@ -1844,7 +1844,7 @@ TREEVIEW_SetItemHeight(TREEVIEW_INFO *infoPtr, INT newHeight) } static LRESULT -TREEVIEW_GetItemHeight(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetItemHeight(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); return infoPtr->uItemHeight; @@ -1852,7 +1852,7 @@ TREEVIEW_GetItemHeight(TREEVIEW_INFO *infoPtr) static LRESULT -TREEVIEW_GetFont(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetFont(const TREEVIEW_INFO *infoPtr) { TRACE("%p\n", infoPtr->hFont); return (LRESULT)infoPtr->hFont; @@ -1901,7 +1901,7 @@ TREEVIEW_SetFont(TREEVIEW_INFO *infoPtr, HFONT hFont, BOOL bRedraw) static LRESULT -TREEVIEW_GetLineColor(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetLineColor(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); return (LRESULT)infoPtr->clrLine; @@ -1919,7 +1919,7 @@ TREEVIEW_SetLineColor(TREEVIEW_INFO *infoPtr, COLORREF color) static LRESULT -TREEVIEW_GetTextColor(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetTextColor(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); return (LRESULT)infoPtr->clrText; @@ -1941,7 +1941,7 @@ TREEVIEW_SetTextColor(TREEVIEW_INFO *infoPtr, COLORREF color) static LRESULT -TREEVIEW_GetBkColor(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetBkColor(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); return (LRESULT)infoPtr->clrBk; @@ -1963,7 +1963,7 @@ TREEVIEW_SetBkColor(TREEVIEW_INFO *infoPtr, COLORREF newColor) static LRESULT -TREEVIEW_GetInsertMarkColor(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetInsertMarkColor(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); return (LRESULT)infoPtr->clrInsertMark; @@ -2003,7 +2003,7 @@ TREEVIEW_SetInsertMark(TREEVIEW_INFO *infoPtr, BOOL wParam, HTREEITEM item) * input HTREEITEM and the output RECT. */ static LRESULT -TREEVIEW_GetItemRect(TREEVIEW_INFO *infoPtr, BOOL fTextRect, LPRECT lpRect) +TREEVIEW_GetItemRect(const TREEVIEW_INFO *infoPtr, BOOL fTextRect, LPRECT lpRect) { TREEVIEW_ITEM *wineItem; const HTREEITEM *pItem = (HTREEITEM *)lpRect; @@ -2045,7 +2045,7 @@ TREEVIEW_GetItemRect(TREEVIEW_INFO *infoPtr, BOOL fTextRect, LPRECT lpRect) } static inline LRESULT -TREEVIEW_GetVisibleCount(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetVisibleCount(const TREEVIEW_INFO *infoPtr) { /* Suprise! This does not take integral height into account. */ return infoPtr->clientHeight / infoPtr->uItemHeight; @@ -2053,7 +2053,7 @@ TREEVIEW_GetVisibleCount(TREEVIEW_INFO *infoPtr) static LRESULT -TREEVIEW_GetItemT(TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem, BOOL isW) +TREEVIEW_GetItemT(const TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem, BOOL isW) { TREEVIEW_ITEM *wineItem; @@ -2130,7 +2130,7 @@ TREEVIEW_GetItemT(TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem, BOOL isW) /* Beware MSDN Library Visual Studio 6.0. It says -1 on failure, 0 on success, * which is wrong. */ static LRESULT -TREEVIEW_SetItemT(TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem, BOOL isW) +TREEVIEW_SetItemT(TREEVIEW_INFO *infoPtr, const TVITEMEXW *tvItem, BOOL isW) { TREEVIEW_ITEM *wineItem; TREEVIEW_ITEM originalItem; @@ -2185,7 +2185,7 @@ TREEVIEW_SetItemT(TREEVIEW_INFO *infoPtr, LPTVITEMEXW tvItem, BOOL isW) } static LRESULT -TREEVIEW_GetItemState(TREEVIEW_INFO *infoPtr, HTREEITEM wineItem, UINT mask) +TREEVIEW_GetItemState(const TREEVIEW_INFO *infoPtr, HTREEITEM wineItem, UINT mask) { TRACE("\n"); @@ -2196,7 +2196,7 @@ TREEVIEW_GetItemState(TREEVIEW_INFO *infoPtr, HTREEITEM wineItem, UINT mask) } static LRESULT -TREEVIEW_GetNextItem(TREEVIEW_INFO *infoPtr, UINT which, HTREEITEM wineItem) +TREEVIEW_GetNextItem(const TREEVIEW_INFO *infoPtr, UINT which, HTREEITEM wineItem) { TREEVIEW_ITEM *retval; @@ -2272,14 +2272,14 @@ TREEVIEW_GetNextItem(TREEVIEW_INFO *infoPtr, UINT which, HTREEITEM wineItem) static LRESULT -TREEVIEW_GetCount(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetCount(const TREEVIEW_INFO *infoPtr) { TRACE(" %d\n", infoPtr->uNumItems); return (LRESULT)infoPtr->uNumItems; } static VOID -TREEVIEW_ToggleItemState(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) +TREEVIEW_ToggleItemState(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) { if (infoPtr->dwStyle & TVS_CHECKBOXES) { @@ -2307,7 +2307,7 @@ TREEVIEW_ToggleItemState(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) /* Draw the lines and expand button for an item. Also draws one section * of the line from item's parent to item's parent's next sibling. */ static void -TREEVIEW_DrawItemLines(TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *item) +TREEVIEW_DrawItemLines(const TREEVIEW_INFO *infoPtr, HDC hdc, const TREEVIEW_ITEM *item) { LONG centerx, centery; BOOL lar = ((infoPtr->dwStyle @@ -2443,7 +2443,7 @@ TREEVIEW_DrawItemLines(TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *item) } static void -TREEVIEW_DrawItem(TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *wineItem) +TREEVIEW_DrawItem(const TREEVIEW_INFO *infoPtr, HDC hdc, TREEVIEW_ITEM *wineItem) { INT cditem; HFONT hOldFont; @@ -2789,7 +2789,7 @@ TREEVIEW_UpdateScrollBars(TREEVIEW_INFO *infoPtr) /* CtrlSpy doesn't mention this, but CorelDRAW's object manager needs it. */ static LRESULT -TREEVIEW_EraseBackground(TREEVIEW_INFO *infoPtr, HDC hDC) +TREEVIEW_EraseBackground(const TREEVIEW_INFO *infoPtr, HDC hDC) { HBRUSH hBrush = CreateSolidBrush(infoPtr->clrBk); RECT rect; @@ -2802,7 +2802,7 @@ TREEVIEW_EraseBackground(TREEVIEW_INFO *infoPtr, HDC hDC) } static void -TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, HDC hdc, RECT *rc) +TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, HDC hdc, const RECT *rc) { HWND hwnd = infoPtr->hwnd; RECT rect = *rc; @@ -2847,7 +2847,7 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, HDC hdc, RECT *rc) } static void -TREEVIEW_Invalidate(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) +TREEVIEW_Invalidate(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item) { if (item != NULL) InvalidateRect(infoPtr->hwnd, &item->rect, TRUE); @@ -2892,7 +2892,8 @@ TREEVIEW_Paint(TREEVIEW_INFO *infoPtr, WPARAM wParam) * Forward the DPA local callback to the treeview owner callback */ static INT WINAPI -TREEVIEW_CallBackCompare(TREEVIEW_ITEM *first, TREEVIEW_ITEM *second, LPTVSORTCB pCallBackSort) +TREEVIEW_CallBackCompare(const TREEVIEW_ITEM *first, const TREEVIEW_ITEM *second, + const TVSORTCB *pCallBackSort) { /* Forward the call to the client-defined callback */ return pCallBackSort->lpfnCompare(first->lParam, @@ -2905,7 +2906,7 @@ TREEVIEW_CallBackCompare(TREEVIEW_ITEM *first, TREEVIEW_ITEM *second, LPTVSORTCB */ static INT WINAPI TREEVIEW_SortOnName(TREEVIEW_ITEM *first, TREEVIEW_ITEM *second, - TREEVIEW_INFO *infoPtr) + const TREEVIEW_INFO *infoPtr) { TREEVIEW_UpdateDispInfo(infoPtr, first, TVIF_TEXT); TREEVIEW_UpdateDispInfo(infoPtr, second, TVIF_TEXT); @@ -2922,7 +2923,7 @@ TREEVIEW_SortOnName(TREEVIEW_ITEM *first, TREEVIEW_ITEM *second, /* Returns the number of physical children belonging to item. */ static INT -TREEVIEW_CountChildren(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) +TREEVIEW_CountChildren(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item) { INT cChildren = 0; HTREEITEM hti; @@ -2936,7 +2937,7 @@ TREEVIEW_CountChildren(TREEVIEW_INFO *infoPtr, 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(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) +TREEVIEW_BuildChildDPA(const TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *item) { HTREEITEM child = item->firstChild; @@ -3107,7 +3108,7 @@ TREEVIEW_SortChildren(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) /* Expansion/Collapse ***************************************************/ static BOOL -TREEVIEW_SendExpanding(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, +TREEVIEW_SendExpanding(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, UINT action) { return !TREEVIEW_SendTreeviewNotify(infoPtr, TVN_ITEMEXPANDINGW, action, @@ -3117,7 +3118,7 @@ TREEVIEW_SendExpanding(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, } static VOID -TREEVIEW_SendExpanded(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, +TREEVIEW_SendExpanded(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, UINT action) { TREEVIEW_SendTreeviewNotify(infoPtr, TVN_ITEMEXPANDEDW, action, @@ -3413,7 +3414,7 @@ TREEVIEW_ExpandMsg(TREEVIEW_INFO *infoPtr, UINT flag, HTREEITEM wineItem) /* Hit-Testing **********************************************************/ static TREEVIEW_ITEM * -TREEVIEW_HitTestPoint(TREEVIEW_INFO *infoPtr, POINT pt) +TREEVIEW_HitTestPoint(const TREEVIEW_INFO *infoPtr, POINT pt) { TREEVIEW_ITEM *wineItem; LONG row; @@ -3435,7 +3436,7 @@ TREEVIEW_HitTestPoint(TREEVIEW_INFO *infoPtr, POINT pt) } static LRESULT -TREEVIEW_HitTest(TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht) +TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht) { TREEVIEW_ITEM *wineItem; RECT rect; @@ -3513,7 +3514,7 @@ TREEVIEW_HitTest(TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht) /* Item Label Editing ***************************************************/ static LRESULT -TREEVIEW_GetEditControl(TREEVIEW_INFO *infoPtr) +TREEVIEW_GetEditControl(const TREEVIEW_INFO *infoPtr) { return (LRESULT)infoPtr->hwndEdit; } @@ -3793,7 +3794,8 @@ TREEVIEW_EndEditLabelNow(TREEVIEW_INFO *infoPtr, BOOL bCancel) if (strcmpW(newText, editedItem->pszText) != 0) { - if (NULL == ReAlloc(editedItem->pszText, iLength + 1)) + WCHAR *ptr = ReAlloc(editedItem->pszText, sizeof(WCHAR)*(iLength + 1)); + if (ptr == NULL) { ERR("OutOfMemory, cannot allocate space for label\n"); DestroyWindow(infoPtr->hwndEdit); @@ -3802,8 +3804,10 @@ TREEVIEW_EndEditLabelNow(TREEVIEW_INFO *infoPtr, BOOL bCancel) } else { + editedItem->pszText = ptr; editedItem->cchTextMax = iLength + 1; strcpyW(editedItem->pszText, newText); + TREEVIEW_ComputeTextWidth(infoPtr, editedItem, 0); } } if(newText != tmpText) Free(newText); @@ -3840,7 +3844,7 @@ TREEVIEW_HandleTimer(TREEVIEW_INFO *infoPtr, WPARAM wParam) * Windows. */ static LRESULT -TREEVIEW_TrackMouse(TREEVIEW_INFO *infoPtr, POINT pt) +TREEVIEW_TrackMouse(const TREEVIEW_INFO *infoPtr, POINT pt) { INT cxDrag = GetSystemMetrics(SM_CXDRAG); INT cyDrag = GetSystemMetrics(SM_CYDRAG); @@ -4148,7 +4152,7 @@ TREEVIEW_RButtonDown(TREEVIEW_INFO *infoPtr, LPARAM lParam) } static LRESULT -TREEVIEW_RButtonUp(TREEVIEW_INFO *infoPtr, LPPOINT pPt) +TREEVIEW_RButtonUp(const TREEVIEW_INFO *infoPtr, const POINT *pPt) { return 0; } @@ -4825,6 +4829,46 @@ TREEVIEW_MouseWheel(TREEVIEW_INFO *infoPtr, WPARAM wParam) /* Create/Destroy *******************************************************/ +static void +initialize_checkboxes(TREEVIEW_INFO *infoPtr) +{ + RECT rc; + HBITMAP hbm, hbmOld; + HDC hdc, hdcScreen; + int nIndex; + + infoPtr->himlState = ImageList_Create(16, 16, ILC_COLOR | ILC_MASK, 3, 0); + + hdcScreen = GetDC(0); + + hdc = CreateCompatibleDC(hdcScreen); + hbm = CreateCompatibleBitmap(hdcScreen, 48, 16); + hbmOld = SelectObject(hdc, hbm); + + SetRect(&rc, 0, 0, 48, 16); + FillRect(hdc, &rc, (HBRUSH)(COLOR_WINDOW+1)); + + SetRect(&rc, 18, 2, 30, 14); + DrawFrameControl(hdc, &rc, DFC_BUTTON, + DFCS_BUTTONCHECK|DFCS_FLAT); + + SetRect(&rc, 34, 2, 46, 14); + DrawFrameControl(hdc, &rc, DFC_BUTTON, + DFCS_BUTTONCHECK|DFCS_FLAT|DFCS_CHECKED); + + SelectObject(hdc, hbmOld); + nIndex = ImageList_AddMasked(infoPtr->himlState, hbm, + GetSysColor(COLOR_WINDOW)); + TRACE("checkbox index %d\n", nIndex); + + DeleteObject(hbm); + DeleteDC(hdc); + ReleaseDC(0, hdcScreen); + + infoPtr->stateImageWidth = 16; + infoPtr->stateImageHeight = 16; +} + static LRESULT TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs) { @@ -4926,48 +4970,7 @@ TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs) infoPtr->hwndToolTip = COMCTL32_CreateToolTip(hwnd); if (infoPtr->dwStyle & TVS_CHECKBOXES) - { - RECT rc; - HBITMAP hbm, hbmOld; - HDC hdc,hdcScreen; - int nIndex; - - infoPtr->himlState = - ImageList_Create(16, 16, ILC_COLOR | ILC_MASK, 3, 0); - - hdcScreen = GetDC(0); - - /* Create a coloured bitmap compatible with the screen depth - because checkboxes are not black&white */ - hdc = CreateCompatibleDC(hdcScreen); - hbm = CreateCompatibleBitmap(hdcScreen, 48, 16); - hbmOld = SelectObject(hdc, hbm); - - rc.left = 0; rc.top = 0; - rc.right = 48; rc.bottom = 16; - FillRect(hdc, &rc, (HBRUSH)(COLOR_WINDOW+1)); - - rc.left = 18; rc.top = 2; - rc.right = 30; rc.bottom = 14; - DrawFrameControl(hdc, &rc, DFC_BUTTON, - DFCS_BUTTONCHECK|DFCS_FLAT); - - rc.left = 34; rc.right = 46; - DrawFrameControl(hdc, &rc, DFC_BUTTON, - DFCS_BUTTONCHECK|DFCS_FLAT|DFCS_CHECKED); - - SelectObject(hdc, hbmOld); - nIndex = ImageList_AddMasked(infoPtr->himlState, hbm, - GetSysColor(COLOR_WINDOW)); - TRACE("checkbox index %d\n", nIndex); - - DeleteObject(hbm); - DeleteDC(hdc); - ReleaseDC(0, hdcScreen); - - infoPtr->stateImageWidth = 16; - infoPtr->stateImageHeight = 16; - } + initialize_checkboxes(infoPtr); /* Make sure actual scrollbar state is consistent with uInternalStatus */ ShowScrollBar(hwnd, SB_VERT, FALSE); @@ -5227,7 +5230,7 @@ TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, WPARAM wParam, LPARAM lParam) } /* Draw themed border */ -static BOOL nc_paint (TREEVIEW_INFO *infoPtr, HRGN region) +static BOOL nc_paint (const TREEVIEW_INFO *infoPtr, HRGN region) { HTHEME theme = GetWindowTheme (infoPtr->hwnd); HDC dc; @@ -5261,7 +5264,7 @@ static BOOL nc_paint (TREEVIEW_INFO *infoPtr, HRGN region) } static LRESULT -TREEVIEW_Notify(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +TREEVIEW_Notify(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { LPNMHDR lpnmh = (LPNMHDR)lParam; @@ -5329,24 +5332,37 @@ TREEVIEW_StyleChanged(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) if (wParam == GWL_STYLE) { - DWORD dwNewStyle = ((LPSTYLESTRUCT)lParam)->styleNew; + DWORD dwNewStyle = ((LPSTYLESTRUCT)lParam)->styleNew; - /* we have to take special care about tooltips */ - if ((infoPtr->dwStyle ^ dwNewStyle) & TVS_NOTOOLTIPS) - { - if (infoPtr->dwStyle & TVS_NOTOOLTIPS) - { - infoPtr->hwndToolTip = COMCTL32_CreateToolTip(infoPtr->hwnd); - TRACE("\n"); - } - else - { - DestroyWindow(infoPtr->hwndToolTip); - infoPtr->hwndToolTip = 0; - } - } + if ((infoPtr->dwStyle ^ dwNewStyle) & TVS_CHECKBOXES) + { + if (dwNewStyle & TVS_CHECKBOXES) + { + initialize_checkboxes(infoPtr); + TRACE("checkboxes enabled\n"); + } + else + { + FIXME("tried to disable checkboxes\n"); + } + } - infoPtr->dwStyle = dwNewStyle; + if ((infoPtr->dwStyle ^ dwNewStyle) & TVS_NOTOOLTIPS) + { + if (infoPtr->dwStyle & TVS_NOTOOLTIPS) + { + infoPtr->hwndToolTip = COMCTL32_CreateToolTip(infoPtr->hwnd); + TRACE("tooltips enabled\n"); + } + else + { + DestroyWindow(infoPtr->hwndToolTip); + infoPtr->hwndToolTip = 0; + TRACE("tooltips disabled\n"); + } + } + + infoPtr->dwStyle = dwNewStyle; } TREEVIEW_UpdateSubTree(infoPtr, infoPtr->root); @@ -5357,7 +5373,7 @@ TREEVIEW_StyleChanged(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) } static LRESULT -TREEVIEW_SetCursor(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) +TREEVIEW_SetCursor(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { POINT pt; TREEVIEW_ITEM * item; @@ -5395,7 +5411,7 @@ TREEVIEW_SetFocus(TREEVIEW_INFO *infoPtr) } static LRESULT -TREEVIEW_KillFocus(TREEVIEW_INFO *infoPtr) +TREEVIEW_KillFocus(const TREEVIEW_INFO *infoPtr) { TRACE("\n"); @@ -5406,7 +5422,7 @@ TREEVIEW_KillFocus(TREEVIEW_INFO *infoPtr) } /* update theme after a WM_THEMECHANGED message */ -static LRESULT theme_changed (TREEVIEW_INFO* infoPtr) +static LRESULT theme_changed(const TREEVIEW_INFO *infoPtr) { HTHEME theme = GetWindowTheme (infoPtr->hwnd); CloseThemeData (theme); diff --git a/reactos/dll/win32/comctl32/updown.c b/reactos/dll/win32/comctl32/updown.c index c5801a19c54..63df9dc6f20 100644 --- a/reactos/dll/win32/comctl32/updown.c +++ b/reactos/dll/win32/comctl32/updown.c @@ -108,7 +108,7 @@ static void UPDOWN_DoAction (UPDOWN_INFO *infoPtr, int delta, int action); * UPDOWN_IsBuddyEdit * Tests if our buddy is an edit control. */ -static inline BOOL UPDOWN_IsBuddyEdit(UPDOWN_INFO *infoPtr) +static inline BOOL UPDOWN_IsBuddyEdit(const UPDOWN_INFO *infoPtr) { return infoPtr->BuddyType == BUDDY_TYPE_EDIT; } @@ -117,7 +117,7 @@ static inline BOOL UPDOWN_IsBuddyEdit(UPDOWN_INFO *infoPtr) * UPDOWN_IsBuddyListbox * Tests if our buddy is a listbox control. */ -static inline BOOL UPDOWN_IsBuddyListbox(UPDOWN_INFO *infoPtr) +static inline BOOL UPDOWN_IsBuddyListbox(const UPDOWN_INFO *infoPtr) { return infoPtr->BuddyType == BUDDY_TYPE_LISTBOX; } @@ -126,7 +126,7 @@ static inline BOOL UPDOWN_IsBuddyListbox(UPDOWN_INFO *infoPtr) * UPDOWN_InBounds * Tests if a given value 'val' is between the Min&Max limits */ -static BOOL UPDOWN_InBounds(UPDOWN_INFO *infoPtr, int val) +static BOOL UPDOWN_InBounds(const UPDOWN_INFO *infoPtr, int val) { if(infoPtr->MaxVal > infoPtr->MinVal) return (infoPtr->MinVal <= val) && (val <= infoPtr->MaxVal); @@ -162,7 +162,7 @@ static BOOL UPDOWN_OffsetVal(UPDOWN_INFO *infoPtr, int delta) * When we have a buddy set and that we are aligned on our buddy, we * want to draw a sunken edge to make like we are part of that control. */ -static BOOL UPDOWN_HasBuddyBorder(UPDOWN_INFO* infoPtr) +static BOOL UPDOWN_HasBuddyBorder(const UPDOWN_INFO *infoPtr) { return ( ((infoPtr->dwStyle & (UDS_ALIGNLEFT | UDS_ALIGNRIGHT)) != 0) && UPDOWN_IsBuddyEdit(infoPtr) ); @@ -176,7 +176,7 @@ static BOOL UPDOWN_HasBuddyBorder(UPDOWN_INFO* infoPtr) * FLAG_DECR to get the "decrement" rect (down or left) * If both flags are pressent, the envelope is returned. */ -static void UPDOWN_GetArrowRect (UPDOWN_INFO* infoPtr, RECT *rect, int arrow) +static void UPDOWN_GetArrowRect (const UPDOWN_INFO* infoPtr, RECT *rect, int arrow) { HTHEME theme = GetWindowTheme (infoPtr->Self); const int border = theme ? DEFAULT_BUDDYBORDER_THEMED : DEFAULT_BUDDYBORDER; @@ -228,7 +228,7 @@ static void UPDOWN_GetArrowRect (UPDOWN_INFO* infoPtr, RECT *rect, int arrow) * If it returns the up rect, it returns FLAG_INCR. * If it returns the down rect, it returns FLAG_DECR. */ -static INT UPDOWN_GetArrowFromPoint (UPDOWN_INFO* infoPtr, RECT *rect, POINT pt) +static INT UPDOWN_GetArrowFromPoint (const UPDOWN_INFO *infoPtr, RECT *rect, POINT pt) { UPDOWN_GetArrowRect (infoPtr, rect, FLAG_INCR); if(PtInRect(rect, pt)) return FLAG_INCR; @@ -306,7 +306,7 @@ static BOOL UPDOWN_GetBuddyInt (UPDOWN_INFO *infoPtr) * TRUE - if it set the caption of the buddy successfully * FALSE - if an error occurred */ -static BOOL UPDOWN_SetBuddyInt (UPDOWN_INFO *infoPtr) +static BOOL UPDOWN_SetBuddyInt (const UPDOWN_INFO *infoPtr) { WCHAR fmt[3] = { '%', 'd', '\0' }; WCHAR txt[20]; @@ -352,7 +352,7 @@ static BOOL UPDOWN_SetBuddyInt (UPDOWN_INFO *infoPtr) * * Draw buddy background for visual integration. */ -static BOOL UPDOWN_DrawBuddyBackground (UPDOWN_INFO *infoPtr, HDC hdc) +static BOOL UPDOWN_DrawBuddyBackground (const UPDOWN_INFO *infoPtr, HDC hdc) { RECT br; HTHEME buddyTheme = GetWindowTheme (infoPtr->Buddy); @@ -370,7 +370,7 @@ static BOOL UPDOWN_DrawBuddyBackground (UPDOWN_INFO *infoPtr, HDC hdc) * * Draw the arrows. The background need not be erased. */ -static LRESULT UPDOWN_Draw (UPDOWN_INFO *infoPtr, HDC hdc) +static LRESULT UPDOWN_Draw (const UPDOWN_INFO *infoPtr, HDC hdc) { BOOL uPressed, uHot, dPressed, dHot; RECT rect; @@ -437,7 +437,7 @@ static LRESULT UPDOWN_Draw (UPDOWN_INFO *infoPtr, HDC hdc) * Asynchronous drawing (must ONLY be used in WM_PAINT). * Calls UPDOWN_Draw. */ -static LRESULT UPDOWN_Paint (UPDOWN_INFO *infoPtr, HDC hdc) +static LRESULT UPDOWN_Paint (const UPDOWN_INFO *infoPtr, HDC hdc) { PAINTSTRUCT ps; if (hdc) return UPDOWN_Draw (infoPtr, hdc); @@ -650,7 +650,7 @@ static void UPDOWN_DoAction (UPDOWN_INFO *infoPtr, int delta, int action) * Returns TRUE if it is enabled as well as its buddy (if any) * FALSE otherwise */ -static BOOL UPDOWN_IsEnabled (UPDOWN_INFO *infoPtr) +static BOOL UPDOWN_IsEnabled (const UPDOWN_INFO *infoPtr) { if (!IsWindowEnabled(infoPtr->Self)) return FALSE;