-diff -pudN e:\wine\dlls\comctl32/commctrl.c e:\reactos\dll\win32\comctl32/commctrl.c
---- e:\wine\dlls\comctl32/commctrl.c 2015-02-21 17:13:09 +0100
-+++ e:\reactos\dll\win32\comctl32/commctrl.c 2015-08-27 22:05:04 +0100
-@@ -52,25 +52,26 @@
- * -- ICC_WIN95_CLASSES
- */
+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:\reactos\dll\win32\comctl32/comctl32.h 2014-03-05 11:47:40 +0100
+@@ -53,67 +53,6 @@
+ extern HMODULE COMCTL32_hModule DECLSPEC_HIDDEN;
+ extern HBRUSH COMCTL32_hPattern55AABrush DECLSPEC_HIDDEN;
+
+-/* Property sheet / Wizard */
+-#define IDD_PROPSHEET 1006
+-#define IDD_WIZARD 1020
+-
+-#define IDC_TABCONTROL 12320
+-#define IDC_APPLY_BUTTON 12321
+-#define IDC_BACK_BUTTON 12323
+-#define IDC_NEXT_BUTTON 12324
+-#define IDC_FINISH_BUTTON 12325
+-#define IDC_SUNKEN_LINE 12326
+-#define IDC_SUNKEN_LINEHEADER 12327
+-
+-#define IDS_CLOSE 4160
+-
+-/* Toolbar customization dialog */
+-#define IDD_TBCUSTOMIZE 200
+-
+-#define IDC_AVAILBTN_LBOX 201
+-#define IDC_RESET_BTN 202
+-#define IDC_TOOLBARBTN_LBOX 203
+-#define IDC_REMOVE_BTN 204
+-#define IDC_HELP_BTN 205
+-#define IDC_MOVEUP_BTN 206
+-#define IDC_MOVEDN_BTN 207
+-
+-#define IDS_SEPARATOR 1024
+-
+-/* Toolbar imagelist bitmaps */
+-#define IDB_STD_SMALL 120
+-#define IDB_STD_LARGE 121
+-#define IDB_VIEW_SMALL 124
+-#define IDB_VIEW_LARGE 125
+-#define IDB_HIST_SMALL 130
+-#define IDB_HIST_LARGE 131
+-
+-#define IDM_TODAY 4163
+-#define IDM_GOTODAY 4164
+-
+-/* Treeview Checkboxes */
+-
+-#define IDT_CHECK 401
+-
+-
+-/* Cursors */
+-#define IDC_MOVEBUTTON 102
+-#define IDC_COPY 104
+-#define IDC_DIVIDER 106
+-#define IDC_DIVIDEROPEN 107
+-
+-
+-/* DragList resources */
+-#define IDI_DRAGARROW 501
+-
+-/* HOTKEY internal strings */
+-#define HKY_NONE 2048
+-
+-/* Tooltip icons */
+-#define IDI_TT_INFO_SM 22
+-#define IDI_TT_WARN_SM 25
+-#define IDI_TT_ERROR_SM 28
+-
+ typedef struct
+ {
+ COLORREF clrBtnHighlight; /* COLOR_BTNHIGHLIGHT */
+@@ -149,8 +88,6 @@ INT Str_GetPtrAtoW (LPCSTR lpSrc, LPWST
+ BOOL Str_SetPtrAtoW (LPWSTR *lppDest, LPCSTR lpSrc) DECLSPEC_HIDDEN;
+ BOOL Str_SetPtrWtoA (LPSTR *lppDest, LPCWSTR lpSrc) DECLSPEC_HIDDEN;
--#include <stdarg.h>
--#include <string.h>
--#include <stdlib.h>
-+#include "comctl32.h"
-
--#include "windef.h"
--#include "winbase.h"
--#include "wingdi.h"
--#include "winuser.h"
--#include "winnls.h"
--#include "commctrl.h"
--#include "winerror.h"
--#include "winreg.h"
- #define NO_SHLWAPI_STREAM
--#include "shlwapi.h"
--#include "comctl32.h"
--#include "wine/debug.h"
-+#include <shlwapi.h>
+-#define COMCTL32_VERSION_MINOR 81
+-
+ /* Our internal stack structure of the window procedures to subclass */
+ 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:\reactos\dll\win32\comctl32/commctrl.c 2016-03-01 20:00:53 +0100
+@@ -60,6 +60,19 @@
WINE_DEFAULT_DEBUG_CHANNEL(commctrl);
static LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-@@ -92,6 +93,67 @@ static const WCHAR strCC32SubclassInfo[]
+@@ -81,6 +94,67 @@ static const WCHAR strCC32SubclassInfo[]
'C','C','3','2','S','u','b','c','l','a','s','s','I','n','f','o',0
};
/***********************************************************************
* DllMain [Internal]
-@@ -928,6 +990,12 @@ HRESULT WINAPI DllGetVersion (DLLVERSION
+@@ -917,6 +991,12 @@ HRESULT WINAPI DllGetVersion (DLLVERSION
HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline)
{
TRACE("(%u, %s): stub\n", bInstall, debugstr_w(cmdline));
return S_OK;
}
-@@ -1591,12 +1659,114 @@ LRESULT WINAPI SetPathWordBreakProc(HWND
+@@ -1580,33 +1660,114 @@ LRESULT WINAPI SetPathWordBreakProc(HWND
*
* Draw text with shadow.
*/
--int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT *rect, DWORD dwFlags,
+-int WINAPI DrawShadowText(HDC hdc, LPCWSTR text, UINT length, RECT *rect, DWORD flags,
+- COLORREF crText, COLORREF crShadow, int offset_x, int offset_y)
+int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT *prc, DWORD dwFlags,
- COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset)
++ COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset)
{
-- FIXME("(%p, %s, %d, %p, %d, 0x%08x, 0x%08x, %d, %d): stub\n", hdc, debugstr_w(pszText), cch, rect, dwFlags,
-- crText, crShadow, ixOffset, iyOffset);
-- return DrawTextW(hdc, pszText, cch, rect, DT_LEFT);
+- int bkmode, ret;
+- COLORREF clr;
+- RECT r;
+ COLORREF crOldText;
+ RECT rcText;
+ INT iRet, x, y, x2, y2;
+ HDC hdcMem;
+ HFONT hOldFont;
+ BLENDFUNCTION bf;
-+
+
+- FIXME("(%p, %s, %d, %p, 0x%08x, 0x%08x, 0x%08x, %d, %d): semi-stub\n", hdc, debugstr_w(text),
+- length, rect, flags, crText, crShadow, offset_x, offset_y);
+ /* Create 32 bit DIB section for the shadow */
+ ZeroMemory(&bi, sizeof(bi));
+ bi.bmiHeader.biSize = sizeof(bi.bmiHeader);
+ ERR("CreateDIBSection failed\n");
+ return 0;
+ }
-+
+
+- bkmode = SetBkMode(hdc, TRANSPARENT);
+- clr = SetTextColor(hdc, crShadow);
+ /* Create memory device context for new DIB section and select it */
+ hdcMem = CreateCompatibleDC(hdc);
+ if(!hdcMem)
+ DeleteObject(hbm);
+ return 0;
+ }
-+
+
+- /* FIXME: for shadow we need to render normally, blur it, and blend with current background. */
+- r = *rect;
+- OffsetRect(&r, 1, 1);
+- DrawTextW(hdc, text, length, &r, flags);
+ hbmOld = (HBITMAP)SelectObject(hdcMem, hbm);
-+
+
+- SetTextColor(hdc, crText);
+ /* Draw text on our helper bitmap */
+ hOldFont = (HFONT)SelectObject(hdcMem, GetCurrentObject(hdc, OBJ_FONT));
+ SetTextColor(hdcMem, RGB(16, 16, 16));
+ SetRect(&rcText, 0, 0, prc->right - prc->left, prc->bottom - prc->top);
+ DrawTextW(hdcMem, pszText, cch, &rcText, dwFlags);
+ SelectObject(hdcMem, hOldFont);
-+
+
+- /* with text color on top of a shadow */
+- ret = DrawTextW(hdc, text, length, rect, flags);
+ /* Flush GDI so data pointed by pBits is valid */
+ GdiFlush();
-+
+
+- SetTextColor(hdc, clr);
+- SetBkMode(hdc, bkmode);
+ /* Set alpha of pixels (forget about colors for now. They will be changed in next loop).
+ We copy text image 4*5 times and each time alpha is added */
+ for (x = 0; x < bi.bmiHeader.biWidth; ++x)
+ {
+ BYTE *pDest = &pBits[(y * bi.bmiHeader.biWidth + x) * 4];
+ UINT Alpha = 0;
-+
+
+- return ret;
+ for (x2 = x - 4 + 1; x2 <= x; ++x2)
+ for (y2 = y; y2 < y + 5; ++y2)
+ {
}
/***********************************************************************
-@@ -1646,3 +1816,15 @@ HRESULT WINAPI LoadIconWithScaleDown(HIN
- FIXME("stub: %p %s %d %d %p\n", hinst, wine_dbgstr_w(name), cx, cy, icon);
- return E_NOTIMPL;
+@@ -1695,3 +1856,15 @@ HRESULT WINAPI LoadIconMetric(HINSTANCE
+
+ return LoadIconWithScaleDown(hinst, name, cx, cy, icon);
}
+
+/***********************************************************************
+ return TRUE;
+}
diff -pudN e:\wine\dlls\comctl32/imagelist.c e:\reactos\dll\win32\comctl32/imagelist.c
---- e:\wine\dlls\comctl32/imagelist.c 2015-02-21 17:13:09 +0100
-+++ e:\reactos\dll\win32\comctl32/imagelist.c 2015-08-27 22:05:04 +0100
-@@ -33,27 +33,14 @@
+--- 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
+@@ -33,7 +33,7 @@
*
* TODO:
* - Add support for ILD_PRESERVEALPHA, ILD_SCALE, ILD_DPISCALE
* - Thread-safe locking
*/
--#include <stdarg.h>
--#include <stdlib.h>
--#include <string.h>
--
--#define COBJMACROS
--
--#include "winerror.h"
--#include "windef.h"
--#include "winbase.h"
--#include "objbase.h"
--#include "wingdi.h"
--#include "winuser.h"
--#include "commctrl.h"
- #include "comctl32.h"
--#include "commoncontrols.h"
--#include "wine/debug.h"
--#include "wine/exception.h"
-+
-+#include <commoncontrols.h>
-+#include <wine/exception.h>
-
- WINE_DEFAULT_DEBUG_CHANNEL(imagelist);
-
-@@ -1246,7 +1233,7 @@ ImageList_DrawEx (HIMAGELIST himl, INT i
+@@ -1229,8 +1229,11 @@ ImageList_DrawEx (HIMAGELIST himl, INT i
+ return ImageList_DrawIndirect (&imldp);
}
-
--static BOOL alpha_blend_image( HIMAGELIST himl, HDC dest_dc, int dest_x, int dest_y,
+-
++#ifdef __REACTOS__
+static BOOL alpha_blend_image( HIMAGELIST himl, HDC srce_dc, HDC dest_dc, int dest_x, int dest_y,
++#else
+ static BOOL alpha_blend_image( HIMAGELIST himl, HDC dest_dc, int dest_x, int dest_y,
++#endif
int src_x, int src_y, int cx, int cy, BLENDFUNCTION func,
UINT style, COLORREF blend_col )
{
-@@ -1271,9 +1258,9 @@ static BOOL alpha_blend_image( HIMAGELIS
+@@ -1255,9 +1258,17 @@ static BOOL alpha_blend_image( HIMAGELIS
info->bmiHeader.biYPelsPerMeter = 0;
info->bmiHeader.biClrUsed = 0;
info->bmiHeader.biClrImportant = 0;
-- if (!(bmp = CreateDIBSection( himl->hdcImage, info, DIB_RGB_COLORS, &bits, 0, 0 ))) goto done;
++#ifdef __REACTOS__
+ if (!(bmp = CreateDIBSection( srce_dc, info, DIB_RGB_COLORS, &bits, 0, 0 ))) goto done;
++#else
+ if (!(bmp = CreateDIBSection( himl->hdcImage, info, DIB_RGB_COLORS, &bits, 0, 0 ))) goto done;
++#endif
SelectObject( hdc, bmp );
-- BitBlt( hdc, 0, 0, cx, cy, himl->hdcImage, src_x, src_y, SRCCOPY );
++#ifdef __REACTOS__
+ BitBlt( hdc, 0, 0, cx, cy, srce_dc, src_x, src_y, SRCCOPY );
++#else
+ BitBlt( hdc, 0, 0, cx, cy, himl->hdcImage, src_x, src_y, SRCCOPY );
++#endif
if (blend_col != CLR_NONE)
{
-@@ -1346,6 +1333,66 @@ done:
+@@ -1330,6 +1341,68 @@ done:
return ret;
}
++#ifdef __REACTOS__
+HDC saturate_image( HIMAGELIST himl, HDC dest_dc, int dest_x, int dest_y,
+ int src_x, int src_y, int cx, int cy, COLORREF rgbFg)
+{
+ /* return the handle to our desaturated dc, that will substitute its original counterpart in the next calls */
+ return hdc;
+}
++#endif /* __REACTOS__ */
+
/*************************************************************************
* ImageList_DrawIndirect [COMCTL32.@]
*
-@@ -1422,6 +1469,21 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
+@@ -1406,6 +1479,23 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
oldImageFg = SetTextColor( hImageDC, RGB( 0, 0, 0 ) );
oldImageBk = SetBkColor( hImageDC, RGB( 0xff, 0xff, 0xff ) );
++#ifdef __REACTOS__
+ /*
+ * If the ILS_SATURATE bit is enabled we should multiply the
+ * RGB colors of the original image by the contents of rgbFg.
+ pt.x = 0;
+ pt.y = 0;
+ }
++#endif
+
has_alpha = (himl->has_alpha && himl->has_alpha[pimldp->i]);
if (!bMask && (has_alpha || (fState & ILS_ALPHA)))
{
-@@ -1442,7 +1504,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
+@@ -1426,7 +1516,11 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
if (bIsTransparent)
{
-- bResult = alpha_blend_image( himl, pimldp->hdcDst, pimldp->x, pimldp->y,
++#ifdef __REACTOS__
+ bResult = alpha_blend_image( himl, hImageListDC, pimldp->hdcDst, pimldp->x, pimldp->y,
++#else
+ bResult = alpha_blend_image( himl, pimldp->hdcDst, pimldp->x, pimldp->y,
++#endif
pt.x, pt.y, cx, cy, func, fStyle, blend_col );
goto end;
}
-@@ -1452,7 +1514,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
+@@ -1436,7 +1530,11 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
hOldBrush = SelectObject (hImageDC, CreateSolidBrush (colour));
PatBlt( hImageDC, 0, 0, cx, cy, PATCOPY );
-- alpha_blend_image( himl, hImageDC, 0, 0, pt.x, pt.y, cx, cy, func, fStyle, blend_col );
++#ifdef __REACTOS__
+ alpha_blend_image( himl, hImageListDC, hImageDC, 0, 0, pt.x, pt.y, cx, cy, func, fStyle, blend_col );
++#else
+ alpha_blend_image( himl, hImageDC, 0, 0, pt.x, pt.y, cx, cy, func, fStyle, blend_col );
++#endif
DeleteObject (SelectObject (hImageDC, hOldBrush));
bResult = BitBlt( pimldp->hdcDst, pimldp->x, pimldp->y, cx, cy, hImageDC, 0, 0, SRCCOPY );
goto end;
-@@ -1546,7 +1608,6 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
+@@ -1530,7 +1628,9 @@ ImageList_DrawIndirect (IMAGELISTDRAWPAR
}
}
-- if (fState & ILS_SATURATE) FIXME("ILS_SATURATE: unimplemented!\n");
++#ifndef __REACTOS__
+ if (fState & ILS_SATURATE) FIXME("ILS_SATURATE: unimplemented!\n");
++#endif
if (fState & ILS_GLOW) FIXME("ILS_GLOW: unimplemented!\n");
if (fState & ILS_SHADOW) FIXME("ILS_SHADOW: unimplemented!\n");
+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 2015-04-05 20:44:57 +0100
-+++ e:\reactos\dll\win32\comctl32/listview.c 2015-08-27 22:05:04 +0100
-@@ -306,6 +287,9 @@ typedef struct tagLISTVIEW_INFO
+--- 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
+@@ -287,6 +287,9 @@ typedef struct tagLISTVIEW_INFO
COLORREF clrBk;
COLORREF clrText;
COLORREF clrTextBk;
/* font */
HFONT hDefaultFont;
-@@ -1698,8 +1682,24 @@ static inline BOOL LISTVIEW_GetItemW(con
+@@ -1678,8 +1681,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)
{
}
/* Listview invalidation functions: use _only_ these functions to invalidate */
-@@ -4682,7 +4682,12 @@ static void LISTVIEW_DrawItemPart(LISTVI
+@@ -4671,7 +4690,12 @@ static void LISTVIEW_DrawItemPart(LISTVI
if (infoPtr->uView == LV_VIEW_DETAILS && infoPtr->dwLvExStyle & LVS_EX_GRIDLINES)
rcLabel.bottom--;
}
/***
-@@ -5228,7 +5233,11 @@ enddraw:
+@@ -5212,7 +5236,11 @@ enddraw:
/* Draw marquee rectangle if appropriate */
if (infoPtr->bMarqueeSelect)
if (cdmode & CDRF_NOTIFYPOSTPAINT)
notify_postpaint(infoPtr, &nmlvcd);
-@@ -8024,6 +8033,9 @@ static BOOL LISTVIEW_SetBkColor(LISTVIEW
+@@ -8013,6 +8041,9 @@ static BOOL LISTVIEW_SetBkColor(LISTVIEW
{
TRACE("(color=%x)\n", color);
if(infoPtr->clrBk != color) {
if (infoPtr->clrBk != CLR_NONE) DeleteObject(infoPtr->hBkBrush);
infoPtr->clrBk = color;
-@@ -8702,7 +8714,7 @@ static DWORD LISTVIEW_SetIconSpacing(LIS
+@@ -8688,7 +8719,7 @@ static DWORD LISTVIEW_SetIconSpacing(LIS
return oldspacing;
}
{
INT cx, cy;
-@@ -8713,8 +8725,8 @@ static inline void set_icon_size(SIZE *s
+@@ -8699,8 +8730,8 @@ static inline void set_icon_size(SIZE *s
}
else
{
}
}
-@@ -9451,6 +9463,9 @@ static LRESULT LISTVIEW_NCCreate(HWND hw
+@@ -9435,6 +9466,9 @@ static LRESULT LISTVIEW_NCCreate(HWND hw
infoPtr->clrText = CLR_DEFAULT;
infoPtr->clrTextBk = CLR_DEFAULT;
LISTVIEW_SetBkColor(infoPtr, comctl32_color.clrWindow);
/* set default values */
infoPtr->nFocusedItem = -1;
-@@ -11735,6 +11750,14 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg
+@@ -11718,6 +11752,14 @@ LISTVIEW_WindowProc(HWND hwnd, UINT uMsg
case WM_SYSCOLORCHANGE:
COMCTL32_RefreshSysColors();
/* case WM_TIMER: */
diff -pudN e:\wine\dlls\comctl32/propsheet.c e:\reactos\dll\win32\comctl32/propsheet.c
---- e:\wine\dlls\comctl32/propsheet.c 2015-03-21 14:04:48 +0100
-+++ e:\reactos\dll\win32\comctl32/propsheet.c 2015-08-27 22:05:04 +0100
-@@ -2432,12 +2416,19 @@ static void PROPSHEET_SetWizButtons(HWND
+--- 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
+@@ -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);
/* set the default pushbutton to an enabled button */
if (enable_finish)
SendMessageW(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0);
-@@ -2447,6 +2438,7 @@ static void PROPSHEET_SetWizButtons(HWND
+@@ -2370,6 +2377,7 @@ static void PROPSHEET_SetWizButtons(HWND
SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0);
else
SendMessageW(hwndDlg, DM_SETDEFID, IDCANCEL, 0);
if (!psInfo->hasFinish)
{
-@@ -2466,6 +2458,25 @@ static void PROPSHEET_SetWizButtons(HWND
+@@ -2389,6 +2397,25 @@ static void PROPSHEET_SetWizButtons(HWND
ShowWindow(hwndNext, SW_SHOW);
}
}
/******************************************************************************
diff -pudN e:\wine\dlls\comctl32/rebar.c e:\reactos\dll\win32\comctl32/rebar.c
---- e:\wine\dlls\comctl32/rebar.c 2015-04-05 20:44:57 +0100
-+++ e:\reactos\dll\win32\comctl32/rebar.c 2015-08-27 22:05:04 +0100
+--- 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
@@ -50,7 +50,6 @@
* - WM_QUERYNEWPALETTE
* - WM_RBUTTONDOWN
* - WM_VKEYTOITEM
* - WM_WININICHANGE
* Notifications:
-@@ -1844,16 +1828,43 @@ static LRESULT REBAR_EraseBkGnd (const R
+@@ -1821,16 +1820,43 @@ static LRESULT REBAR_EraseBkGnd (const R
RECT cr;
COLORREF old = CLR_NONE, new;
HTHEME theme = GetWindowTheme (infoPtr->hwndSelf);
/* draw band separator between rows */
if (lpBand->iRow != oldrow) {
oldrow = lpBand->iRow;
-@@ -1878,6 +1889,9 @@ static LRESULT REBAR_EraseBkGnd (const R
+@@ -1855,6 +1881,9 @@ static LRESULT REBAR_EraseBkGnd (const R
}
TRACE ("drawing band separator bottom (%s)\n",
wine_dbgstr_rect(&rcRowSep));
}
}
-@@ -1888,6 +1902,9 @@ static LRESULT REBAR_EraseBkGnd (const R
+@@ -1865,6 +1894,9 @@ static LRESULT REBAR_EraseBkGnd (const R
if (infoPtr->dwStyle & CCS_VERT) {
rcSep.bottom = rcSep.top;
rcSep.top -= SEP_WIDTH_SIZE;
if (theme)
DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_BOTTOM, NULL);
else
-@@ -1896,6 +1913,9 @@ static LRESULT REBAR_EraseBkGnd (const R
+@@ -1873,6 +1905,9 @@ static LRESULT REBAR_EraseBkGnd (const R
else {
rcSep.right = rcSep.left;
rcSep.left -= SEP_WIDTH_SIZE;
if (theme)
DrawThemeEdge (theme, hdc, RP_BAND, 0, &rcSep, EDGE_ETCHED, BF_RIGHT, NULL);
else
-@@ -1926,6 +1946,9 @@ static LRESULT REBAR_EraseBkGnd (const R
+@@ -1903,6 +1938,9 @@ static LRESULT REBAR_EraseBkGnd (const R
#endif
}
if (theme)
{
/* When themed, the background color is ignored (but not a
-@@ -1933,6 +1956,7 @@ static LRESULT REBAR_EraseBkGnd (const R
+@@ -1910,6 +1948,7 @@ static LRESULT REBAR_EraseBkGnd (const R
DrawThemeBackground (theme, hdc, 0, 0, &cr, &rcBand);
}
else
{
old = SetBkColor (hdc, new);
TRACE("%s background color=0x%06x, band %s\n",
-@@ -1943,7 +1967,26 @@ static LRESULT REBAR_EraseBkGnd (const R
+@@ -1920,7 +1959,26 @@ static LRESULT REBAR_EraseBkGnd (const R
if (lpBand->clrBack != CLR_NONE)
SetBkColor (hdc, old);
}
return TRUE;
}
-@@ -2912,12 +2955,22 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT
+@@ -2889,12 +2947,26 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT
static LRESULT
--REBAR_SizeToRect (REBAR_INFO *infoPtr, const RECT *lpRect)
++#ifdef __REACTOS__
+REBAR_SizeToRect (REBAR_INFO *infoPtr, WPARAM flags, RECT *lpRect)
++#else
+ REBAR_SizeToRect (REBAR_INFO *infoPtr, const RECT *lpRect)
++#endif
{
if (!lpRect) return FALSE;
return TRUE;
}
-@@ -3224,7 +3277,11 @@ REBAR_NCCalcSize (const REBAR_INFO *info
+@@ -3201,7 +3273,11 @@ REBAR_NCCalcSize (const REBAR_INFO *info
else if ((theme = GetWindowTheme (infoPtr->hwndSelf)))
{
/* FIXME: should use GetThemeInt */
}
TRACE("new client=(%s)\n", wine_dbgstr_rect(rect));
return 0;
-@@ -3675,7 +3732,7 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg,
+@@ -3652,7 +3728,11 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg,
return REBAR_ShowBand (infoPtr, wParam, lParam);
case RB_SIZETORECT:
-- return REBAR_SizeToRect (infoPtr, (LPCRECT)lParam);
++#ifdef __REACTOS__
+ return REBAR_SizeToRect (infoPtr, wParam, (LPRECT)lParam);
++#else
+ return REBAR_SizeToRect (infoPtr, (LPCRECT)lParam);
++#endif
/* Messages passed to parent */
-@@ -3758,6 +3815,11 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg,
+@@ -3735,6 +3815,11 @@ REBAR_WindowProc (HWND hwnd, UINT uMsg,
case WM_SYSCOLORCHANGE:
COMCTL32_RefreshSysColors();
/* 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 2015-07-14 15:44:34 +0100
-+++ e:\reactos\dll\win32\comctl32/toolbar.c 2015-09-08 13:22:39 +0100
+--- 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
@@ -33,11 +33,9 @@
* - TBSTYLE_REGISTERDROP
* - TBSTYLE_EX_DOUBLEBUFFER
* - WM_WININICHANGE
* - Notifications:
* - NM_CHAR
-@@ -139,6 +123,10 @@ typedef struct
+@@ -125,6 +123,10 @@ typedef struct
INT nOldHit;
INT nHotItem; /* index of the "hot" item */
SIZE szPadding; /* padding values around button */
INT iTopMargin; /* the top margin */
INT iListGap; /* default gap between text and image for toolbar with list style */
HFONT hDefaultFont;
-@@ -204,12 +192,24 @@ typedef enum
+@@ -190,12 +192,24 @@ typedef enum
#define ARROW_HEIGHT 3
#define INSERTMARK_WIDTH 2
/* how wide to treat the bitmap if it isn't present */
#define NONLIST_NOTEXT_OFFSET 2
-@@ -253,7 +253,12 @@ static LRESULT TOOLBAR_SetButtonInfo(TOO
+@@ -239,7 +253,12 @@ static LRESULT TOOLBAR_SetButtonInfo(TOO
static inline int default_top_margin(const TOOLBAR_INFO *infoPtr)
{
}
static inline BOOL TOOLBAR_HasDropDownArrows(DWORD exStyle)
-@@ -737,10 +742,14 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *in
+@@ -723,10 +742,14 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *in
const NMTBCUSTOMDRAW *tbcd, DWORD dwItemCDFlag)
{
HIMAGELIST himl = NULL;
if (tbcd->nmcd.uItemState & (CDIS_DISABLED | CDIS_INDETERMINATE))
{
-@@ -748,7 +757,22 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *in
+@@ -734,7 +757,22 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *in
if (!himl)
{
himl = TOOLBAR_GetImageListForDrawing(infoPtr, btnPtr, IMAGE_LIST_DEFAULT, &index);
}
}
else if (tbcd->nmcd.uItemState & CDIS_CHECKED ||
-@@ -779,9 +803,34 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *in
+@@ -765,9 +803,34 @@ TOOLBAR_DrawImage(const TOOLBAR_INFO *in
index, himl, left, top, offset);
if (draw_masked)
}
/* draws a blank frame for a toolbar button */
-@@ -898,14 +947,15 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *
+@@ -884,14 +947,15 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *
InflateRect(&rcsep, -infoPtr->szPadding.cx, -infoPtr->szPadding.cy);
TOOLBAR_DrawFlatHorizontalSeparator (&rcsep, hdc, infoPtr);
}
}
/* get a pointer to the text */
-@@ -1042,7 +1092,11 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *
+@@ -1028,7 +1092,11 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *
}
}
{
int partId = drawSepDropDownArrow ? TP_SPLITBUTTON : TP_BUTTON;
int stateId = TS_NORMAL;
-@@ -1059,7 +1113,12 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *
+@@ -1045,7 +1113,12 @@ TOOLBAR_DrawButton (const TOOLBAR_INFO *
DrawThemeBackground (theme, hdc, partId, stateId, &rc, NULL);
}
TOOLBAR_DrawFrame(infoPtr, &tbcd, &rc, dwItemCDFlag);
if (drawSepDropDownArrow)
-@@ -1587,9 +1646,14 @@ static inline SIZE TOOLBAR_MeasureButton
+@@ -1571,9 +1644,14 @@ static inline SIZE TOOLBAR_MeasureButton
/* ... add on the necessary padding */
if (bValidImageList)
{
sizeButton.cy += LISTPAD_CY;
}
else
-@@ -1606,7 +1670,11 @@ static inline SIZE TOOLBAR_MeasureButton
+@@ -1590,7 +1668,11 @@ static inline SIZE TOOLBAR_MeasureButton
{
if (bHasBitmap)
{
if (sizeString.cy > 0)
sizeButton.cy += 1 + sizeString.cy;
sizeButton.cx = infoPtr->szPadding.cx +
-@@ -1711,7 +1779,14 @@ TOOLBAR_LayoutToolbar(TOOLBAR_INFO *info
+@@ -1695,7 +1777,14 @@ TOOLBAR_LayoutToolbar(TOOLBAR_INFO *info
{
if (btnPtr->cx)
cx = btnPtr->cx;
{
SIZE sz;
HDC hdc;
-@@ -1970,6 +2045,17 @@ TOOLBAR_RelayEvent (HWND hwndTip, HWND h
+@@ -1954,6 +2043,17 @@ TOOLBAR_RelayEvent (HWND hwndTip, HWND h
SendMessageW (hwndTip, TTM_RELAYEVENT, 0, (LPARAM)&msg);
}
static void
TOOLBAR_TooltipAddTool(const TOOLBAR_INFO *infoPtr, const TBUTTON_INFO *button)
{
-@@ -3551,6 +3637,36 @@ TOOLBAR_GetMaxSize (const TOOLBAR_INFO *
+@@ -3535,6 +3635,36 @@ TOOLBAR_GetMaxSize (const TOOLBAR_INFO *
return TRUE;
}
/* << TOOLBAR_GetObject >> */
-@@ -4806,6 +4922,44 @@ TOOLBAR_SetMaxTextRows (TOOLBAR_INFO *in
+@@ -4790,6 +4920,44 @@ TOOLBAR_SetMaxTextRows (TOOLBAR_INFO *in
return TRUE;
}
/* MSDN gives slightly wrong info on padding.
* 1. It is not only used on buttons with the BTNS_AUTOSIZE style
-@@ -6052,6 +6206,8 @@ TOOLBAR_NCCreate (HWND hwnd, WPARAM wPar
+@@ -6030,6 +6198,10 @@ TOOLBAR_NCCreate (HWND hwnd, WPARAM wPar
infoPtr->clrBtnShadow = CLR_DEFAULT;
infoPtr->szPadding.cx = DEFPAD_CX;
infoPtr->szPadding.cy = DEFPAD_CY;
++#ifdef __REACTOS__
+ infoPtr->szSpacing.cx = DEFSPACE_CX;
+ infoPtr->szSpacing.cy = DEFSPACE_CY;
++#endif
infoPtr->iListGap = DEFLISTGAP;
infoPtr->iTopMargin = default_top_margin(infoPtr);
infoPtr->dwStyle = lpcs->style;
-@@ -6461,7 +6617,7 @@ TOOLBAR_SysColorChange (void)
+@@ -6439,7 +6611,7 @@ TOOLBAR_SysColorChange (void)
return 0;
}
/* update theme after a WM_THEMECHANGED message */
static LRESULT theme_changed (HWND hwnd)
{
-@@ -6470,7 +6626,7 @@ static LRESULT theme_changed (HWND hwnd)
+@@ -6448,7 +6620,7 @@ static LRESULT theme_changed (HWND hwnd)
OpenThemeData (hwnd, themeClass);
return 0;
}
static LRESULT WINAPI
ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-@@ -6575,6 +6731,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
+@@ -6553,6 +6725,10 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
case TB_GETMAXSIZE:
return TOOLBAR_GetMaxSize (infoPtr, (LPSIZE)lParam);
/* case TB_GETOBJECT: */ /* 4.71 */
-@@ -6716,6 +6876,11 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
+@@ -6694,6 +6870,11 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
case TB_SETMAXTEXTROWS:
return TOOLBAR_SetMaxTextRows (infoPtr, wParam);
case TB_SETPADDING:
return TOOLBAR_SetPadding (infoPtr, lParam);
-@@ -6855,8 +7020,12 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
- case WM_SYSCOLORCHANGE:
+@@ -6835,7 +7016,11 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg,
return TOOLBAR_SysColorChange ();
-- case WM_THEMECHANGED:
-+ case WM_THEMECHANGED:
+ case WM_THEMECHANGED:
+#ifdef __REACTOS__
+ return TOOLBAR_ThemeChanged(hwnd);
+#else
/* case WM_WININICHANGE: */
diff -pudN e:\wine\dlls\comctl32/tooltips.c e:\reactos\dll\win32\comctl32/tooltips.c
---- e:\wine\dlls\comctl32/tooltips.c 2015-05-25 19:35:13 +0100
-+++ e:\reactos\dll\win32\comctl32/tooltips.c 2015-08-27 22:05:04 +0100
-@@ -2009,7 +1996,36 @@ TOOLTIPS_NCHitTest (const TOOLTIPS_INFO
+--- 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
static LRESULT
TOOLTIPS_NotifyFormat (TOOLTIPS_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
{
return 0;
}
diff -pudN e:\wine\dlls\comctl32/treeview.c e:\reactos\dll\win32\comctl32/treeview.c
---- e:\wine\dlls\comctl32/treeview.c 2015-07-14 15:44:34 +0100
-+++ e:\reactos\dll\win32\comctl32/treeview.c 2015-08-27 22:05:04 +0100
-@@ -2890,7 +2868,14 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr,
+--- 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
+@@ -2888,7 +2888,14 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr,
}
}
+ //
+ // FIXME: This is correct, but is causes and infinite loop of WM_PAINT
+ // messages, resulting in continuous painting of the scroll bar in reactos.
-+ // Comment out until the real bug is found
++ // Comment out until the real bug is found. CORE-4912
+ //
+#ifndef __REACTOS__
TREEVIEW_UpdateScrollBars(infoPtr);