[COMCTL32] Sync with Wine Staging 1.9.16. CORE-11866

svn path=/trunk/; revision=72320
This commit is contained in:
Amine Khaldi 2016-08-18 11:09:45 +00:00
parent acdd6b2e5b
commit 297e33f228
18 changed files with 216 additions and 189 deletions

View file

@ -1,5 +1,5 @@
diff -pudN e:\wine\dlls\comctl32/comctl32.h e:\reactos\dll\win32\comctl32/comctl32.h 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 +++ e:\reactos\dll\win32\comctl32/comctl32.h 2014-03-05 11:47:40 +0100
@@ -53,67 +53,6 @@ @@ -53,67 +53,6 @@
extern HMODULE COMCTL32_hModule DECLSPEC_HIDDEN; 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 { typedef struct _SUBCLASSPROCS {
SUBCLASSPROC subproc; SUBCLASSPROC subproc;
diff -pudN e:\wine\dlls\comctl32/commctrl.c e:\reactos\dll\win32\comctl32/commctrl.c 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 +++ e:\reactos\dll\win32\comctl32/commctrl.c 2016-03-01 20:00:53 +0100
@@ -60,6 +60,19 @@ @@ -60,6 +60,19 @@
@ -333,8 +333,8 @@ diff -pudN e:\wine\dlls\comctl32/commctrl.c e:\reactos\dll\win32\comctl32/commct
+ return TRUE; + return TRUE;
+} +}
diff -pudN e:\wine\dlls\comctl32/imagelist.c e:\reactos\dll\win32\comctl32/imagelist.c 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:\wine\dlls\comctl32/imagelist.c 2016-08-14 19:11:25 +0100
+++ e:\reactos\dll\win32\comctl32/imagelist.c 2016-06-05 19:39:00 +0100 +++ e:\reactos\dll\win32\comctl32/imagelist.c 2016-08-18 12:03:13 +0100
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
* *
* TODO: * 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 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 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:\wine\dlls\comctl32/listview.c 2016-08-14 19:11:25 +0100
+++ e:\reactos\dll\win32\comctl32/listview.c 2016-06-05 19:39:00 +0100 +++ e:\reactos\dll\win32\comctl32/listview.c 2016-08-18 12:03:13 +0100
@@ -287,6 +287,9 @@ typedef struct tagLISTVIEW_INFO @@ -287,6 +287,9 @@ typedef struct tagLISTVIEW_INFO
COLORREF clrBk; COLORREF clrBk;
COLORREF clrText; COLORREF clrText;
@ -516,7 +516,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi
/* font */ /* font */
HFONT hDefaultFont; 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 */ /* used to handle collapse main item column case */
static inline BOOL LISTVIEW_DrawFocusRect(const LISTVIEW_INFO *infoPtr, HDC hdc) 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 */ /* 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) if (infoPtr->uView == LV_VIEW_DETAILS && infoPtr->dwLvExStyle & LVS_EX_GRIDLINES)
rcLabel.bottom--; 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 */ /* Draw marquee rectangle if appropriate */
if (infoPtr->bMarqueeSelect) 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) if (cdmode & CDRF_NOTIFYPOSTPAINT)
notify_postpaint(infoPtr, &nmlvcd); 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); 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 != color) {
if (infoPtr->clrBk != CLR_NONE) DeleteObject(infoPtr->hBkBrush); if (infoPtr->clrBk != CLR_NONE) DeleteObject(infoPtr->hBkBrush);
infoPtr->clrBk = color; infoPtr->clrBk = color;
@@ -8688,7 +8719,7 @@ static DWORD LISTVIEW_SetIconSpacing(LIS @@ -8710,7 +8741,7 @@ static DWORD LISTVIEW_SetIconSpacing(LIS
return oldspacing; return oldspacing;
} }
@ -586,7 +586,7 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi
{ {
INT cx, cy; 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 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->clrText = CLR_DEFAULT;
infoPtr->clrTextBk = CLR_DEFAULT; infoPtr->clrTextBk = CLR_DEFAULT;
LISTVIEW_SetBkColor(infoPtr, comctl32_color.clrWindow); 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 */ /* set default values */
infoPtr->nFocusedItem = -1; 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: case WM_SYSCOLORCHANGE:
COMCTL32_RefreshSysColors(); COMCTL32_RefreshSysColors();
@ -622,9 +622,22 @@ diff -pudN e:\wine\dlls\comctl32/listview.c e:\reactos\dll\win32\comctl32/listvi
return 0; return 0;
/* case WM_TIMER: */ /* 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 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:\wine\dlls\comctl32/propsheet.c 2016-08-14 19:11:25 +0100
+++ e:\reactos\dll\win32\comctl32/propsheet.c 2016-06-05 19:39:01 +0100 +++ e:\reactos\dll\win32\comctl32/propsheet.c 2016-08-18 12:03:14 +0100
@@ -2355,12 +2355,19 @@ static void PROPSHEET_SetWizButtons(HWND @@ -2355,12 +2355,19 @@ static void PROPSHEET_SetWizButtons(HWND
HWND hwndFinish = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON); HWND hwndFinish = GetDlgItem(hwndDlg, IDC_FINISH_BUTTON);
BOOL enable_finish = ((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH); 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 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:\wine\dlls\comctl32/rebar.c 2016-08-14 19:11:25 +0100
+++ e:\reactos\dll\win32\comctl32/rebar.c 2016-06-05 19:39:01 +0100 +++ e:\reactos\dll\win32\comctl32/rebar.c 2016-08-18 12:03:14 +0100
@@ -50,7 +50,6 @@ @@ -50,7 +50,6 @@
* - WM_QUERYNEWPALETTE * - WM_QUERYNEWPALETTE
* - WM_RBUTTONDOWN * - WM_RBUTTONDOWN
@ -690,7 +703,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c
* - WM_VKEYTOITEM * - WM_VKEYTOITEM
* - WM_WININICHANGE * - WM_WININICHANGE
* Notifications: * Notifications:
@@ -1821,16 +1820,43 @@ static LRESULT REBAR_EraseBkGnd (const R @@ -1819,16 +1818,43 @@ static LRESULT REBAR_EraseBkGnd (const R
RECT cr; RECT cr;
COLORREF old = CLR_NONE, new; COLORREF old = CLR_NONE, new;
HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); 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 */ /* draw band separator between rows */
if (lpBand->iRow != oldrow) { if (lpBand->iRow != oldrow) {
oldrow = lpBand->iRow; 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", TRACE ("drawing band separator bottom (%s)\n",
wine_dbgstr_rect(&rcRowSep)); 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) { if (infoPtr->dwStyle & CCS_VERT) {
rcSep.bottom = rcSep.top; rcSep.bottom = rcSep.top;
rcSep.top -= SEP_WIDTH_SIZE; 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) if (theme)
DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_BOTTOM, NULL); DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_BOTTOM, NULL);
else else
@@ -1873,6 +1905,9 @@ static LRESULT REBAR_EraseBkGnd (const R @@ -1871,6 +1903,9 @@ static LRESULT REBAR_EraseBkGnd (const R
else { else {
rcSep.right = rcSep.left; rcSep.right = rcSep.left;
rcSep.left -= SEP_WIDTH_SIZE; 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) if (theme)
DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_RIGHT, NULL); DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_RIGHT, NULL);
else else
@@ -1903,6 +1938,9 @@ static LRESULT REBAR_EraseBkGnd (const R @@ -1901,6 +1936,9 @@ static LRESULT REBAR_EraseBkGnd (const R
#endif #endif
} }
@ -774,7 +787,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c
if (theme) if (theme)
{ {
/* When themed, the background color is ignored (but not a /* 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); DrawThemeBackground (theme, hdc, 0, 0, &cr, &rcBand);
} }
else else
@ -782,7 +795,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c
{ {
old = SetBkColor (hdc, new); old = SetBkColor (hdc, new);
TRACE("%s background color=0x%06x, band %s\n", 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) if (lpBand->clrBack != CLR_NONE)
SetBkColor (hdc, old); 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); + CombineRgn(hrgn, hrgn, hrgnBand, RGN_DIFF);
+ DeleteObject(hrgnBand); + DeleteObject(hrgnBand);
+#endif +#endif
+ } }
+ +
+#if 1 +#if 1
+#ifdef __REACTOS__ +#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); + FillRgn(hdc, hrgn, hbrush);
+ DeleteObject(hbrush); + DeleteObject(hbrush);
+ DeleteObject(hrgn); + DeleteObject(hrgn);
} + }
+#endif +#endif
return TRUE; return TRUE;
} }
@@ -2889,12 +2947,26 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT @@ -2887,12 +2945,26 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT
static LRESULT static LRESULT
@ -836,7 +849,7 @@ diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c
return TRUE; 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))) else if ((theme = GetWindowTheme (infoPtr->hwndSelf)))
{ {
/* FIXME: should use GetThemeInt */ /* 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)); TRACE("new client=(%s)\n", wine_dbgstr_rect(rect));
return 0; 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); (INT *)&nmmouse.dwItemSpec);
nmmouse.dwItemData = 0; nmmouse.dwItemData = 0;
nmmouse.pt = clpt; 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))) { if ((i = REBAR_Notify((NMHDR *) &nmmouse, infoPtr, NM_NCHITTEST))) {
TRACE("notify changed return value from %ld to %d\n", TRACE("notify changed return value from %ld to %d\n",
ret, i); ret, i);
@@ -3374,6 +3441,9 @@ REBAR_Paint (const REBAR_INFO *infoPtr, @@ -3372,6 +3452,9 @@ REBAR_Paint (const REBAR_INFO *infoPtr,
{ {
if (hdc) { if (hdc) {
TRACE("painting\n"); 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); REBAR_Refresh (infoPtr, hdc);
} else { } else {
PAINTSTRUCT ps; 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); return REBAR_ShowBand (infoPtr, wParam, lParam);
case RB_SIZETORECT: 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 */ /* 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: case WM_SYSCOLORCHANGE:
COMCTL32_RefreshSysColors(); 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 */ /* case WM_VKEYTOITEM: supported according to ControlSpy */
diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar.c 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:\wine\dlls\comctl32/toolbar.c 2016-08-14 19:11:25 +0100
+++ e:\reactos\dll\win32\comctl32/toolbar.c 2016-06-05 19:39:01 +0100 +++ e:\reactos\dll\win32\comctl32/toolbar.c 2016-08-18 12:03:14 +0100
@@ -33,11 +33,9 @@ @@ -33,11 +33,9 @@
* - TBSTYLE_REGISTERDROP * - TBSTYLE_REGISTERDROP
* - TBSTYLE_EX_DOUBLEBUFFER * - 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 */ /* 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 partId = drawSepDropDownArrow ? TP_SPLITBUTTON : TP_BUTTON;
int stateId = TS_NORMAL; 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); 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); TOOLBAR_DrawFrame(infoPtr, &tbcd, &rc, dwItemCDFlag);
if (drawSepDropDownArrow) 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 */ /* ... add on the necessary padding */
if (bValidImageList) if (bValidImageList)
{ {
@ -1096,7 +1109,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar
sizeButton.cy += LISTPAD_CY; sizeButton.cy += LISTPAD_CY;
} }
else else
@@ -1590,7 +1668,11 @@ static inline SIZE TOOLBAR_MeasureButton @@ -1589,7 +1667,11 @@ static inline SIZE TOOLBAR_MeasureButton
{ {
if (bHasBitmap) if (bHasBitmap)
{ {
@ -1108,7 +1121,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar
if (sizeString.cy > 0) if (sizeString.cy > 0)
sizeButton.cy += 1 + sizeString.cy; sizeButton.cy += 1 + sizeString.cy;
sizeButton.cx = infoPtr->szPadding.cx + 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) if (btnPtr->cx)
cx = 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; SIZE sz;
HDC hdc; 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); 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 static void
TOOLBAR_TooltipAddTool(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *button) 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; return TRUE;
} }
@ -1178,7 +1191,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar
/* << TOOLBAR_GetObject >> */ /* << TOOLBAR_GetObject >> */
@@ -4790,6 +4920,44 @@ TOOLBAR_SetMaxTextRows (TOOLBAR_INFO *in @@ -4789,6 +4919,44 @@ TOOLBAR_SetMaxTextRows (TOOLBAR_INFO *in
return TRUE; 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. /* MSDN gives slightly wrong info on padding.
* 1. It is not only used on buttons with the BTNS_AUTOSIZE style * 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->clrBtnShadow = CLR_DEFAULT;
infoPtr->szPadding.cx = DEFPAD_CX; infoPtr->szPadding.cx = DEFPAD_CX;
infoPtr->szPadding.cy = DEFPAD_CY; 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->iListGap = DEFLISTGAP;
infoPtr->iTopMargin = default_top_margin(infoPtr); infoPtr->iTopMargin = default_top_margin(infoPtr);
infoPtr->dwStyle = lpcs->style; infoPtr->dwStyle = lpcs->style;
@@ -6439,7 +6611,7 @@ TOOLBAR_SysColorChange (void) @@ -6438,7 +6610,7 @@ TOOLBAR_SysColorChange (void)
return 0; 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 */ /* update theme after a WM_THEMECHANGED message */
static LRESULT theme_changed (HWND hwnd) 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); OpenThemeData (hwnd, themeClass);
return 0; return 0;
} }
@ -1252,7 +1265,7 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar
static LRESULT WINAPI static LRESULT WINAPI
ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 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: case TB_GETMAXSIZE:
return TOOLBAR_GetMaxSize (infoPtr, (LPSIZE)lParam); 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 */ /* 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: case TB_SETMAXTEXTROWS:
return TOOLBAR_SetMaxTextRows (infoPtr, wParam); 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: case TB_SETPADDING:
return TOOLBAR_SetPadding (infoPtr, lParam); 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 (); return TOOLBAR_SysColorChange ();
case WM_THEMECHANGED: case WM_THEMECHANGED:
@ -1288,9 +1301,9 @@ diff -pudN e:\wine\dlls\comctl32/toolbar.c e:\reactos\dll\win32\comctl32/toolbar
/* case WM_WININICHANGE: */ /* case WM_WININICHANGE: */
diff -pudN e:\wine\dlls\comctl32/tooltips.c e:\reactos\dll\win32\comctl32/tooltips.c 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:\wine\dlls\comctl32/tooltips.c 2016-08-14 19:11:25 +0100
+++ e:\reactos\dll\win32\comctl32/tooltips.c 2016-06-05 19:39:01 +0100 +++ e:\reactos\dll\win32\comctl32/tooltips.c 2016-08-18 12:03:14 +0100
@@ -2013,7 +2013,36 @@ TOOLTIPS_NCHitTest (const TOOLTIPS_INFO @@ -2009,7 +2009,36 @@ TOOLTIPS_NCHitTest (const TOOLTIPS_INFO
static LRESULT static LRESULT
TOOLTIPS_NotifyFormat (TOOLTIPS_INFO *infoPtr, WPARAM wParam, LPARAM lParam) 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; return 0;
} }
diff -pudN e:\wine\dlls\comctl32/treeview.c e:\reactos\dll\win32\comctl32/treeview.c 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:\wine\dlls\comctl32/treeview.c 2016-08-14 19:11:25 +0100
+++ e:\reactos\dll\win32\comctl32/treeview.c 2016-03-01 20:00:54 +0100 +++ e:\reactos\dll\win32\comctl32/treeview.c 2016-08-18 12:03:14 +0100
@@ -2888,7 +2888,14 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, @@ -2888,7 +2888,14 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr,
} }
} }

View file

@ -255,7 +255,7 @@ VOID WINAPI DrawInsert (HWND hwndParent, HWND hwndLB, INT nItem)
RedrawWindow(hwndParent, &data->last_drag_icon_rect, NULL, RedrawWindow(hwndParent, &data->last_drag_icon_rect, NULL,
RDW_INTERNALPAINT | RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW); RDW_INTERNALPAINT | RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW);
CopyRect(&data->last_drag_icon_rect, &rcDragIcon); data->last_drag_icon_rect = rcDragIcon;
if (nItem >= 0) if (nItem >= 0)
{ {

View file

@ -259,6 +259,9 @@ INT WINAPI DSA_InsertItem (HDSA hdsa, INT nIndex, LPVOID pSrc)
nNewItems = hdsa->nMaxCount + hdsa->nGrow; nNewItems = hdsa->nMaxCount + hdsa->nGrow;
nSize = hdsa->nItemSize * nNewItems; nSize = hdsa->nItemSize * nNewItems;
if (nSize / hdsa->nItemSize != nNewItems)
return -1;
lpTemp = ReAlloc (hdsa->pData, nSize); lpTemp = ReAlloc (hdsa->pData, nSize);
if (!lpTemp) if (!lpTemp)
return -1; return -1;

View file

@ -2254,7 +2254,7 @@ ImageList_Merge (HIMAGELIST himl1, INT i1, HIMAGELIST himl2, INT i2,
/* helper for ImageList_Read, see comments below */ /* 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; BITMAPFILEHEADER bmfh;
int bitsperpixel, palspace; int bitsperpixel, palspace;
@ -2330,7 +2330,7 @@ static void *read_bitmap(LPSTREAM pstm, BITMAPINFO *bmi)
* *
* BYTE maskbits[imagesize]; * BYTE maskbits[imagesize];
*/ */
HIMAGELIST WINAPI ImageList_Read (LPSTREAM pstm) HIMAGELIST WINAPI ImageList_Read(IStream *pstm)
{ {
char image_buf[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256]; char image_buf[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256];
char mask_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 /* helper for ImageList_Write - write bitmap to pstm
* currently everything is written as 24 bit RGB, except masks * currently everything is written as 24 bit RGB, except masks
*/ */
static BOOL static BOOL _write_bitmap(HBITMAP hBitmap, IStream *pstm)
_write_bitmap(HBITMAP hBitmap, LPSTREAM pstm)
{ {
LPBITMAPFILEHEADER bmfh; LPBITMAPFILEHEADER bmfh;
LPBITMAPINFOHEADER bmih; LPBITMAPINFOHEADER bmih;
@ -3151,8 +3150,7 @@ failed:
* probably. * probably.
*/ */
BOOL WINAPI BOOL WINAPI ImageList_Write(HIMAGELIST himl, IStream *pstm)
ImageList_Write (HIMAGELIST himl, LPSTREAM pstm)
{ {
ILHEAD ilHead; ILHEAD ilHead;
int i; int i;
@ -3558,7 +3556,9 @@ static HRESULT WINAPI ImageListImpl_GetImageRect(IImageList2 *iface, int i,
if (!ImageList_GetImageInfo(imgl, i, &info)) if (!ImageList_GetImageInfo(imgl, i, &info))
return E_FAIL; 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, static HRESULT WINAPI ImageListImpl_GetIconSize(IImageList2 *iface, int *cx,

View file

@ -572,23 +572,28 @@ static const char* debugscrollinfo(const SCROLLINFO *pScrollInfo)
if (pScrollInfo == NULL) return "(null)"; if (pScrollInfo == NULL) return "(null)";
len = snprintf(buf, size, "{cbSize=%u, ", pScrollInfo->cbSize); 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) if (pScrollInfo->fMask & SIF_RANGE)
len = snprintf(buf, size, "nMin=%d, nMax=%d, ", pScrollInfo->nMin, pScrollInfo->nMax); len = snprintf(buf, size, "nMin=%d, nMax=%d, ", pScrollInfo->nMin, pScrollInfo->nMax);
else len = 0; 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) if (pScrollInfo->fMask & SIF_PAGE)
len = snprintf(buf, size, "nPage=%u, ", pScrollInfo->nPage); len = snprintf(buf, size, "nPage=%u, ", pScrollInfo->nPage);
else len = 0; 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) if (pScrollInfo->fMask & SIF_POS)
len = snprintf(buf, size, "nPos=%d, ", pScrollInfo->nPos); len = snprintf(buf, size, "nPos=%d, ", pScrollInfo->nPos);
else len = 0; 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) if (pScrollInfo->fMask & SIF_TRACKPOS)
len = snprintf(buf, size, "nTrackPos=%d, ", pScrollInfo->nTrackPos); len = snprintf(buf, size, "nTrackPos=%d, ", pScrollInfo->nTrackPos);
else len = 0; else len = 0;
if (len == -1) goto end; buf += len; if (len == -1) goto end;
buf += len;
goto undo; goto undo;
end: end:
buf = text + strlen(text); buf = text + strlen(text);
@ -613,27 +618,33 @@ static const char* debuglvitem_t(const LVITEMW *lpLVItem, BOOL isW)
if (lpLVItem == NULL) return "(null)"; if (lpLVItem == NULL) return "(null)";
len = snprintf(buf, size, "{iItem=%d, iSubItem=%d, ", lpLVItem->iItem, lpLVItem->iSubItem); 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) if (lpLVItem->mask & LVIF_STATE)
len = snprintf(buf, size, "state=%x, stateMask=%x, ", lpLVItem->state, lpLVItem->stateMask); len = snprintf(buf, size, "state=%x, stateMask=%x, ", lpLVItem->state, lpLVItem->stateMask);
else len = 0; 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) if (lpLVItem->mask & LVIF_TEXT)
len = snprintf(buf, size, "pszText=%s, cchTextMax=%d, ", debugtext_tn(lpLVItem->pszText, isW, 80), lpLVItem->cchTextMax); len = snprintf(buf, size, "pszText=%s, cchTextMax=%d, ", debugtext_tn(lpLVItem->pszText, isW, 80), lpLVItem->cchTextMax);
else len = 0; 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) if (lpLVItem->mask & LVIF_IMAGE)
len = snprintf(buf, size, "iImage=%d, ", lpLVItem->iImage); len = snprintf(buf, size, "iImage=%d, ", lpLVItem->iImage);
else len = 0; 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) if (lpLVItem->mask & LVIF_PARAM)
len = snprintf(buf, size, "lParam=%lx, ", lpLVItem->lParam); len = snprintf(buf, size, "lParam=%lx, ", lpLVItem->lParam);
else len = 0; 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) if (lpLVItem->mask & LVIF_INDENT)
len = snprintf(buf, size, "iIndent=%d, ", lpLVItem->iIndent); len = snprintf(buf, size, "iIndent=%d, ", lpLVItem->iIndent);
else len = 0; else len = 0;
if (len == -1) goto end; buf += len; if (len == -1) goto end;
buf += len;
goto undo; goto undo;
end: end:
buf = text + strlen(text); buf = text + strlen(text);
@ -649,31 +660,38 @@ static const char* debuglvcolumn_t(const LVCOLUMNW *lpColumn, BOOL isW)
if (lpColumn == NULL) return "(null)"; if (lpColumn == NULL) return "(null)";
len = snprintf(buf, size, "{"); 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) if (lpColumn->mask & LVCF_SUBITEM)
len = snprintf(buf, size, "iSubItem=%d, ", lpColumn->iSubItem); len = snprintf(buf, size, "iSubItem=%d, ", lpColumn->iSubItem);
else len = 0; 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) if (lpColumn->mask & LVCF_FMT)
len = snprintf(buf, size, "fmt=%x, ", lpColumn->fmt); len = snprintf(buf, size, "fmt=%x, ", lpColumn->fmt);
else len = 0; 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) if (lpColumn->mask & LVCF_WIDTH)
len = snprintf(buf, size, "cx=%d, ", lpColumn->cx); len = snprintf(buf, size, "cx=%d, ", lpColumn->cx);
else len = 0; 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) if (lpColumn->mask & LVCF_TEXT)
len = snprintf(buf, size, "pszText=%s, cchTextMax=%d, ", debugtext_tn(lpColumn->pszText, isW, 80), lpColumn->cchTextMax); len = snprintf(buf, size, "pszText=%s, cchTextMax=%d, ", debugtext_tn(lpColumn->pszText, isW, 80), lpColumn->cchTextMax);
else len = 0; 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) if (lpColumn->mask & LVCF_IMAGE)
len = snprintf(buf, size, "iImage=%d, ", lpColumn->iImage); len = snprintf(buf, size, "iImage=%d, ", lpColumn->iImage);
else len = 0; 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) if (lpColumn->mask & LVCF_ORDER)
len = snprintf(buf, size, "iOrder=%d, ", lpColumn->iOrder); len = snprintf(buf, size, "iOrder=%d, ", lpColumn->iOrder);
else len = 0; else len = 0;
if (len == -1) goto end; buf += len; if (len == -1) goto end;
buf += len;
goto undo; goto undo;
end: end:
buf = text + strlen(text); 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); iterator_frameditems_absolute(&old_elems, infoPtr, &infoPtr->marqueeRect);
CopyRect(&infoPtr->marqueeRect, &rect); infoPtr->marqueeRect = rect;
infoPtr->marqueeDrawRect = rect;
CopyRect(&infoPtr->marqueeDrawRect, &rect);
OffsetRect(&infoPtr->marqueeDrawRect, offset->x, offset->y); OffsetRect(&infoPtr->marqueeDrawRect, offset->x, offset->y);
iterator_frameditems_absolute(&new_elems, infoPtr, &infoPtr->marqueeRect); 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); TRACE("nColumn=%d\n", nColumn);
if (nColumn < 0 || DPA_GetPtrCount(infoPtr->hdpaColumns) == 0 if (nColumn < 0 || nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns))
|| nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns)) return FALSE; return FALSE;
/* While the MSDN specifically says that column zero should not be deleted, /* 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 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); DWORD len = isW ? GetWindowTextLengthW(infoPtr->hwndEdit) : GetWindowTextLengthA(infoPtr->hwndEdit);
if (len) if (len++)
{ {
if ((pszText = Alloc((len+1) * (isW ? sizeof(WCHAR) : sizeof(CHAR))))) if (!(pszText = Alloc(len * (isW ? sizeof(WCHAR) : sizeof(CHAR)))))
{ return FALSE;
if (isW) GetWindowTextW(infoPtr->hwndEdit, pszText, len+1);
else GetWindowTextA(infoPtr->hwndEdit, (CHAR*)pszText, len+1); 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); TRACE("(nIndex=%d)\n", nIndex);
infoPtr->nSelectionMark = nIndex; if (nIndex >= -1 && nIndex < infoPtr->nItemCount)
infoPtr->nSelectionMark = nIndex;
return nOldIndex; return nOldIndex;
} }

View file

@ -43,6 +43,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(monthcal); WINE_DEFAULT_DEBUG_CHANNEL(monthcal);
/* FIXME: Inspect */
#define MCS_NOSELCHANGEONNAV 0x0100
#define MC_SEL_LBUTUP 1 /* Left button released */ #define MC_SEL_LBUTUP 1 /* Left button released */
#define MC_SEL_LBUTDOWN 2 /* Left button pressed in calendar */ #define MC_SEL_LBUTDOWN 2 /* Left button pressed in calendar */
#define MC_PREVPRESSED 4 /* Prev month button pressed */ #define MC_PREVPRESSED 4 /* Prev month button pressed */
@ -1953,7 +1956,7 @@ static void MONTHCAL_NotifyDayState(MONTHCAL_INFO *infoPtr)
} }
/* no valid range check performed */ /* 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; INT i, selIdx = -1;
@ -1966,8 +1969,11 @@ static void MONTHCAL_Scroll(MONTHCAL_INFO *infoPtr, INT delta)
MONTHCAL_GetMonth(&infoPtr->calendars[i].month, delta); MONTHCAL_GetMonth(&infoPtr->calendars[i].month, delta);
} }
if (keep_selection)
return;
/* selection is always shifted to first calendar */ /* selection is always shifted to first calendar */
if(infoPtr->dwStyle & MCS_MULTISELECT) if (infoPtr->dwStyle & MCS_MULTISELECT)
{ {
SYSTEMTIME range[2]; 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) static void MONTHCAL_GoToMonth(MONTHCAL_INFO *infoPtr, enum nav_direction direction)
{ {
INT delta = infoPtr->delta ? infoPtr->delta : MONTHCAL_GetCalCount(infoPtr); INT delta = infoPtr->delta ? infoPtr->delta : MONTHCAL_GetCalCount(infoPtr);
BOOL keep_selection;
SYSTEMTIME st; SYSTEMTIME st;
TRACE("%s\n", direction == DIRECTION_BACKWARD ? "back" : "fwd"); 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; 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_NotifyDayState(infoPtr);
MONTHCAL_NotifySelectionChange(infoPtr); if (!keep_selection)
MONTHCAL_NotifySelectionChange(infoPtr);
} }
static LRESULT static LRESULT
@ -2196,7 +2205,7 @@ MONTHCAL_LButtonDown(MONTHCAL_INFO *infoPtr, LPARAM lParam)
if (MONTHCAL_IsDateInValidRange(infoPtr, &st, FALSE)) if (MONTHCAL_IsDateInValidRange(infoPtr, &st, FALSE))
{ {
MONTHCAL_Scroll(infoPtr, delta); MONTHCAL_Scroll(infoPtr, delta, FALSE);
MONTHCAL_NotifyDayState(infoPtr); MONTHCAL_NotifyDayState(infoPtr);
MONTHCAL_NotifySelectionChange(infoPtr); MONTHCAL_NotifySelectionChange(infoPtr);
InvalidateRect(infoPtr->hwndSelf, NULL, FALSE); InvalidateRect(infoPtr->hwndSelf, NULL, FALSE);
@ -2835,7 +2844,7 @@ MONTHCAL_Notify(MONTHCAL_INFO *infoPtr, NMHDR *hdr)
if (hdr->hwndFrom == infoPtr->hWndYearUpDown && nmud->iDelta) if (hdr->hwndFrom == infoPtr->hWndYearUpDown && nmud->iDelta)
{ {
/* year value limits are set up explicitly after updown creation */ /* 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_NotifyDayState(infoPtr);
MONTHCAL_NotifySelectionChange(infoPtr); MONTHCAL_NotifySelectionChange(infoPtr);
} }

View file

@ -344,7 +344,7 @@ static LRESULT PROGRESS_Draw (PROGRESS_INFO *infoPtr, HDC hdc)
DrawThemeParentBackground (infoPtr->Self, hdc, NULL); DrawThemeParentBackground (infoPtr->Self, hdc, NULL);
DrawThemeBackground (pdi.theme, hdc, part, 0, &pdi.rect, NULL); DrawThemeBackground (pdi.theme, hdc, part, 0, &pdi.rect, NULL);
SelectClipRgn (hdc, NULL); SelectClipRgn (hdc, NULL);
CopyRect (&pdi.rect, &cntRect); pdi.rect = cntRect;
} }
/* compute some drawing parameters */ /* compute some drawing parameters */

View file

@ -3268,7 +3268,7 @@ static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam)
if (bm.bmWidth < r.right || bm.bmHeight < r.bottom) if (bm.bmWidth < r.right || bm.bmHeight < r.bottom)
{ {
hbr = CreateSolidBrush(GetPixel(hdcSrc, 0, 0)); hbr = CreateSolidBrush(GetPixel(hdcSrc, 0, 0));
CopyRect(&r, &rzone); r = rzone;
if (bm.bmWidth < r.right) if (bm.bmWidth < r.right)
{ {
r.left = bm.bmWidth; r.left = bm.bmWidth;

View file

@ -714,8 +714,7 @@ REBAR_CalcHorzBand (const REBAR_INFO *infoPtr, UINT rstart, UINT rend)
lpBand->fDraw |= DRAW_GRIPPER; lpBand->fDraw |= DRAW_GRIPPER;
lpBand->rcGripper.left += REBAR_PRE_GRIPPER; lpBand->rcGripper.left += REBAR_PRE_GRIPPER;
lpBand->rcGripper.right = lpBand->rcGripper.left + GRIPPER_WIDTH; lpBand->rcGripper.right = lpBand->rcGripper.left + GRIPPER_WIDTH;
lpBand->rcGripper.top += 2; InflateRect(&lpBand->rcGripper, 0, -2);
lpBand->rcGripper.bottom -= 2;
SetRect (&lpBand->rcCapImage, SetRect (&lpBand->rcCapImage,
lpBand->rcGripper.right+REBAR_ALWAYS_SPACE, lpBand->rcBand.top, lpBand->rcGripper.right+REBAR_ALWAYS_SPACE, lpBand->rcBand.top,
@ -843,8 +842,7 @@ REBAR_CalcVertBand (const REBAR_INFO *infoPtr, UINT rstart, UINT rend)
} }
else { else {
/* horizontal gripper */ /* horizontal gripper */
lpBand->rcGripper.left += 2; InflateRect(&lpBand->rcGripper, -2, 0);
lpBand->rcGripper.right -= 2;
lpBand->rcGripper.top += REBAR_PRE_GRIPPER; lpBand->rcGripper.top += REBAR_PRE_GRIPPER;
lpBand->rcGripper.bottom = lpBand->rcGripper.top + GRIPPER_WIDTH; 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, &rcNew);
GetClientRect(infoPtr->hwndSelf, &autosize.rcTarget); GetClientRect(infoPtr->hwndSelf, &autosize.rcTarget);
autosize.fChanged = (memcmp(&rc, &rcNew, sizeof(RECT)) == 0); autosize.fChanged = EqualRect(&rc, &rcNew);
autosize.rcTarget = rc; autosize.rcTarget = rc;
autosize.rcActual = rcNew; autosize.rcActual = rcNew;
REBAR_Notify((NMHDR *)&autosize, infoPtr, RBN_AUTOSIZE); 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); lpBand = REBAR_GetBand(infoPtr, iBand);
/* For CCS_VERT the coordinates will be swapped - like on Windows */ /* 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)); TRACE("band %d, (%s)\n", iBand, wine_dbgstr_rect(lprc));

View file

@ -114,8 +114,8 @@ STATUSBAR_ComputeHeight(STATUS_INFO *infoPtr)
* textHeight pixels large */ * textHeight pixels large */
HDC hdc = GetDC(infoPtr->Self); HDC hdc = GetDC(infoPtr->Self);
RECT r; 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))) if (SUCCEEDED(GetThemeBackgroundExtent(theme, hdc, SP_PANE, 0, &r, &r)))
{ {
height = r.bottom - r.top; height = r.bottom - r.top;

View file

@ -357,14 +357,8 @@ static BOOL TAB_InternalGetItemRect(
(itemIndex < infoPtr->leftmostVisible))) (itemIndex < infoPtr->leftmostVisible)))
{ {
TRACE("Not Visible\n"); TRACE("Not Visible\n");
/* need to initialize these to empty rects */ SetRect(itemRect, 0, 0, 0, infoPtr->tabHeight);
if (itemRect) SetRectEmpty(selectedRect);
{
memset(itemRect,0,sizeof(RECT));
itemRect->bottom = infoPtr->tabHeight;
}
if (selectedRect)
memset(selectedRect,0,sizeof(RECT));
return FALSE; return FALSE;
} }
@ -444,7 +438,7 @@ static BOOL TAB_InternalGetItemRect(
/* Now, calculate the position of the item as if it were selected. */ /* Now, calculate the position of the item as if it were selected. */
if (selectedRect!=NULL) if (selectedRect!=NULL)
{ {
CopyRect(selectedRect, itemRect); *selectedRect = *itemRect;
/* The rectangle of a selected item is a bit wider. */ /* The rectangle of a selected item is a bit wider. */
if(infoPtr->dwStyle & TCS_VERTICAL) if(infoPtr->dwStyle & TCS_VERTICAL)
@ -1595,12 +1589,7 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect
} }
} }
else else
{ InflateRect(drawRect, -2, -2);
drawRect->left += 2;
drawRect->top += 2;
drawRect->right -= 2;
drawRect->bottom -= 2;
}
} }
else else
{ {
@ -1609,8 +1598,7 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect
if (iItem != infoPtr->iSelected) if (iItem != infoPtr->iSelected)
{ {
drawRect->left += 2; drawRect->left += 2;
drawRect->top += 2; InflateRect(drawRect, 0, -2);
drawRect->bottom -= 2;
} }
} }
else if (infoPtr->dwStyle & TCS_VERTICAL) else if (infoPtr->dwStyle & TCS_VERTICAL)
@ -1621,9 +1609,8 @@ TAB_DrawItemInterior(const TAB_INFO *infoPtr, HDC hdc, INT iItem, RECT *drawRect
} }
else else
{ {
drawRect->top += 2;
drawRect->right -= 2; drawRect->right -= 2;
drawRect->bottom -= 2; InflateRect(drawRect, 0, -2);
} }
} }
else if (infoPtr->dwStyle & TCS_BOTTOM) 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->top += 2;
drawRect->right -= 1; drawRect->right -= 1;
if ( iItem == infoPtr->iSelected ) if ( iItem == infoPtr->iSelected )
{ InflateRect(drawRect, -1, 0);
drawRect->right -= 1;
drawRect->left += 1;
}
id = (UINT)GetWindowLongPtrW( infoPtr->hwnd, GWLP_ID ); 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.itemState |= ODS_FOCUS;
dis.hwndItem = infoPtr->hwnd; dis.hwndItem = infoPtr->hwnd;
dis.hDC = hdc; dis.hDC = hdc;
CopyRect(&dis.rcItem,drawRect); dis.rcItem = *drawRect;
/* when extra data fits ULONG_PTR, store it directly */ /* when extra data fits ULONG_PTR, store it directly */
if (infoPtr->cbInfo > sizeof(LPARAM)) if (infoPtr->cbInfo > sizeof(LPARAM))

View file

@ -265,8 +265,7 @@ static void GB_draw(HTHEME theme, HWND hwnd, HDC hDC, ButtonState drawState, UIN
if (text) if (text)
{ {
textRect.left += 2; InflateRect(&textRect, -2, 0);
textRect.right -= 2;
DrawThemeText(theme, hDC, BP_GROUPBOX, state, text, lstrlenW(text), 0, 0, &textRect); DrawThemeText(theme, hDC, BP_GROUPBOX, state, text, lstrlenW(text), 0, 0, &textRect);
HeapFree(GetProcessHeap(), 0, text); HeapFree(GetProcessHeap(), 0, text);
} }

View file

@ -69,7 +69,7 @@ static void paint_text (HWND hwnd, HDC hdc, DWORD dwStyle, const COMBOBOXINFO *c
/* /*
* Give ourselves some space. * Give ourselves some space.
*/ */
CopyRect (&rectEdit, &cbi->rcItem); rectEdit = cbi->rcItem;
InflateRect( &rectEdit, -1, -1 ); InflateRect( &rectEdit, -1, -1 );
if(dwStyle & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) if(dwStyle & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE))
@ -176,8 +176,7 @@ static LRESULT paint (HTHEME theme, HWND hwnd, HDC hParamDC, ULONG state)
GetClientRect (hwnd, &frameRect); GetClientRect (hwnd, &frameRect);
else else
{ {
CopyRect (&frameRect, &cbi.rcItem); frameRect = cbi.rcItem;
InflateRect(&frameRect, InflateRect(&frameRect,
EDIT_CONTROL_PADDING + COMBO_XBORDERSIZE, EDIT_CONTROL_PADDING + COMBO_XBORDERSIZE,
EDIT_CONTROL_PADDING + COMBO_YBORDERSIZE); EDIT_CONTROL_PADDING + COMBO_YBORDERSIZE);

View file

@ -925,7 +925,7 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc,
HTHEME theme = GetWindowTheme (infoPtr->hwndSelf); HTHEME theme = GetWindowTheme (infoPtr->hwndSelf);
rc = btnPtr->rect; rc = btnPtr->rect;
CopyRect (&rcArrow, &rc); rcArrow = rc;
/* separator - doesn't send NM_CUSTOMDRAW */ /* separator - doesn't send NM_CUSTOMDRAW */
if (btnPtr->fsStyle & BTNS_SEP) { 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 /* copy text & bitmap rects after adjusting for drop-down arrow
* so that text & bitmap is centered in the rectangle not containing * so that text & bitmap is centered in the rectangle not containing
* the arrow */ * the arrow */
CopyRect(&rcText, &rc); rcText = rc;
CopyRect(&rcBitmap, &rc); rcBitmap = rc;
/* Center the bitmap horizontally and vertically */ /* Center the bitmap horizontally and vertically */
if (dwStyle & TBSTYLE_LIST) if (dwStyle & TBSTYLE_LIST)
@ -1007,8 +1007,7 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *infoPtr, TBUTTON_INFO *btnPtr, HDC hdc,
/* calculate text position */ /* calculate text position */
if (lpText) if (lpText)
{ {
rcText.left += GetSystemMetrics(SM_CXEDGE); InflateRect(&rcText, -GetSystemMetrics(SM_CXEDGE), 0);
rcText.right -= GetSystemMetrics(SM_CXEDGE);
if (dwStyle & TBSTYLE_LIST) if (dwStyle & TBSTYLE_LIST)
{ {
rcText.left += infoPtr->nBitmapWidth + infoPtr->iListGap + 2; 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); lpdis->rcItem.right, lpdis->rcItem.bottom);
/* calculate button and text rectangles */ /* calculate button and text rectangles */
CopyRect (&rcButton, &lpdis->rcItem); rcButton = lpdis->rcItem;
InflateRect (&rcButton, -1, -1); InflateRect (&rcButton, -1, -1);
CopyRect (&rcText, &rcButton); rcText = rcButton;
rcButton.right = rcButton.left + custInfo->tbInfo->nBitmapWidth + 6; rcButton.right = rcButton.left + custInfo->tbInfo->nBitmapWidth + 6;
rcText.left = rcButton.right + 2; rcText.left = rcButton.right + 2;
@ -5704,7 +5703,7 @@ TOOLBAR_LButtonDown (TOOLBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
RECT arrowRect; RECT arrowRect;
infoPtr->nOldHit = nHit; infoPtr->nOldHit = nHit;
CopyRect(&arrowRect, &btnPtr->rect); arrowRect = btnPtr->rect;
arrowRect.left = max(btnPtr->rect.left, btnPtr->rect.right - DDARROW_WIDTH); arrowRect.left = max(btnPtr->rect.left, btnPtr->rect.right - DDARROW_WIDTH);
/* for EX_DRAWDDARROWS style, click must be in the drop-down arrow rect */ /* for EX_DRAWDDARROWS style, click must be in the drop-down arrow rect */

View file

@ -1321,12 +1321,10 @@ TOOLTIPS_GetDelayTime (const TOOLTIPS_INFO *infoPtr, DWORD duration)
static LRESULT static LRESULT
TOOLTIPS_GetMargin (const TOOLTIPS_INFO *infoPtr, LPRECT lpRect) TOOLTIPS_GetMargin (const TOOLTIPS_INFO *infoPtr, RECT *rect)
{ {
lpRect->left = infoPtr->rcMargin.left; if (rect)
lpRect->right = infoPtr->rcMargin.right; *rect = infoPtr->rcMargin;
lpRect->bottom = infoPtr->rcMargin.bottom;
lpRect->top = infoPtr->rcMargin.top;
return 0; return 0;
} }
@ -1598,12 +1596,10 @@ TOOLTIPS_SetDelayTime (TOOLTIPS_INFO *infoPtr, DWORD duration, INT nTime)
static LRESULT static LRESULT
TOOLTIPS_SetMargin (TOOLTIPS_INFO *infoPtr, const RECT *lpRect) TOOLTIPS_SetMargin (TOOLTIPS_INFO *infoPtr, const RECT *rect)
{ {
infoPtr->rcMargin.left = lpRect->left; if (rect)
infoPtr->rcMargin.right = lpRect->right; infoPtr->rcMargin = *rect;
infoPtr->rcMargin.bottom = lpRect->bottom;
infoPtr->rcMargin.top = lpRect->top;
return 0; return 0;
} }

View file

@ -32,6 +32,8 @@
#include "comctl32.h" #include "comctl32.h"
#include <math.h>
WINE_DEFAULT_DEBUG_CHANNEL(trackbar); WINE_DEFAULT_DEBUG_CHANNEL(trackbar);
typedef struct typedef struct
@ -188,7 +190,7 @@ TRACKBAR_ConvertPlaceToPosition (const TRACKBAR_INFO *infoPtr, int place)
pos = infoPtr->lRangeMin; pos = infoPtr->lRangeMin;
TRACE("%.2f\n", pos); 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)) { if (GetWindowTheme (infoPtr->hwndSelf)) {
DrawThemeParentBackground (infoPtr->hwndSelf, hdc, 0); DrawThemeParentBackground (infoPtr->hwndSelf, hdc, 0);
} }
else else {
FillRect (hdc, &rcClient, GetSysColorBrush(COLOR_BTNFACE)); 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) if (gcdrf != CDRF_DODEFAULT)
notify_customdraw(infoPtr, &nmcd, CDDS_POSTERASE); 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->lRangeMin = (SHORT)LOWORD(range);
infoPtr->lRangeMax = (SHORT)HIWORD(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->lPos = infoPtr->lRangeMin;
infoPtr->flags |= TB_THUMBPOSCHANGED;
}
if (infoPtr->lPos > infoPtr->lRangeMax) { if (infoPtr->lPos > infoPtr->lRangeMax)
infoPtr->lPos = infoPtr->lRangeMax; infoPtr->lPos = infoPtr->lRangeMax;
infoPtr->flags |= TB_THUMBPOSCHANGED;
}
infoPtr->lPageSize = (infoPtr->lRangeMax - infoPtr->lRangeMin) / 5; infoPtr->lPageSize = (infoPtr->lRangeMax - infoPtr->lRangeMin) / 5;
if (infoPtr->lPageSize == 0) infoPtr->lPageSize = 1; if (infoPtr->lPageSize == 0) infoPtr->lPageSize = 1;
if (changed && (infoPtr->dwStyle & TBS_AUTOTICKS)) if (changed) {
TRACKBAR_RecalculateTics (infoPtr); if (infoPtr->dwStyle & TBS_AUTOTICKS)
TRACKBAR_RecalculateTics (infoPtr);
infoPtr->flags |= TB_THUMBPOSCHANGED;
}
if (redraw) TRACKBAR_InvalidateAll(infoPtr); if (redraw) TRACKBAR_InvalidateAll(infoPtr);

View file

@ -3621,7 +3621,7 @@ TREEVIEW_HitTestPoint(const TREEVIEW_INFO *infoPtr, POINT pt)
return item; return item;
} }
static LRESULT static TREEVIEW_ITEM *
TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht) TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht)
{ {
TREEVIEW_ITEM *item; TREEVIEW_ITEM *item;
@ -3656,14 +3656,14 @@ TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht)
if (status) if (status)
{ {
lpht->flags = status; lpht->flags = status;
return 0; return NULL;
} }
item = TREEVIEW_HitTestPoint(infoPtr, lpht->pt); item = TREEVIEW_HitTestPoint(infoPtr, lpht->pt);
if (!item) if (!item)
{ {
lpht->flags = TVHT_NOWHERE; lpht->flags = TVHT_NOWHERE;
return 0; return NULL;
} }
if (x >= item->textOffset + item->textWidth) if (x >= item->textOffset + item->textWidth)
@ -3694,7 +3694,7 @@ TREEVIEW_HitTest(const TREEVIEW_INFO *infoPtr, LPTVHITTESTINFO lpht)
lpht->hItem = item; lpht->hItem = item;
TRACE("(%d,%d):result 0x%x\n", lpht->pt.x, lpht->pt.y, lpht->flags); TRACE("(%d,%d):result 0x%x\n", lpht->pt.x, lpht->pt.y, lpht->flags);
return (LRESULT)item; return item;
} }
/* Item Label Editing ***************************************************/ /* Item Label Editing ***************************************************/
@ -4117,7 +4117,7 @@ TREEVIEW_LButtonDoubleClick(TREEVIEW_INFO *infoPtr, LPARAM lParam)
hit.pt.x = (short)LOWORD(lParam); hit.pt.x = (short)LOWORD(lParam);
hit.pt.y = (short)HIWORD(lParam); hit.pt.y = (short)HIWORD(lParam);
item = (TREEVIEW_ITEM *)TREEVIEW_HitTest(infoPtr, &hit); item = TREEVIEW_HitTest(infoPtr, &hit);
if (!item) if (!item)
return 0; return 0;
TRACE("item %d\n", TREEVIEW_GetItemIndex(infoPtr, item)); TRACE("item %d\n", TREEVIEW_GetItemIndex(infoPtr, item));
@ -5317,9 +5317,9 @@ TREEVIEW_MouseLeave (TREEVIEW_INFO * infoPtr)
static LRESULT static LRESULT
TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam) TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam)
{ {
POINT pt;
TRACKMOUSEEVENT trackinfo; TRACKMOUSEEVENT trackinfo;
TREEVIEW_ITEM * item; TREEVIEW_ITEM * item;
TVHITTESTINFO ht;
if (!(infoPtr->dwStyle & TVS_TRACKSELECT)) return 0; if (!(infoPtr->dwStyle & TVS_TRACKSELECT)) return 0;
@ -5344,18 +5344,21 @@ TREEVIEW_MouseMove (TREEVIEW_INFO * infoPtr, LPARAM lParam)
_TrackMouseEvent(&trackinfo); _TrackMouseEvent(&trackinfo);
} }
pt.x = (short)LOWORD(lParam); ht.pt.x = (short)LOWORD(lParam);
pt.y = (short)HIWORD(lParam); ht.pt.y = (short)HIWORD(lParam);
item = TREEVIEW_HitTestPoint(infoPtr, pt); item = TREEVIEW_HitTest(infoPtr, &ht);
if ((item != infoPtr->hotItem) || !(ht.flags & TVHT_ONITEM))
if (item != infoPtr->hotItem)
{ {
/* redraw old hot item */ /* redraw old hot item */
TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem); TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem);
infoPtr->hotItem = item; infoPtr->hotItem = NULL;
/* redraw new hot item */ if (item && (ht.flags & TVHT_ONITEM))
TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem); {
infoPtr->hotItem = item;
/* redraw new hot item */
TREEVIEW_InvalidateItem(infoPtr, infoPtr->hotItem);
}
} }
return 0; return 0;
@ -5494,14 +5497,14 @@ TREEVIEW_StyleChanged(TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
static LRESULT static LRESULT
TREEVIEW_SetCursor(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) TREEVIEW_SetCursor(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{ {
POINT pt;
TREEVIEW_ITEM * item; TREEVIEW_ITEM * item;
TVHITTESTINFO ht;
NMMOUSE nmmouse; NMMOUSE nmmouse;
GetCursorPos(&pt); GetCursorPos(&ht.pt);
ScreenToClient(infoPtr->hwnd, &pt); ScreenToClient(infoPtr->hwnd, &ht.pt);
item = TREEVIEW_HitTestPoint(infoPtr, pt); item = TREEVIEW_HitTest(infoPtr, &ht);
memset(&nmmouse, 0, sizeof(nmmouse)); memset(&nmmouse, 0, sizeof(nmmouse));
if (item) if (item)
@ -5515,7 +5518,7 @@ TREEVIEW_SetCursor(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
if (TREEVIEW_SendRealNotify(infoPtr, NM_SETCURSOR, &nmmouse.hdr)) if (TREEVIEW_SendRealNotify(infoPtr, NM_SETCURSOR, &nmmouse.hdr))
return 0; return 0;
if (item && (infoPtr->dwStyle & TVS_TRACKSELECT)) if (item && (infoPtr->dwStyle & TVS_TRACKSELECT) && (ht.flags & TVHT_ONITEM))
{ {
SetCursor(infoPtr->hcurHand); SetCursor(infoPtr->hcurHand);
return 0; return 0;
@ -5659,7 +5662,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return TREEVIEW_GetVisibleCount(infoPtr); return TREEVIEW_GetVisibleCount(infoPtr);
case TVM_HITTEST: case TVM_HITTEST:
return TREEVIEW_HitTest(infoPtr, (LPTVHITTESTINFO)lParam); return (LRESULT)TREEVIEW_HitTest(infoPtr, (TVHITTESTINFO*)lParam);
case TVM_INSERTITEMA: case TVM_INSERTITEMA:
case TVM_INSERTITEMW: case TVM_INSERTITEMW:
@ -5735,6 +5738,7 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return TREEVIEW_HScroll(infoPtr, wParam); return TREEVIEW_HScroll(infoPtr, wParam);
case WM_KEYDOWN: case WM_KEYDOWN:
case WM_SYSKEYDOWN:
return TREEVIEW_KeyDown(infoPtr, wParam); return TREEVIEW_KeyDown(infoPtr, wParam);
case WM_KILLFOCUS: case WM_KILLFOCUS:
@ -5799,8 +5803,6 @@ TREEVIEW_WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
COMCTL32_RefreshSysColors(); COMCTL32_RefreshSysColors();
return 0; return 0;
/* WM_SYSKEYDOWN */
case WM_TIMER: case WM_TIMER:
return TREEVIEW_HandleTimer(infoPtr, wParam); return TREEVIEW_HandleTimer(infoPtr, wParam);

View file

@ -54,7 +54,7 @@ reactos/dll/win32/browseui # Out of sync
reactos/dll/win32/cabinet # Synced to WineStaging-1.9.16 reactos/dll/win32/cabinet # Synced to WineStaging-1.9.16
reactos/dll/win32/clusapi # Synced to WineStaging-1.9.11 reactos/dll/win32/clusapi # Synced to WineStaging-1.9.11
reactos/dll/win32/comcat # 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/comdlg32 # Synced to WineStaging-1.9.11
reactos/dll/win32/compstui # 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 reactos/dll/win32/credui # Synced to WineStaging-1.9.16