diff --git a/reactos/dll/win32/comctl32/comctl32_ros.diff b/reactos/dll/win32/comctl32/comctl32_ros.diff index 40e0d553c84..07de47e1933 100644 --- a/reactos/dll/win32/comctl32/comctl32_ros.diff +++ b/reactos/dll/win32/comctl32/comctl32_ros.diff @@ -1,5 +1,5 @@ diff -pudN e:\wine\dlls\comctl32/comctl32.h e:\reactos\dll\win32\comctl32/comctl32.h ---- e:\wine\dlls\comctl32/comctl32.h 2016-05-31 18:00:02 +0100 +--- e:\wine\dlls\comctl32/comctl32.h 2016-08-14 19:11:25 +0100 +++ e:\reactos\dll\win32\comctl32/comctl32.h 2014-03-05 11:47:40 +0100 @@ -53,67 +53,6 @@ extern HMODULE COMCTL32_hModule DECLSPEC_HIDDEN; @@ -79,7 +79,7 @@ diff -pudN e:\wine\dlls\comctl32/comctl32.h e:\reactos\dll\win32\comctl32/comctl typedef struct _SUBCLASSPROCS { SUBCLASSPROC subproc; diff -pudN e:\wine\dlls\comctl32/commctrl.c e:\reactos\dll\win32\comctl32/commctrl.c ---- e:\wine\dlls\comctl32/commctrl.c 2016-05-31 18:00:02 +0100 +--- e:\wine\dlls\comctl32/commctrl.c 2016-08-14 19:11:25 +0100 +++ e:\reactos\dll\win32\comctl32/commctrl.c 2016-03-01 20:00:53 +0100 @@ -60,6 +60,19 @@ @@ -333,8 +333,8 @@ diff -pudN e:\wine\dlls\comctl32/commctrl.c e:\reactos\dll\win32\comctl32/commct + return TRUE; +} diff -pudN e:\wine\dlls\comctl32/imagelist.c e:\reactos\dll\win32\comctl32/imagelist.c ---- e:\wine\dlls\comctl32/imagelist.c 2016-05-31 18:00:02 +0100 -+++ e:\reactos\dll\win32\comctl32/imagelist.c 2016-06-05 19:39:00 +0100 +--- e:\wine\dlls\comctl32/imagelist.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/imagelist.c 2016-08-18 12:03:13 +0100 @@ -33,7 +33,7 @@ * * TODO: @@ -504,8 +504,8 @@ diff -pudN e:\wine\dlls\comctl32/imagelist.c e:\reactos\dll\win32\comctl32/image Common subdirectories: e:\wine\dlls\comctl32/lang and e:\reactos\dll\win32\comctl32/lang diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listview.c ---- e:\wine\dlls\comctl32/listview.c 2016-05-31 18:00:02 +0100 -+++ e:\reactos\dll\win32\comctl32/listview.c 2016-06-05 19:39:00 +0100 +--- e:\wine\dlls\comctl32/listview.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/listview.c 2016-08-18 12:03:13 +0100 @@ -287,6 +287,9 @@ typedef struct tagLISTVIEW_INFO COLORREF clrBk; COLORREF clrText; @@ -516,7 +516,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi /* font */ HFONT hDefaultFont; -@@ -1678,8 +1681,24 @@ static inline BOOL LISTVIEW_GetItemW(con +@@ -1696,8 +1699,24 @@ static inline BOOL LISTVIEW_GetItemW(con /* used to handle collapse main item column case */ static inline BOOL LISTVIEW_DrawFocusRect(const LISTVIEW_INFO *infoPtr, HDC hdc) { @@ -541,7 +541,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi } /* Listview invalidation functions: use _only_ these functions to invalidate */ -@@ -4671,7 +4690,12 @@ static void LISTVIEW_DrawItemPart(LISTVI +@@ -4688,7 +4707,12 @@ static void LISTVIEW_DrawItemPart(LISTVI if (infoPtr->uView == LV_VIEW_DETAILS && infoPtr->dwLvExStyle & LVS_EX_GRIDLINES) rcLabel.bottom--; @@ -555,7 +555,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi } /*** -@@ -5212,7 +5236,11 @@ enddraw: +@@ -5232,7 +5256,11 @@ enddraw: /* Draw marquee rectangle if appropriate */ if (infoPtr->bMarqueeSelect) @@ -567,7 +567,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi if (cdmode & CDRF_NOTIFYPOSTPAINT) notify_postpaint(infoPtr, &nmlvcd); -@@ -8013,6 +8041,9 @@ static BOOL LISTVIEW_SetBkColor(LISTVIEW +@@ -8035,6 +8063,9 @@ static BOOL LISTVIEW_SetBkColor(LISTVIEW { TRACE("(color=%x)\n", color); @@ -577,7 +577,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi if(infoPtr->clrBk != color) { if (infoPtr->clrBk != CLR_NONE) DeleteObject(infoPtr->hBkBrush); infoPtr->clrBk = color; -@@ -8688,7 +8719,7 @@ static DWORD LISTVIEW_SetIconSpacing(LIS +@@ -8710,7 +8741,7 @@ static DWORD LISTVIEW_SetIconSpacing(LIS return oldspacing; } @@ -586,7 +586,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi { INT cx, cy; -@@ -8699,8 +8730,8 @@ static inline void set_icon_size(SIZE *s +@@ -8721,8 +8752,8 @@ static inline void set_icon_size(SIZE *s } else { @@ -597,7 +597,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi } } -@@ -9435,6 +9466,9 @@ static LRESULT LISTVIEW_NCCreate(HWND hw +@@ -9458,6 +9489,9 @@ static LRESULT LISTVIEW_NCCreate(HWND hw infoPtr->clrText = CLR_DEFAULT; infoPtr->clrTextBk = CLR_DEFAULT; LISTVIEW_SetBkColor(infoPtr, comctl32_color.clrWindow); @@ -607,7 +607,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi /* set default values */ infoPtr->nFocusedItem = -1; -@@ -11718,6 +11752,14 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg +@@ -11741,6 +11775,14 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg case WM_SYSCOLORCHANGE: COMCTL32_RefreshSysColors(); @@ -622,9 +622,22 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi return 0; /* case WM_TIMER: */ +diff -pudN e:\wine\dlls\comctl32/monthcal.c e:\reactos\dll\win32\comctl32/monthcal.c +--- e:\wine\dlls\comctl32/monthcal.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/monthcal.c 2016-08-18 12:03:13 +0100 +@@ -43,6 +43,9 @@ + + WINE_DEFAULT_DEBUG_CHANNEL(monthcal); + ++/* FIXME: Inspect */ ++#define MCS_NOSELCHANGEONNAV 0x0100 ++ + #define MC_SEL_LBUTUP 1 /* Left button released */ + #define MC_SEL_LBUTDOWN 2 /* Left button pressed in calendar */ + #define MC_PREVPRESSED 4 /* Prev month button pressed */ diff -pudN e:\wine\dlls\comctl32/propsheet.c e:\reactos\dll\win32\comctl32/propsheet.c ---- e:\wine\dlls\comctl32/propsheet.c 2016-05-31 18:00:02 +0100 -+++ e:\reactos\dll\win32\comctl32/propsheet.c 2016-06-05 19:39:01 +0100 +--- e:\wine\dlls\comctl32/propsheet.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/propsheet.c 2016-08-18 12:03:14 +0100 @@ -2355,12 +2355,19 @@ static void PROPSHEET_SetWizButtons(HWND HWND hwndFinish = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON); BOOL enable_finish = ((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH); @@ -680,8 +693,8 @@ diff -pudN e:\wine\dlls\comctl32/propsheet.c e:\reactos\dll\win32\comctl32/props /****************************************************************************** diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c ---- e:\wine\dlls\comctl32/rebar.c 2016-05-31 18:00:02 +0100 -+++ e:\reactos\dll\win32\comctl32/rebar.c 2016-06-05 19:39:01 +0100 +--- e:\wine\dlls\comctl32/rebar.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/rebar.c 2016-08-18 12:03:14 +0100 @@ -50,7 +50,6 @@ * - WM_QUERYNEWPALETTE * - WM_RBUTTONDOWN @@ -690,7 +703,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c * - WM_VKEYTOITEM * - WM_WININICHANGE * Notifications: -@@ -1821,16 +1820,43 @@ static LRESULT REBAR_EraseBkGnd (const R +@@ -1819,16 +1818,43 @@ static LRESULT REBAR_EraseBkGnd (const R RECT cr; COLORREF old = CLR_NONE, new; HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); @@ -734,7 +747,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c /* draw band separator between rows */ if (lpBand->iRow != oldrow) { oldrow = lpBand->iRow; -@@ -1855,6 +1881,9 @@ static LRESULT REBAR_EraseBkGnd (const R +@@ -1853,6 +1879,9 @@ static LRESULT REBAR_EraseBkGnd (const R } TRACE ("drawing band separator bottom (%s)\n", wine_dbgstr_rect(&rcRowSep)); @@ -744,7 +757,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c } } -@@ -1865,6 +1894,9 @@ static LRESULT REBAR_EraseBkGnd (const R +@@ -1863,6 +1892,9 @@ static LRESULT REBAR_EraseBkGnd (const R if (infoPtr->dwStyle & CCS_VERT) { rcSep.bottom = rcSep.top; rcSep.top -= SEP_WIDTH_SIZE; @@ -754,7 +767,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c if (theme) DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_BOTTOM, NULL); else -@@ -1873,6 +1905,9 @@ static LRESULT REBAR_EraseBkGnd (const R +@@ -1871,6 +1903,9 @@ static LRESULT REBAR_EraseBkGnd (const R else { rcSep.right = rcSep.left; rcSep.left -= SEP_WIDTH_SIZE; @@ -764,7 +777,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c if (theme) DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_RIGHT, NULL); else -@@ -1903,6 +1938,9 @@ static LRESULT REBAR_EraseBkGnd (const R +@@ -1901,6 +1936,9 @@ static LRESULT REBAR_EraseBkGnd (const R #endif } @@ -774,7 +787,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c if (theme) { /* When themed, the background color is ignored (but not a -@@ -1910,6 +1948,7 @@ static LRESULT REBAR_EraseBkGnd (const R +@@ -1908,6 +1946,7 @@ static LRESULT REBAR_EraseBkGnd (const R DrawThemeBackground (theme, hdc, 0, 0, &cr, &rcBand); } else @@ -782,7 +795,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c { old = SetBkColor (hdc, new); TRACE("%s background color=0x%06x, band %s\n", -@@ -1920,7 +1959,26 @@ static LRESULT REBAR_EraseBkGnd (const R +@@ -1918,7 +1957,26 @@ static LRESULT REBAR_EraseBkGnd (const R if (lpBand->clrBack != CLR_NONE) SetBkColor (hdc, old); } @@ -792,7 +805,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c + CombineRgn(hrgn, hrgn, hrgnBand, RGN_DIFF); + DeleteObject(hrgnBand); +#endif -+ } + } + +#if 1 +#ifdef __REACTOS__ @@ -804,12 +817,12 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c + FillRgn(hdc, hrgn, hbrush); + DeleteObject(hbrush); + DeleteObject(hrgn); - } ++ } +#endif return TRUE; } -@@ -2889,12 +2947,26 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT +@@ -2887,12 +2945,26 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT static LRESULT @@ -836,7 +849,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c return TRUE; } -@@ -3201,7 +3273,11 @@ REBAR_NCCalcSize (const REBAR_INFO *info +@@ -3199,7 +3271,11 @@ REBAR_NCCalcSize (const REBAR_INFO *info else if ((theme = GetWindowTheme (infoPtr->hwndSelf))) { /* FIXME: should use GetThemeInt */ @@ -848,7 +861,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c } TRACE("new client=(%s)\n", wine_dbgstr_rect(rect)); return 0; -@@ -3302,7 +3365,11 @@ REBAR_NCHitTest (const REBAR_INFO *infoP +@@ -3300,7 +3376,11 @@ REBAR_NCHitTest (const REBAR_INFO *infoP (INT *)&nmmouse.dwItemSpec); nmmouse.dwItemData = 0; nmmouse.pt = clpt; @@ -860,7 +873,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c if ((i = REBAR_Notify((NMHDR *) &nmmouse, infoPtr, NM_NCHITTEST))) { TRACE("notify changed return value from %ld to %d\n", ret, i); -@@ -3374,6 +3441,9 @@ REBAR_Paint (const REBAR_INFO *infoPtr, +@@ -3372,6 +3452,9 @@ REBAR_Paint (const REBAR_INFO *infoPtr, { if (hdc) { TRACE("painting\n"); @@ -870,7 +883,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c REBAR_Refresh (infoPtr, hdc); } else { PAINTSTRUCT ps; -@@ -3652,7 +3728,11 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, +@@ -3650,7 +3733,11 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, return REBAR_ShowBand (infoPtr, wParam, lParam); case RB_SIZETORECT: @@ -882,7 +895,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c /* Messages passed to parent */ -@@ -3735,6 +3815,11 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, +@@ -3733,6 +3820,11 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg, case WM_SYSCOLORCHANGE: COMCTL32_RefreshSysColors(); @@ -895,8 +908,8 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c /* case WM_VKEYTOITEM: supported according to ControlSpy */ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar.c ---- e:\wine\dlls\comctl32/toolbar.c 2016-05-31 18:00:02 +0100 -+++ e:\reactos\dll\win32\comctl32/toolbar.c 2016-06-05 19:39:01 +0100 +--- e:\wine\dlls\comctl32/toolbar.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/toolbar.c 2016-08-18 12:03:14 +0100 @@ -33,11 +33,9 @@ * - TBSTYLE_REGISTERDROP * - TBSTYLE_EX_DOUBLEBUFFER @@ -1056,7 +1069,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar } /* get a pointer to the text */ -@@ -1028,7 +1092,11 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO * +@@ -1027,7 +1091,11 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO * } } @@ -1068,7 +1081,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar { int partId = drawSepDropDownArrow ? TP_SPLITBUTTON : TP_BUTTON; int stateId = TS_NORMAL; -@@ -1045,7 +1113,12 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO * +@@ -1044,7 +1112,12 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO * DrawThemeBackground (theme, hdc, partId, stateId, &rc, NULL); } @@ -1081,7 +1094,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar TOOLBAR_DrawFrame(infoPtr, &tbcd, &rc, dwItemCDFlag); if (drawSepDropDownArrow) -@@ -1571,9 +1644,14 @@ static inline SIZE TOOLBAR_MeasureButton +@@ -1570,9 +1643,14 @@ static inline SIZE TOOLBAR_MeasureButton /* ... add on the necessary padding */ if (bValidImageList) { @@ -1096,7 +1109,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar sizeButton.cy += LISTPAD_CY; } else -@@ -1590,7 +1668,11 @@ static inline SIZE TOOLBAR_MeasureButton +@@ -1589,7 +1667,11 @@ static inline SIZE TOOLBAR_MeasureButton { if (bHasBitmap) { @@ -1108,7 +1121,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar if (sizeString.cy > 0) sizeButton.cy += 1 + sizeString.cy; sizeButton.cx = infoPtr->szPadding.cx + -@@ -1695,7 +1777,14 @@ TOOLBAR_LayoutToolbar(TOOLBAR_INFO *info +@@ -1694,7 +1776,14 @@ TOOLBAR_LayoutToolbar(TOOLBAR_INFO *info { if (btnPtr->cx) cx = btnPtr->cx; @@ -1123,7 +1136,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar { SIZE sz; HDC hdc; -@@ -1954,6 +2043,17 @@ TOOLBAR_RelayEvent (HWND hwndTip, HWND h +@@ -1953,6 +2042,17 @@ TOOLBAR_RelayEvent (HWND hwndTip, HWND h SendMessageW (hwndTip, TTM_RELAYEVENT, 0, (LPARAM)&msg); } @@ -1141,7 +1154,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar static void TOOLBAR_TooltipAddTool(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *button) { -@@ -3535,6 +3635,36 @@ TOOLBAR_GetMaxSize (const TOOLBAR_INFO * +@@ -3534,6 +3634,36 @@ TOOLBAR_GetMaxSize (const TOOLBAR_INFO * return TRUE; } @@ -1178,7 +1191,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar /* << TOOLBAR_GetObject >> */ -@@ -4790,6 +4920,44 @@ TOOLBAR_SetMaxTextRows (TOOLBAR_INFO *in +@@ -4789,6 +4919,44 @@ TOOLBAR_SetMaxTextRows (TOOLBAR_INFO *in return TRUE; } @@ -1223,7 +1236,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar /* MSDN gives slightly wrong info on padding. * 1. It is not only used on buttons with the BTNS_AUTOSIZE style -@@ -6030,6 +6198,10 @@ TOOLBAR_NCCreate (HWND hwnd, WPARAM wPar +@@ -6029,6 +6197,10 @@ TOOLBAR_NCCreate (HWND hwnd, WPARAM wPar infoPtr->clrBtnShadow = CLR_DEFAULT; infoPtr->szPadding.cx = DEFPAD_CX; infoPtr->szPadding.cy = DEFPAD_CY; @@ -1234,7 +1247,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar infoPtr->iListGap = DEFLISTGAP; infoPtr->iTopMargin = default_top_margin(infoPtr); infoPtr->dwStyle = lpcs->style; -@@ -6439,7 +6611,7 @@ TOOLBAR_SysColorChange (void) +@@ -6438,7 +6610,7 @@ TOOLBAR_SysColorChange (void) return 0; } @@ -1243,7 +1256,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar /* update theme after a WM_THEMECHANGED message */ static LRESULT theme_changed (HWND hwnd) { -@@ -6448,7 +6620,7 @@ static LRESULT theme_changed (HWND hwnd) +@@ -6447,7 +6619,7 @@ static LRESULT theme_changed (HWND hwnd) OpenThemeData (hwnd, themeClass); return 0; } @@ -1252,7 +1265,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar static LRESULT WINAPI ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -@@ -6553,6 +6725,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, +@@ -6552,6 +6724,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, case TB_GETMAXSIZE: return TOOLBAR_GetMaxSize (infoPtr, (LPSIZE)lParam); @@ -1263,7 +1276,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar /* case TB_GETOBJECT: */ /* 4.71 */ -@@ -6694,6 +6870,11 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, +@@ -6693,6 +6869,11 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, case TB_SETMAXTEXTROWS: return TOOLBAR_SetMaxTextRows (infoPtr, wParam); @@ -1275,7 +1288,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar case TB_SETPADDING: return TOOLBAR_SetPadding (infoPtr, lParam); -@@ -6835,7 +7016,11 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, +@@ -6834,7 +7015,11 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, return TOOLBAR_SysColorChange (); case WM_THEMECHANGED: @@ -1288,9 +1301,9 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar /* case WM_WININICHANGE: */ diff -pudN e:\wine\dlls\comctl32/tooltips.c e:\reactos\dll\win32\comctl32/tooltips.c ---- e:\wine\dlls\comctl32/tooltips.c 2016-05-31 18:00:02 +0100 -+++ e:\reactos\dll\win32\comctl32/tooltips.c 2016-06-05 19:39:01 +0100 -@@ -2013,7 +2013,36 @@ TOOLTIPS_NCHitTest (const TOOLTIPS_INFO +--- e:\wine\dlls\comctl32/tooltips.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/tooltips.c 2016-08-18 12:03:14 +0100 +@@ -2009,7 +2009,36 @@ TOOLTIPS_NCHitTest (const TOOLTIPS_INFO static LRESULT TOOLTIPS_NotifyFormat (TOOLTIPS_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { @@ -1328,8 +1341,8 @@ diff -pudN e:\wine\dlls\comctl32/tooltips.c e:\reactos\dll\win32\comctl32/toolti return 0; } diff -pudN e:\wine\dlls\comctl32/treeview.c e:\reactos\dll\win32\comctl32/treeview.c ---- e:\wine\dlls\comctl32/treeview.c 2016-05-31 18:00:02 +0100 -+++ e:\reactos\dll\win32\comctl32/treeview.c 2016-03-01 20:00:54 +0100 +--- e:\wine\dlls\comctl32/treeview.c 2016-08-14 19:11:25 +0100 ++++ e:\reactos\dll\win32\comctl32/treeview.c 2016-08-18 12:03:14 +0100 @@ -2888,7 +2888,14 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, } } diff --git a/reactos/dll/win32/comctl32/draglist.c b/reactos/dll/win32/comctl32/draglist.c index ecf78663101..21a8ead97fd 100644 --- a/reactos/dll/win32/comctl32/draglist.c +++ b/reactos/dll/win32/comctl32/draglist.c @@ -255,7 +255,7 @@ VOID WINAPI DrawInsert (HWND hwndParent, HWND hwndLB, INT nItem) RedrawWindow(hwndParent, &data->last_drag_icon_rect, NULL, RDW_INTERNALPAINT | RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW); - CopyRect(&data->last_drag_icon_rect, &rcDragIcon); + data->last_drag_icon_rect = rcDragIcon; if (nItem >= 0) { diff --git a/reactos/dll/win32/comctl32/dsa.c b/reactos/dll/win32/comctl32/dsa.c index 72a6435a254..27a926886f2 100644 --- a/reactos/dll/win32/comctl32/dsa.c +++ b/reactos/dll/win32/comctl32/dsa.c @@ -259,6 +259,9 @@ INT WINAPI DSA_InsertItem (HDSA hdsa, INT nIndex, LPVOID pSrc) nNewItems = hdsa->nMaxCount + hdsa->nGrow; nSize = hdsa->nItemSize * nNewItems; + if (nSize / hdsa->nItemSize != nNewItems) + return -1; + lpTemp = ReAlloc (hdsa->pData, nSize); if (!lpTemp) return -1; diff --git a/reactos/dll/win32/comctl32/imagelist.c b/reactos/dll/win32/comctl32/imagelist.c index a03726251d2..5ed8765e71f 100644 --- a/reactos/dll/win32/comctl32/imagelist.c +++ b/reactos/dll/win32/comctl32/imagelist.c @@ -2254,7 +2254,7 @@ ImageList_Merge (HIMAGELIST himl1, INT i1, HIMAGELIST himl2, INT i2, /* helper for ImageList_Read, see comments below */ -static void *read_bitmap(LPSTREAM pstm, BITMAPINFO *bmi) +static void *read_bitmap(IStream *pstm, BITMAPINFO *bmi) { BITMAPFILEHEADER bmfh; int bitsperpixel, palspace; @@ -2330,7 +2330,7 @@ static void *read_bitmap(LPSTREAM pstm, BITMAPINFO *bmi) * * BYTE maskbits[imagesize]; */ -HIMAGELIST WINAPI ImageList_Read (LPSTREAM pstm) +HIMAGELIST WINAPI ImageList_Read(IStream *pstm) { char image_buf[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256]; char mask_buf[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256]; @@ -3064,8 +3064,7 @@ ImageList_SetOverlayImage (HIMAGELIST himl, INT iImage, INT iOverlay) /* helper for ImageList_Write - write bitmap to pstm * currently everything is written as 24 bit RGB, except masks */ -static BOOL -_write_bitmap(HBITMAP hBitmap, LPSTREAM pstm) +static BOOL _write_bitmap(HBITMAP hBitmap, IStream *pstm) { LPBITMAPFILEHEADER bmfh; LPBITMAPINFOHEADER bmih; @@ -3151,8 +3150,7 @@ failed: * probably. */ -BOOL WINAPI -ImageList_Write (HIMAGELIST himl, LPSTREAM pstm) +BOOL WINAPI ImageList_Write(HIMAGELIST himl, IStream *pstm) { ILHEAD ilHead; int i; @@ -3558,7 +3556,9 @@ static HRESULT WINAPI ImageListImpl_GetImageRect(IImageList2 *iface, int i, if (!ImageList_GetImageInfo(imgl, i, &info)) return E_FAIL; - return CopyRect(prc, &info.rcImage) ? S_OK : E_FAIL; + *prc = info.rcImage; + + return S_OK; } static HRESULT WINAPI ImageListImpl_GetIconSize(IImageList2 *iface, int *cx, diff --git a/reactos/dll/win32/comctl32/listview.c b/reactos/dll/win32/comctl32/listview.c index 1de6e298aa6..080310fa185 100644 --- a/reactos/dll/win32/comctl32/listview.c +++ b/reactos/dll/win32/comctl32/listview.c @@ -572,23 +572,28 @@ static const char* debugscrollinfo(const SCROLLINFO *pScrollInfo) if (pScrollInfo == NULL) return "(null)"; len = snprintf(buf, size, "{cbSize=%u, ", pScrollInfo->cbSize); - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (pScrollInfo->fMask & SIF_RANGE) len = snprintf(buf, size, "nMin=%d, nMax=%d, ", pScrollInfo->nMin, pScrollInfo->nMax); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (pScrollInfo->fMask & SIF_PAGE) len = snprintf(buf, size, "nPage=%u, ", pScrollInfo->nPage); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (pScrollInfo->fMask & SIF_POS) len = snprintf(buf, size, "nPos=%d, ", pScrollInfo->nPos); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (pScrollInfo->fMask & SIF_TRACKPOS) len = snprintf(buf, size, "nTrackPos=%d, ", pScrollInfo->nTrackPos); else len = 0; - if (len == -1) goto end; buf += len; + if (len == -1) goto end; + buf += len; goto undo; end: buf = text + strlen(text); @@ -613,27 +618,33 @@ static const char* debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW) if (lpLVItem == NULL) return "(null)"; len = snprintf(buf, size, "{iItem=%d, iSubItem=%d, ", lpLVItem->iItem, lpLVItem->iSubItem); - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpLVItem->mask & LVIF_STATE) len = snprintf(buf, size, "state=%x, stateMask=%x, ", lpLVItem->state, lpLVItem->stateMask); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpLVItem->mask & LVIF_TEXT) len = snprintf(buf, size, "pszText=%s, cchTextMax=%d, ", debugtext_tn(lpLVItem->pszText, isW, 80), lpLVItem->cchTextMax); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpLVItem->mask & LVIF_IMAGE) len = snprintf(buf, size, "iImage=%d, ", lpLVItem->iImage); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpLVItem->mask & LVIF_PARAM) len = snprintf(buf, size, "lParam=%lx, ", lpLVItem->lParam); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpLVItem->mask & LVIF_INDENT) len = snprintf(buf, size, "iIndent=%d, ", lpLVItem->iIndent); else len = 0; - if (len == -1) goto end; buf += len; + if (len == -1) goto end; + buf += len; goto undo; end: buf = text + strlen(text); @@ -649,31 +660,38 @@ static const char* debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW) if (lpColumn == NULL) return "(null)"; len = snprintf(buf, size, "{"); - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpColumn->mask & LVCF_SUBITEM) len = snprintf(buf, size, "iSubItem=%d, ", lpColumn->iSubItem); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpColumn->mask & LVCF_FMT) len = snprintf(buf, size, "fmt=%x, ", lpColumn->fmt); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpColumn->mask & LVCF_WIDTH) len = snprintf(buf, size, "cx=%d, ", lpColumn->cx); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpColumn->mask & LVCF_TEXT) len = snprintf(buf, size, "pszText=%s, cchTextMax=%d, ", debugtext_tn(lpColumn->pszText, isW, 80), lpColumn->cchTextMax); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpColumn->mask & LVCF_IMAGE) len = snprintf(buf, size, "iImage=%d, ", lpColumn->iImage); else len = 0; - if (len == -1) goto end; buf += len; size -= len; + if (len == -1) goto end; + buf += len; size -= len; if (lpColumn->mask & LVCF_ORDER) len = snprintf(buf, size, "iOrder=%d, ", lpColumn->iOrder); else len = 0; - if (len == -1) goto end; buf += len; + if (len == -1) goto end; + buf += len; goto undo; end: buf = text + strlen(text); @@ -3856,9 +3874,8 @@ static void LISTVIEW_MarqueeHighlight(LISTVIEW_INFO *infoPtr, const POINT *coord iterator_frameditems_absolute(&old_elems, infoPtr, &infoPtr->marqueeRect); - CopyRect(&infoPtr->marqueeRect, &rect); - - CopyRect(&infoPtr->marqueeDrawRect, &rect); + infoPtr->marqueeRect = rect; + infoPtr->marqueeDrawRect = rect; OffsetRect(&infoPtr->marqueeDrawRect, offset->x, offset->y); iterator_frameditems_absolute(&new_elems, infoPtr, &infoPtr->marqueeRect); @@ -5629,8 +5646,8 @@ static BOOL LISTVIEW_DeleteColumn(LISTVIEW_INFO *infoPtr, INT nColumn) TRACE("nColumn=%d\n", nColumn); - if (nColumn < 0 || DPA_GetPtrCount(infoPtr->hdpaColumns) == 0 - || nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns)) return FALSE; + if (nColumn < 0 || nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns)) + return FALSE; /* While the MSDN specifically says that column zero should not be deleted, what actually happens is that the column itself is deleted but no items or subitems @@ -5871,13 +5888,15 @@ static BOOL LISTVIEW_EndEditLabelT(LISTVIEW_INFO *infoPtr, BOOL storeText, BOOL { DWORD len = isW ? GetWindowTextLengthW(infoPtr->hwndEdit) : GetWindowTextLengthA(infoPtr->hwndEdit); - if (len) + if (len++) { - if ((pszText = Alloc((len+1) * (isW ? sizeof(WCHAR) : sizeof(CHAR))))) - { - if (isW) GetWindowTextW(infoPtr->hwndEdit, pszText, len+1); - else GetWindowTextA(infoPtr->hwndEdit, (CHAR*)pszText, len+1); - } + if (!(pszText = Alloc(len * (isW ? sizeof(WCHAR) : sizeof(CHAR))))) + return FALSE; + + if (isW) + GetWindowTextW(infoPtr->hwndEdit, pszText, len); + else + GetWindowTextA(infoPtr->hwndEdit, (CHAR*)pszText, len); } } @@ -9064,7 +9083,8 @@ static INT LISTVIEW_SetSelectionMark(LISTVIEW_INFO *infoPtr, INT nIndex) TRACE("(nIndex=%d)\n", nIndex); - infoPtr->nSelectionMark = nIndex; + if (nIndex >= -1 && nIndex < infoPtr->nItemCount) + infoPtr->nSelectionMark = nIndex; return nOldIndex; } diff --git a/reactos/dll/win32/comctl32/monthcal.c b/reactos/dll/win32/comctl32/monthcal.c index 727aab66a7b..5857ca38e62 100644 --- a/reactos/dll/win32/comctl32/monthcal.c +++ b/reactos/dll/win32/comctl32/monthcal.c @@ -43,6 +43,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(monthcal); +/* FIXME: Inspect */ +#define MCS_NOSELCHANGEONNAV 0x0100 + #define MC_SEL_LBUTUP 1 /* Left button released */ #define MC_SEL_LBUTDOWN 2 /* Left button pressed in calendar */ #define MC_PREVPRESSED 4 /* Prev month button pressed */ @@ -1953,7 +1956,7 @@ static void MONTHCAL_NotifyDayState(MONTHCAL_INFO *infoPtr) } /* no valid range check performed */ -static void MONTHCAL_Scroll(MONTHCAL_INFO *infoPtr, INT delta) +static void MONTHCAL_Scroll(MONTHCAL_INFO *infoPtr, INT delta, BOOL keep_selection) { INT i, selIdx = -1; @@ -1966,8 +1969,11 @@ static void MONTHCAL_Scroll(MONTHCAL_INFO *infoPtr, INT delta) MONTHCAL_GetMonth(&infoPtr->calendars[i].month, delta); } + if (keep_selection) + return; + /* selection is always shifted to first calendar */ - if(infoPtr->dwStyle & MCS_MULTISELECT) + if (infoPtr->dwStyle & MCS_MULTISELECT) { SYSTEMTIME range[2]; @@ -1988,6 +1994,7 @@ static void MONTHCAL_Scroll(MONTHCAL_INFO *infoPtr, INT delta) static void MONTHCAL_GoToMonth(MONTHCAL_INFO *infoPtr, enum nav_direction direction) { INT delta = infoPtr->delta ? infoPtr->delta : MONTHCAL_GetCalCount(infoPtr); + BOOL keep_selection; SYSTEMTIME st; TRACE("%s\n", direction == DIRECTION_BACKWARD ? "back" : "fwd"); @@ -2006,9 +2013,11 @@ static void MONTHCAL_GoToMonth(MONTHCAL_INFO *infoPtr, enum nav_direction direct if(!MONTHCAL_IsDateInValidRange(infoPtr, &st, FALSE)) return; - MONTHCAL_Scroll(infoPtr, direction == DIRECTION_BACKWARD ? -delta : delta); + keep_selection = infoPtr->dwStyle & MCS_NOSELCHANGEONNAV; + MONTHCAL_Scroll(infoPtr, direction == DIRECTION_BACKWARD ? -delta : delta, keep_selection); MONTHCAL_NotifyDayState(infoPtr); - MONTHCAL_NotifySelectionChange(infoPtr); + if (!keep_selection) + MONTHCAL_NotifySelectionChange(infoPtr); } static LRESULT @@ -2196,7 +2205,7 @@ MONTHCAL_LButtonDown(MONTHCAL_INFO *infoPtr, LPARAM lParam) if (MONTHCAL_IsDateInValidRange(infoPtr, &st, FALSE)) { - MONTHCAL_Scroll(infoPtr, delta); + MONTHCAL_Scroll(infoPtr, delta, FALSE); MONTHCAL_NotifyDayState(infoPtr); MONTHCAL_NotifySelectionChange(infoPtr); InvalidateRect(infoPtr->hwndSelf, NULL, FALSE); @@ -2835,7 +2844,7 @@ MONTHCAL_Notify(MONTHCAL_INFO *infoPtr, NMHDR *hdr) if (hdr->hwndFrom == infoPtr->hWndYearUpDown && nmud->iDelta) { /* year value limits are set up explicitly after updown creation */ - MONTHCAL_Scroll(infoPtr, 12 * nmud->iDelta); + MONTHCAL_Scroll(infoPtr, 12 * nmud->iDelta, FALSE); MONTHCAL_NotifyDayState(infoPtr); MONTHCAL_NotifySelectionChange(infoPtr); } diff --git a/reactos/dll/win32/comctl32/progress.c b/reactos/dll/win32/comctl32/progress.c index c2313341e99..111bc6a5c3b 100644 --- a/reactos/dll/win32/comctl32/progress.c +++ b/reactos/dll/win32/comctl32/progress.c @@ -344,7 +344,7 @@ static LRESULT PROGRESS_Draw (PROGRESS_INFO *infoPtr, HDC hdc) DrawThemeParentBackground (infoPtr->Self, hdc, NULL); DrawThemeBackground (pdi.theme, hdc, part, 0, &pdi.rect, NULL); SelectClipRgn (hdc, NULL); - CopyRect (&pdi.rect, &cntRect); + pdi.rect = cntRect; } /* compute some drawing parameters */ diff --git a/reactos/dll/win32/comctl32/propsheet.c b/reactos/dll/win32/comctl32/propsheet.c index d0e1e9558c7..d6073b1b31b 100644 --- a/reactos/dll/win32/comctl32/propsheet.c +++ b/reactos/dll/win32/comctl32/propsheet.c @@ -3268,7 +3268,7 @@ static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam) if (bm.bmWidth < r.right || bm.bmHeight < r.bottom) { hbr = CreateSolidBrush(GetPixel(hdcSrc, 0, 0)); - CopyRect(&r, &rzone); + r = rzone; if (bm.bmWidth < r.right) { r.left = bm.bmWidth; diff --git a/reactos/dll/win32/comctl32/rebar.c b/reactos/dll/win32/comctl32/rebar.c index 9210858f8b8..0266553bd04 100644 --- a/reactos/dll/win32/comctl32/rebar.c +++ b/reactos/dll/win32/comctl32/rebar.c @@ -714,8 +714,7 @@ REBAR_CalcHorzBand (const REBAR_INFO *infoPtr, UINT rstart, UINT rend) lpBand->fDraw |= DRAW_GRIPPER; lpBand->rcGripper.left += REBAR_PRE_GRIPPER; lpBand->rcGripper.right = lpBand->rcGripper.left + GRIPPER_WIDTH; - lpBand->rcGripper.top += 2; - lpBand->rcGripper.bottom -= 2; + InflateRect(&lpBand->rcGripper, 0, -2); SetRect (&lpBand->rcCapImage, lpBand->rcGripper.right+REBAR_ALWAYS_SPACE, lpBand->rcBand.top, @@ -843,8 +842,7 @@ REBAR_CalcVertBand (const REBAR_INFO *infoPtr, UINT rstart, UINT rend) } else { /* horizontal gripper */ - lpBand->rcGripper.left += 2; - lpBand->rcGripper.right -= 2; + InflateRect(&lpBand->rcGripper, -2, 0); lpBand->rcGripper.top += REBAR_PRE_GRIPPER; lpBand->rcGripper.bottom = lpBand->rcGripper.top + GRIPPER_WIDTH; @@ -1557,7 +1555,7 @@ REBAR_AutoSize(REBAR_INFO *infoPtr, BOOL needsLayout) GetClientRect(infoPtr->hwndSelf, &rcNew); GetClientRect(infoPtr->hwndSelf, &autosize.rcTarget); - autosize.fChanged = (memcmp(&rc, &rcNew, sizeof(RECT)) == 0); + autosize.fChanged = EqualRect(&rc, &rcNew); autosize.rcTarget = rc; autosize.rcActual = rcNew; REBAR_Notify((NMHDR *)&autosize, infoPtr, RBN_AUTOSIZE); @@ -2434,7 +2432,7 @@ REBAR_GetRect (const REBAR_INFO *infoPtr, INT iBand, RECT *lprc) lpBand = REBAR_GetBand(infoPtr, iBand); /* For CCS_VERT the coordinates will be swapped - like on Windows */ - CopyRect (lprc, &lpBand->rcBand); + *lprc = lpBand->rcBand; TRACE("band %d, (%s)\n", iBand, wine_dbgstr_rect(lprc)); diff --git a/reactos/dll/win32/comctl32/status.c b/reactos/dll/win32/comctl32/status.c index 9393c84ee39..3cf19862452 100644 --- a/reactos/dll/win32/comctl32/status.c +++ b/reactos/dll/win32/comctl32/status.c @@ -114,8 +114,8 @@ STATUSBAR_ComputeHeight(STATUS_INFO *infoPtr) * textHeight pixels large */ HDC hdc = GetDC(infoPtr->Self); RECT r; - memset (&r, 0, sizeof (r)); - r.bottom = max(infoPtr->minHeight, tm.tmHeight); + + SetRect(&r, 0, 0, 0, max(infoPtr->minHeight, tm.tmHeight)); if (SUCCEEDED(GetThemeBackgroundExtent(theme, hdc, SP_PANE, 0, &r, &r))) { height = r.bottom - r.top; diff --git a/reactos/dll/win32/comctl32/tab.c b/reactos/dll/win32/comctl32/tab.c index 0137c64e6ef..0a191c04c7c 100644 --- a/reactos/dll/win32/comctl32/tab.c +++ b/reactos/dll/win32/comctl32/tab.c @@ -357,14 +357,8 @@ static BOOL TAB_InternalGetItemRect( (itemIndex < infoPtr->leftmostVisible))) { TRACE("Not Visible\n"); - /* need to initialize these to empty rects */ - if (itemRect) - { - memset(itemRect,0,sizeof(RECT)); - itemRect->bottom = infoPtr->tabHeight; - } - if (selectedRect) - memset(selectedRect,0,sizeof(RECT)); + SetRect(itemRect, 0, 0, 0, infoPtr->tabHeight); + SetRectEmpty(selectedRect); return FALSE; } @@ -444,7 +438,7 @@ static BOOL TAB_InternalGetItemRect( /* Now, calculate the position of the item as if it were selected. */ if (selectedRect!=NULL) { - CopyRect(selectedRect, itemRect); + *selectedRect = *itemRect; /* The rectangle of a selected item is a bit wider. */ if(infoPtr->dwStyle & TCS_VERTICAL) @@ -1595,12 +1589,7 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect } } else - { - drawRect->left += 2; - drawRect->top += 2; - drawRect->right -= 2; - drawRect->bottom -= 2; - } + InflateRect(drawRect, -2, -2); } else { @@ -1609,8 +1598,7 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect if (iItem != infoPtr->iSelected) { drawRect->left += 2; - drawRect->top += 2; - drawRect->bottom -= 2; + InflateRect(drawRect, 0, -2); } } else if (infoPtr->dwStyle & TCS_VERTICAL) @@ -1621,9 +1609,8 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect } else { - drawRect->top += 2; drawRect->right -= 2; - drawRect->bottom -= 2; + InflateRect(drawRect, 0, -2); } } else if (infoPtr->dwStyle & TCS_BOTTOM) @@ -1706,10 +1693,7 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect drawRect->top += 2; drawRect->right -= 1; if ( iItem == infoPtr->iSelected ) - { - drawRect->right -= 1; - drawRect->left += 1; - } + InflateRect(drawRect, -1, 0); id = (UINT)GetWindowLongPtrW( infoPtr->hwnd, GWLP_ID ); @@ -1725,7 +1709,7 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect dis.itemState |= ODS_FOCUS; dis.hwndItem = infoPtr->hwnd; dis.hDC = hdc; - CopyRect(&dis.rcItem,drawRect); + dis.rcItem = *drawRect; /* when extra data fits ULONG_PTR, store it directly */ if (infoPtr->cbInfo > sizeof(LPARAM)) diff --git a/reactos/dll/win32/comctl32/theme_button.c b/reactos/dll/win32/comctl32/theme_button.c index b8f85bf8159..bdf57e35314 100644 --- a/reactos/dll/win32/comctl32/theme_button.c +++ b/reactos/dll/win32/comctl32/theme_button.c @@ -265,8 +265,7 @@ static void GB_draw(HTHEME theme, HWND hwnd, HDC hDC, ButtonState drawState, UIN if (text) { - textRect.left += 2; - textRect.right -= 2; + InflateRect(&textRect, -2, 0); DrawThemeText(theme, hDC, BP_GROUPBOX, state, text, lstrlenW(text), 0, 0, &textRect); HeapFree(GetProcessHeap(), 0, text); } diff --git a/reactos/dll/win32/comctl32/theme_combo.c b/reactos/dll/win32/comctl32/theme_combo.c index 1e8b46befd3..70442ba704b 100644 --- a/reactos/dll/win32/comctl32/theme_combo.c +++ b/reactos/dll/win32/comctl32/theme_combo.c @@ -69,7 +69,7 @@ static void paint_text (HWND hwnd, HDC hdc, DWORD dwStyle, const COMBOBOXINFO *c /* * Give ourselves some space. */ - CopyRect (&rectEdit, &cbi->rcItem); + rectEdit = cbi->rcItem; InflateRect( &rectEdit, -1, -1 ); if(dwStyle & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) @@ -176,8 +176,7 @@ static LRESULT paint (HTHEME theme, HWND hwnd, HDC hParamDC, ULONG state) GetClientRect (hwnd, &frameRect); else { - CopyRect (&frameRect, &cbi.rcItem); - + frameRect = cbi.rcItem; InflateRect(&frameRect, EDIT_CONTROL_PADDING + COMBO_XBORDERSIZE, EDIT_CONTROL_PADDING + COMBO_YBORDERSIZE); diff --git a/reactos/dll/win32/comctl32/toolbar.c b/reactos/dll/win32/comctl32/toolbar.c index 290b9c59c9e..ad571dbdf69 100644 --- a/reactos/dll/win32/comctl32/toolbar.c +++ b/reactos/dll/win32/comctl32/toolbar.c @@ -925,7 +925,7 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); rc = btnPtr->rect; - CopyRect (&rcArrow, &rc); + rcArrow = rc; /* separator - doesn't send NM_CUSTOMDRAW */ if (btnPtr->fsStyle & BTNS_SEP) { @@ -979,8 +979,8 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, /* copy text & bitmap rects after adjusting for drop-down arrow * so that text & bitmap is centered in the rectangle not containing * the arrow */ - CopyRect(&rcText, &rc); - CopyRect(&rcBitmap, &rc); + rcText = rc; + rcBitmap = rc; /* Center the bitmap horizontally and vertically */ if (dwStyle & TBSTYLE_LIST) @@ -1007,8 +1007,7 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc, /* calculate text position */ if (lpText) { - rcText.left += GetSystemMetrics(SM_CXEDGE); - rcText.right -= GetSystemMetrics(SM_CXEDGE); + InflateRect(&rcText, -GetSystemMetrics(SM_CXEDGE), 0); if (dwStyle & TBSTYLE_LIST) { rcText.left += infoPtr->nBitmapWidth + infoPtr->iListGap + 2; @@ -2734,9 +2733,9 @@ TOOLBAR_CustomizeDialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) lpdis->rcItem.right, lpdis->rcItem.bottom); /* calculate button and text rectangles */ - CopyRect (&rcButton, &lpdis->rcItem); + rcButton = lpdis->rcItem; InflateRect (&rcButton, -1, -1); - CopyRect (&rcText, &rcButton); + rcText = rcButton; rcButton.right = rcButton.left + custInfo->tbInfo->nBitmapWidth + 6; rcText.left = rcButton.right + 2; @@ -5704,7 +5703,7 @@ TOOLBAR_LButtonDown (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam) RECT arrowRect; infoPtr->nOldHit = nHit; - CopyRect(&arrowRect, &btnPtr->rect); + arrowRect = btnPtr->rect; arrowRect.left = max(btnPtr->rect.left, btnPtr->rect.right - DDARROW_WIDTH); /* for EX_DRAWDDARROWS style, click must be in the drop-down arrow rect */ diff --git a/reactos/dll/win32/comctl32/tooltips.c b/reactos/dll/win32/comctl32/tooltips.c index c70c1c70a00..52ec3b5c27a 100644 --- a/reactos/dll/win32/comctl32/tooltips.c +++ b/reactos/dll/win32/comctl32/tooltips.c @@ -1321,12 +1321,10 @@ TOOLTIPS_GetDelayTime (const TOOLTIPS_INFO *infoPtr, DWORD duration) static LRESULT -TOOLTIPS_GetMargin (const TOOLTIPS_INFO *infoPtr, LPRECT lpRect) +TOOLTIPS_GetMargin (const TOOLTIPS_INFO *infoPtr, RECT *rect) { - lpRect->left = infoPtr->rcMargin.left; - lpRect->right = infoPtr->rcMargin.right; - lpRect->bottom = infoPtr->rcMargin.bottom; - lpRect->top = infoPtr->rcMargin.top; + if (rect) + *rect = infoPtr->rcMargin; return 0; } @@ -1598,12 +1596,10 @@ TOOLTIPS_SetDelayTime (TOOLTIPS_INFO *infoPtr, DWORD duration, INT nTime) static LRESULT -TOOLTIPS_SetMargin (TOOLTIPS_INFO *infoPtr, const RECT *lpRect) +TOOLTIPS_SetMargin (TOOLTIPS_INFO *infoPtr, const RECT *rect) { - infoPtr->rcMargin.left = lpRect->left; - infoPtr->rcMargin.right = lpRect->right; - infoPtr->rcMargin.bottom = lpRect->bottom; - infoPtr->rcMargin.top = lpRect->top; + if (rect) + infoPtr->rcMargin = *rect; return 0; } diff --git a/reactos/dll/win32/comctl32/trackbar.c b/reactos/dll/win32/comctl32/trackbar.c index eda1f7cf46c..97a1cd622b2 100644 --- a/reactos/dll/win32/comctl32/trackbar.c +++ b/reactos/dll/win32/comctl32/trackbar.c @@ -32,6 +32,8 @@ #include "comctl32.h" +#include + WINE_DEFAULT_DEBUG_CHANNEL(trackbar); typedef struct @@ -188,7 +190,7 @@ TRACKBAR_ConvertPlaceToPosition (const TRACKBAR_INFO *infoPtr, int place) pos = infoPtr->lRangeMin; TRACE("%.2f\n", pos); - return (LONG)(pos + 0.5); + return (LONG)floor(pos + 0.5); } @@ -936,8 +938,11 @@ TRACKBAR_Refresh (TRACKBAR_INFO *infoPtr, HDC hdcDst) if (GetWindowTheme (infoPtr->hwndSelf)) { DrawThemeParentBackground (infoPtr->hwndSelf, hdc, 0); } - else - FillRect (hdc, &rcClient, GetSysColorBrush(COLOR_BTNFACE)); + else { + HBRUSH brush = (HBRUSH)SendMessageW(infoPtr->hwndNotify, WM_CTLCOLORSTATIC, + (WPARAM)hdc, (LPARAM)infoPtr->hwndSelf); + FillRect (hdc, &rcClient, brush ? brush : GetSysColorBrush(COLOR_BTNFACE)); + } if (gcdrf != CDRF_DODEFAULT) notify_customdraw(infoPtr, &nmcd, CDDS_POSTERASE); } @@ -1230,21 +1235,21 @@ TRACKBAR_SetRange (TRACKBAR_INFO *infoPtr, BOOL redraw, LONG range) infoPtr->lRangeMin = (SHORT)LOWORD(range); infoPtr->lRangeMax = (SHORT)HIWORD(range); - if (infoPtr->lPos < infoPtr->lRangeMin) { + /* clip position to new min/max limit */ + if (infoPtr->lPos < infoPtr->lRangeMin) infoPtr->lPos = infoPtr->lRangeMin; - infoPtr->flags |= TB_THUMBPOSCHANGED; - } - if (infoPtr->lPos > infoPtr->lRangeMax) { + if (infoPtr->lPos > infoPtr->lRangeMax) infoPtr->lPos = infoPtr->lRangeMax; - infoPtr->flags |= TB_THUMBPOSCHANGED; - } infoPtr->lPageSize = (infoPtr->lRangeMax - infoPtr->lRangeMin) / 5; if (infoPtr->lPageSize == 0) infoPtr->lPageSize = 1; - if (changed && (infoPtr->dwStyle & TBS_AUTOTICKS)) - TRACKBAR_RecalculateTics (infoPtr); + if (changed) { + if (infoPtr->dwStyle & TBS_AUTOTICKS) + TRACKBAR_RecalculateTics (infoPtr); + infoPtr->flags |= TB_THUMBPOSCHANGED; + } if (redraw) TRACKBAR_InvalidateAll(infoPtr); diff --git a/reactos/dll/win32/comctl32/treeview.c b/reactos/dll/win32/comctl32/treeview.c index c0b666b3c93..bbb0c16d894 100644 --- a/reactos/dll/win32/comctl32/treeview.c +++ b/reactos/dll/win32/comctl32/treeview.c @@ -3621,7 +3621,7 @@ TREEVIEW_HitTestPoint(const TREEVIEW_INFO *infoPtr, POINT pt) return item; } -static LRESULT +static TREEVIEW_ITEM * TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht) { TREEVIEW_ITEM *item; @@ -3656,14 +3656,14 @@ TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht) if (status) { lpht->flags = status; - return 0; + return NULL; } item = TREEVIEW_HitTestPoint(infoPtr, lpht->pt); if (!item) { lpht->flags = TVHT_NOWHERE; - return 0; + return NULL; } if (x >= item->textOffset + item->textWidth) @@ -3694,7 +3694,7 @@ TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht) lpht->hItem = item; TRACE("(%d,%d):result 0x%x\n", lpht->pt.x, lpht->pt.y, lpht->flags); - return (LRESULT)item; + return item; } /* Item Label Editing ***************************************************/ @@ -4117,7 +4117,7 @@ TREEVIEW_LButtonDoubleClick(TREEVIEW_INFO *infoPtr, LPARAM lParam) hit.pt.x = (short)LOWORD(lParam); hit.pt.y = (short)HIWORD(lParam); - item = (TREEVIEW_ITEM *)TREEVIEW_HitTest(infoPtr, &hit); + item = TREEVIEW_HitTest(infoPtr, &hit); if (!item) return 0; TRACE("item %d\n", TREEVIEW_GetItemIndex(infoPtr, item)); @@ -5317,9 +5317,9 @@ TREEVIEW_MouseLeave (TREEVIEW_INFO * infoPtr) static LRESULT TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam) { - POINT pt; TRACKMOUSEEVENT trackinfo; TREEVIEW_ITEM * item; + TVHITTESTINFO ht; if (!(infoPtr->dwStyle & TVS_TRACKSELECT)) return 0; @@ -5344,18 +5344,21 @@ TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam) _TrackMouseEvent(&trackinfo); } - pt.x = (short)LOWORD(lParam); - pt.y = (short)HIWORD(lParam); + ht.pt.x = (short)LOWORD(lParam); + ht.pt.y = (short)HIWORD(lParam); - item = TREEVIEW_HitTestPoint(infoPtr, pt); - - if (item != infoPtr->hotItem) + item = TREEVIEW_HitTest(infoPtr, &ht); + if ((item != infoPtr->hotItem) || !(ht.flags & TVHT_ONITEM)) { /* redraw old hot item */ TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem); - infoPtr->hotItem = item; - /* redraw new hot item */ - TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem); + infoPtr->hotItem = NULL; + if (item && (ht.flags & TVHT_ONITEM)) + { + infoPtr->hotItem = item; + /* redraw new hot item */ + TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem); + } } return 0; @@ -5494,14 +5497,14 @@ TREEVIEW_StyleChanged(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT TREEVIEW_SetCursor(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { - POINT pt; TREEVIEW_ITEM * item; + TVHITTESTINFO ht; NMMOUSE nmmouse; - GetCursorPos(&pt); - ScreenToClient(infoPtr->hwnd, &pt); + GetCursorPos(&ht.pt); + ScreenToClient(infoPtr->hwnd, &ht.pt); - item = TREEVIEW_HitTestPoint(infoPtr, pt); + item = TREEVIEW_HitTest(infoPtr, &ht); memset(&nmmouse, 0, sizeof(nmmouse)); if (item) @@ -5515,7 +5518,7 @@ TREEVIEW_SetCursor(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) if (TREEVIEW_SendRealNotify(infoPtr, NM_SETCURSOR, &nmmouse.hdr)) return 0; - if (item && (infoPtr->dwStyle & TVS_TRACKSELECT)) + if (item && (infoPtr->dwStyle & TVS_TRACKSELECT) && (ht.flags & TVHT_ONITEM)) { SetCursor(infoPtr->hcurHand); return 0; @@ -5659,7 +5662,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return TREEVIEW_GetVisibleCount(infoPtr); case TVM_HITTEST: - return TREEVIEW_HitTest(infoPtr, (LPTVHITTESTINFO)lParam); + return (LRESULT)TREEVIEW_HitTest(infoPtr, (TVHITTESTINFO*)lParam); case TVM_INSERTITEMA: case TVM_INSERTITEMW: @@ -5735,6 +5738,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return TREEVIEW_HScroll(infoPtr, wParam); case WM_KEYDOWN: + case WM_SYSKEYDOWN: return TREEVIEW_KeyDown(infoPtr, wParam); case WM_KILLFOCUS: @@ -5799,8 +5803,6 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) COMCTL32_RefreshSysColors(); return 0; - /* WM_SYSKEYDOWN */ - case WM_TIMER: return TREEVIEW_HandleTimer(infoPtr, wParam); diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index ef085109bc6..fac80845eec 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -54,7 +54,7 @@ reactos/dll/win32/browseui # Out of sync reactos/dll/win32/cabinet # Synced to WineStaging-1.9.16 reactos/dll/win32/clusapi # Synced to WineStaging-1.9.11 reactos/dll/win32/comcat # Synced to WineStaging-1.9.11 -reactos/dll/win32/comctl32 # Synced to WineStaging-1.9.11 +reactos/dll/win32/comctl32 # Synced to WineStaging-1.9.16 reactos/dll/win32/comdlg32 # Synced to WineStaging-1.9.11 reactos/dll/win32/compstui # Synced to WineStaging-1.9.11 reactos/dll/win32/credui # Synced to WineStaging-1.9.16