Author: hpoussin Date: Fri Sep 14 11:22:03 2007 New Revision: 29032
URL: http://svn.reactos.org/svn/reactos?rev=29032&view=rev Log: Autosyncing with Wine HEAD
Modified: trunk/reactos/dll/win32/comctl32/comctl32.h trunk/reactos/dll/win32/comctl32/comctl32.rbuild trunk/reactos/dll/win32/comctl32/comctl32_ros.diff trunk/reactos/dll/win32/comctl32/comctl_Fr.rc trunk/reactos/dll/win32/comctl32/comctl_No.rc trunk/reactos/dll/win32/comctl32/comctl_Pt.rc trunk/reactos/dll/win32/comctl32/comctl_Ru.rc trunk/reactos/dll/win32/comctl32/comctl_Uk.rc trunk/reactos/dll/win32/comctl32/commctrl.c trunk/reactos/dll/win32/comctl32/listview.c trunk/reactos/dll/win32/comctl32/rsrc.rc trunk/reactos/dll/win32/comctl32/tab.c trunk/reactos/dll/win32/comctl32/toolbar.c trunk/reactos/dll/win32/comctl32/tooltips.c trunk/reactos/dll/win32/comctl32/treeview.c
Modified: trunk/reactos/dll/win32/comctl32/comctl32.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl32... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl32.h (original) +++ trunk/reactos/dll/win32/comctl32/comctl32.h Fri Sep 14 11:22:03 2007 @@ -153,8 +153,6 @@ BOOL Str_SetPtrWtoA (LPSTR *lppDest, LPCWSTR lpSrc);
#define COMCTL32_VERSION_MINOR 81 -#define WINE_FILEVERSION 5, COMCTL32_VERSION_MINOR, 4704, 1100 -#define WINE_FILEVERSIONSTR "5.81"
/* Our internal stack structure of the window procedures to subclass */ typedef struct _SUBCLASSPROCS {
Modified: trunk/reactos/dll/win32/comctl32/comctl32.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl32... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl32.rbuild (original) +++ trunk/reactos/dll/win32/comctl32/comctl32.rbuild Fri Sep 14 11:22:03 2007 @@ -1,4 +1,4 @@ -<module name="comctl32" type="win32dll" baseaddress="${BASEADDRESS_COMCTL32}" installbase="system32" installname="comctl32.dll" allowwarnings="true"> +<module name="comctl32" type="win32dll" baseaddress="${BASEADDRESS_COMCTL32}" installbase="system32" installname="comctl32.dll" allowwarnings="true" entrypoint="0"> <autoregister infsection="OleControlDlls" type="DllInstall" /> <importlibrary definition="comctl32.spec.def" /> <include base="comctl32">.</include> @@ -9,12 +9,6 @@ <define name="_WIN32_IE">0x600</define> <define name="_WIN32_WINNT">0x501</define> <define name="WINVER">0x501</define> - - <metadata - description = "Common controls used by ReactOS" - version = "Autosync" - owner = "Wine" /> - <library>wine</library> <library>user32</library> <library>gdi32</library>
Modified: trunk/reactos/dll/win32/comctl32/comctl32_ros.diff URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl32... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl32_ros.diff (original) +++ trunk/reactos/dll/win32/comctl32/comctl32_ros.diff Fri Sep 14 11:22:03 2007 @@ -1,3 +1,16 @@ +Index: commctrl.c +=================================================================== +--- commctrl.c (revision 23123) ++++ commctrl.c (working copy) +@@ -1620,7 +1620,7 @@ + * + * Draw text with shadow. + */ ++int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, const RECT *rect, DWORD dwFlags, +-int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT *rect, DWORD dwFlags, + 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, Index: listview.c =================================================================== --- listview.c (revision 23123) @@ -102,7 +115,7 @@ =================================================================== --- tooltips.c (revision 25790) +++ tooltips.c (working copy) -@@ -2437,7 +2437,34 @@ +@@ -2471,7 +2471,34 @@ TOOLTIPS_NotifyFormat (HWND hwnd, WPARAM wParam, LPARAM lParam) { FIXME ("hwnd=%p wParam=%lx lParam=%lx\n", hwnd, wParam, lParam); @@ -141,7 +154,7 @@ =================================================================== --- treeview.c (revision 27134) +++ treeview.c (working copy) -@@ -2839,8 +2839,6 @@ +@@ -2844,8 +2844,6 @@ } }
Modified: trunk/reactos/dll/win32/comctl32/comctl_Fr.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl_F... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl_Fr.rc (original) +++ trunk/reactos/dll/win32/comctl32/comctl_Fr.rc Fri Sep 14 11:22:03 2007 @@ -31,7 +31,7 @@ PUSHBUTTON "Annuler", IDCANCEL,58,122,50,14 PUSHBUTTON "&Appliquer", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "Aide", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP - CONTROL "onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 + CONTROL "Onglet", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 END
Modified: trunk/reactos/dll/win32/comctl32/comctl_No.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl_N... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl_No.rc (original) +++ trunk/reactos/dll/win32/comctl32/comctl_No.rc Fri Sep 14 11:22:03 2007 @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
Modified: trunk/reactos/dll/win32/comctl32/comctl_Pt.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl_P... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl_Pt.rc (original) +++ trunk/reactos/dll/win32/comctl32/comctl_Pt.rc Fri Sep 14 11:22:03 2007 @@ -1,6 +1,6 @@ /* * Copyright 2003 Marcelo Duarte - * Copyright 2006 Américo José Melo + * Copyright 2006-2007 Américo José Melo * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -42,7 +42,7 @@ PUSHBUTTON "Cancelar", IDCANCEL,58,122,50,14 PUSHBUTTON "&Aplicar", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "Ajuda", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP - CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 + CONTROL "Separador", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 END
Modified: trunk/reactos/dll/win32/comctl32/comctl_Ru.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl_R... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl_Ru.rc (original) +++ trunk/reactos/dll/win32/comctl32/comctl_Ru.rc Fri Sep 14 11:22:03 2007 @@ -22,7 +22,7 @@
IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE -CAPTION "Ñâîéñòâà: %s" +CAPTION "Ñâîéñòâà äëÿ %s" FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP
Modified: trunk/reactos/dll/win32/comctl32/comctl_Uk.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl_U... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl_Uk.rc (original) +++ trunk/reactos/dll/win32/comctl32/comctl_Uk.rc Fri Sep 14 11:22:03 2007 @@ -2,7 +2,6 @@ * comctl (Ukrainian resources) * * Copyright 2004 Ilya Korniyko - * 2007 Artem Reznikov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -27,7 +26,7 @@ FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&Ñêàñóâàòè", IDCANCEL,58,122,50,14 + PUSHBUTTON "&³äì³íà", IDCANCEL,58,122,50,14 PUSHBUTTON "&Çàñòîñóâàòè", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&Äîâ³äêà", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 @@ -42,7 +41,7 @@ PUSHBUTTON "< &Íàçàä", IDC_BACK_BUTTON,71,138,50,14 DEFPUSHBUTTON "&Äàë³ >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&Çàâåðøèòè", IDC_FINISH_BUTTON,121,138,50,14 - PUSHBUTTON "&Ñêàñóâàòè", IDCANCEL,178,138,50,14 + PUSHBUTTON "&³äì³íà", IDCANCEL,178,138,50,14 PUSHBUTTON "&Äîâ³äêà", IDHELP,235,138,50,14,WS_GROUP LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5
Modified: trunk/reactos/dll/win32/comctl32/commctrl.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/commctrl... ============================================================================== --- trunk/reactos/dll/win32/comctl32/commctrl.c (original) +++ trunk/reactos/dll/win32/comctl32/commctrl.c Fri Sep 14 11:22:03 2007 @@ -71,6 +71,58 @@
WINE_DEFAULT_DEBUG_CHANNEL(commctrl);
+ +#define NAME "microsoft.windows.common-controls" +#define FILE "comctl32.dll" +#define VERSION "6.0.0.0" +#define PUBLIC_KEY "6595b64144ccf1df" + +#ifdef __i386__ +#define ARCH "x86" +#elif defined __x86_64__ +#define ARCH "amd64" +#else +#define ARCH "none" +#endif + +static const char manifest[] = + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" + "<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">\n" + " <assemblyIdentity type="win32" name="" NAME "" version="" VERSION "" processorArchitecture="" ARCH "" publicKeyToken="" PUBLIC_KEY ""/>\n" + " <file name="" FILE "">\n" + " <windowClass>Button</windowClass>\n" + " <windowClass>ButtonListBox</windowClass>\n" + " <windowClass>ComboBoxEx32</windowClass>\n" + " <windowClass>ComboLBox</windowClass>\n" + " <windowClass>Combobox</windowClass>\n" + " <windowClass>Edit</windowClass>\n" + " <windowClass>Listbox</windowClass>\n" + " <windowClass>NativeFontCtl</windowClass>\n" + " <windowClass>ReBarWindow32</windowClass>\n" + " <windowClass>ScrollBar</windowClass>\n" + " <windowClass>Static</windowClass>\n" + " <windowClass>SysAnimate32</windowClass>\n" + " <windowClass>SysDateTimePick32</windowClass>\n" + " <windowClass>SysHeader32</windowClass>\n" + " <windowClass>SysIPAddress32</windowClass>\n" + " <windowClass>SysLink</windowClass>\n" + " <windowClass>SysListView32</windowClass>\n" + " <windowClass>SysMonthCal32</windowClass>\n" + " <windowClass>SysPager</windowClass>\n" + " <windowClass>SysTabControl32</windowClass>\n" + " <windowClass>SysTreeView32</windowClass>\n" + " <windowClass>ToolbarWindow32</windowClass>\n" + " <windowClass>msctls_hotkey32</windowClass>\n" + " <windowClass>msctls_progress32</windowClass>\n" + " <windowClass>msctls_statusbar32</windowClass>\n" + " <windowClass>msctls_trackbar32</windowClass>\n" + " <windowClass>msctls_updown32</windowClass>\n" + " <windowClass>tooltips_class32</windowClass>\n" + " </file>\n" + "</assembly>\n"; + +static const char manifest_filename[] = ARCH "_" NAME "_" PUBLIC_KEY "_" VERSION "_none_deadbeef.manifest"; + LRESULT WINAPI COMCTL32_SubclassProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LPWSTR COMCTL32_wSubclass = NULL; @@ -90,6 +142,47 @@ static const WCHAR strCC32SubclassInfo[] = { 'C','C','3','2','S','u','b','c','l','a','s','s','I','n','f','o',0 }; + +static BOOL create_manifest( BOOL install ) +{ + static const WCHAR winsxsW[] = {'\','w','i','n','s','x','s',0}; + static const WCHAR manifestsW[] = {'\','m','a','n','i','f','e','s','t','s','\',0}; + + DWORD len, written; + WCHAR *buffer; + HANDLE file; + BOOL ret = FALSE; + + len = MultiByteToWideChar( CP_UTF8, 0, manifest_filename, sizeof(manifest_filename), NULL, 0 ); + len += GetWindowsDirectoryW( NULL, 0 ); + len += lstrlenW(winsxsW); + len += lstrlenW(manifestsW); + if (!(buffer = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return FALSE; + GetWindowsDirectoryW( buffer, len ); + lstrcatW( buffer, winsxsW ); + CreateDirectoryW( buffer, NULL ); + lstrcatW( buffer, manifestsW ); + CreateDirectoryW( buffer, NULL ); + MultiByteToWideChar( CP_UTF8, 0, manifest_filename, sizeof(manifest_filename), + buffer + lstrlenW(buffer), len ); + if (install) + { + file = CreateFileW( buffer, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL ); + if (file != INVALID_HANDLE_VALUE) + { + ret = (WriteFile( file, manifest, sizeof(manifest)-1, &written, NULL ) && + written == sizeof(manifest)-1); + CloseHandle( file ); + if (!ret) DeleteFileW( buffer ); + else TRACE("created %s\n", debugstr_w(buffer)); + } + } + else ret = DeleteFileW( buffer ); + + HeapFree( GetProcessHeap(), 0, buffer ); + return ret; +} +
/*********************************************************************** * DllMain [Internal] @@ -917,10 +1010,9 @@ */ HRESULT WINAPI DllInstall(BOOL bInstall, LPCWSTR cmdline) { - FIXME("(%s, %s): stub\n", bInstall?"TRUE":"FALSE", - debugstr_w(cmdline)); - - return S_OK; + TRACE("(%u, %s): stub\n", bInstall, debugstr_w(cmdline)); + if (!create_manifest( bInstall )) return HRESULT_FROM_WIN32(GetLastError()); + return S_OK; }
/*********************************************************************** @@ -1528,12 +1620,10 @@ * * Draw text with shadow. */ -int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, const RECT *pRect, DWORD dwFlags, +int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, const RECT *rect, DWORD dwFlags, COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset) { - RECT rect = *pRect; - - FIXME("(%p, %s, %d, %p, %d, 0x%08x, 0x%08x, %d, %d): stub\n", hdc, debugstr_w(pszText), cch, pRect, dwFlags, + 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); -} + return DrawTextW(hdc, pszText, cch, rect, DT_LEFT); +}
Modified: trunk/reactos/dll/win32/comctl32/listview.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/listview... ============================================================================== --- trunk/reactos/dll/win32/comctl32/listview.c (original) +++ trunk/reactos/dll/win32/comctl32/listview.c Fri Sep 14 11:22:03 2007 @@ -6658,7 +6658,16 @@
ZeroMemory(&hdi, sizeof(HDITEMW)); column_fill_hditem(infoPtr, &hdi, nColumn, lpColumn, isW); - + + /* + * A mask not including LVCF_WIDTH turns into a mask of width, width 10 + * (can be seen in SPY) otherwise column never gets added. + */ + if (!(lpColumn->mask & LVCF_WIDTH)) { + hdi.mask |= HDI_WIDTH; + hdi.cxy = 10; + } + /* * when the iSubItem is available Windows copies it to the header lParam. It seems * to happen only in LVM_INSERTCOLUMN - not in LVM_SETCOLUMN
Modified: trunk/reactos/dll/win32/comctl32/rsrc.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/rsrc.rc?... ============================================================================== --- trunk/reactos/dll/win32/comctl32/rsrc.rc (original) +++ trunk/reactos/dll/win32/comctl32/rsrc.rc Fri Sep 14 11:22:03 2007 @@ -26,6 +26,13 @@ #include "comctl32.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define WINE_FILEDESCRIPTION_STR "Wine Common Controls" +#define WINE_FILENAME_STR "comctl32.dll" +#define WINE_FILEVERSION COMCTL32_VERSION, COMCTL32_VERSION_MINOR, 4704, 1100 +#define WINE_FILEVERSIONSTR "5.81" +#define WINE_PRODUCTVERSION WINE_FILEVERSION +#define WINE_PRODUCTVERSION_STR WINE_FILEVERSIONSTR
#include "wine/wine_common_ver.rc"
Modified: trunk/reactos/dll/win32/comctl32/tab.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/tab.c?re... ============================================================================== --- trunk/reactos/dll/win32/comctl32/tab.c (original) +++ trunk/reactos/dll/win32/comctl32/tab.c Fri Sep 14 11:22:03 2007 @@ -255,6 +255,7 @@ else { if (infoPtr->iSelected != iItem) { infoPtr->iSelected=iItem; + infoPtr->uFocus=iItem; TAB_EnsureSelectionVisible(infoPtr); TAB_InvalidateTabArea(infoPtr); }
Modified: trunk/reactos/dll/win32/comctl32/toolbar.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/toolbar.... ============================================================================== --- trunk/reactos/dll/win32/comctl32/toolbar.c (original) +++ trunk/reactos/dll/win32/comctl32/toolbar.c Fri Sep 14 11:22:03 2007 @@ -44,7 +44,7 @@ * - TBN_GETOBJECT * - TBN_SAVE * - Button wrapping (under construction). - * - Fix TB_SETROWS. + * - Fix TB_SETROWS and Separators. * - iListGap custom draw support. * * Testing: @@ -3637,10 +3637,7 @@ { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
- if (infoPtr->dwStyle & TBSTYLE_WRAPABLE) - return infoPtr->nRows; - else - return 1; + return infoPtr->nRows; }
@@ -4947,19 +4944,106 @@ { TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd); LPRECT lprc = (LPRECT)lParam; + int rows = LOWORD(wParam); + BOOL bLarger = HIWORD(wParam);
TRACE("\n");
- if (LOWORD(wParam) > 1) { - FIXME("multiple rows not supported!\n"); - } - - if(infoPtr->nRows != LOWORD(wParam)) - { - infoPtr->nRows = LOWORD(wParam); + TRACE("Setting rows to %d (%d)\n", rows, bLarger); + + if(infoPtr->nRows != rows) + { + TBUTTON_INFO *btnPtr = infoPtr->buttons; + int curColumn = 0; /* Current column */ + int curRow = 0; /* Current row */ + int hidden = 0; /* Number of hidden buttons */ + int seps = 0; /* Number of separators */ + int idealWrap = 0; /* Ideal wrap point */ + int i; + BOOL wrap; + + /* + Calculate new size and wrap points - Under windows, setrows will + change the dimensions if needed to show the number of requested + rows (if CCS_NORESIZE is set), or will take up the whole window + (if no CCS_NORESIZE). + + Basic algorithum - If N buttons, and y rows requested, each row + contains N/y buttons. + + FIXME: Handling of separators not obvious from testing results + FIXME: Take width of window into account? + */ + + /* Loop through the buttons one by one counting key items */ + for (i = 0; i < infoPtr->nNumButtons; i++ ) + { + btnPtr[i].fsState &= ~TBSTATE_WRAP; + if (btnPtr[i].fsState & TBSTATE_HIDDEN) + hidden++; + else if (btnPtr[i].fsStyle & BTNS_SEP) + seps++; + } + + /* FIXME: Separators make this quite complex */ + if (seps) FIXME("Separators unhandled\n"); + + /* Round up so more per line, ie less rows */ + idealWrap = (infoPtr->nNumButtons - hidden + (rows-1)) / rows; + + /* Calculate ideal wrap point if we are allowed to grow, but cannot + achieve the requested number of rows. */ + if (bLarger && idealWrap > 1) + { + int resRows = (infoPtr->nNumButtons + (idealWrap-1)) / idealWrap; + int moreRows = (infoPtr->nNumButtons + (idealWrap-2)) / (idealWrap-1); + + if (resRows < rows && moreRows > rows) + { + idealWrap--; + TRACE("Changing idealWrap due to bLarger (now %d)\n", idealWrap); + } + } + + curColumn = curRow = 0; + wrap = FALSE; + TRACE("Trying to wrap at %d (%d,%d,%d)\n", idealWrap, + infoPtr->nNumButtons, hidden, rows); + + for (i = 0; i < infoPtr->nNumButtons; i++ ) + { + if (btnPtr[i].fsState & TBSTATE_HIDDEN) + continue; + + /* Step on, wrap if necessary or flag next to wrap */ + if (!wrap) { + curColumn++; + } else { + wrap = FALSE; + curColumn = 1; + curRow++; + } + + if (curColumn > (idealWrap-1)) { + wrap = TRUE; + btnPtr[i].fsState |= TBSTATE_WRAP; + } + } + + TRACE("Result - %d rows\n", curRow + 1);
/* recalculate toolbar */ TOOLBAR_CalcToolbar (hwnd); + + /* Resize if necessary (Only if NORESIZE is set - odd, but basically + if NORESIZE is NOT set, then the toolbar will always be resized to + take up the whole window. With it set, sizing needs to be manual. */ + if (infoPtr->dwStyle & CCS_NORESIZE) { + SetWindowPos(hwnd, NULL, 0, 0, + infoPtr->rcBound.right - infoPtr->rcBound.left, + infoPtr->rcBound.bottom - infoPtr->rcBound.top, + SWP_NOMOVE); + }
/* repaint toolbar */ InvalidateRect(hwnd, NULL, TRUE);
Modified: trunk/reactos/dll/win32/comctl32/tooltips.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/tooltips... ============================================================================== --- trunk/reactos/dll/win32/comctl32/tooltips.c (original) +++ trunk/reactos/dll/win32/comctl32/tooltips.c Fri Sep 14 11:22:03 2007 @@ -314,7 +314,7 @@ ZeroMemory (&ttnmdi, sizeof(NMTTDISPINFOA)); ttnmdi.hdr.hwndFrom = hwnd; ttnmdi.hdr.idFrom = toolPtr->uId; - ttnmdi.hdr.code = TTN_GETDISPINFOA; + ttnmdi.hdr.code = TTN_GETDISPINFOA; /* == TTN_NEEDTEXTA */ ttnmdi.lpszText = (LPSTR)&ttnmdi.szText; ttnmdi.uFlags = toolPtr->uFlags; ttnmdi.lParam = toolPtr->lParam; @@ -332,7 +332,6 @@ } } else if (ttnmdi.lpszText == 0) { - /* no text available */ infoPtr->szTipText[0] = '\0'; } else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) { @@ -347,6 +346,22 @@ ERR("recursive text callback!\n"); infoPtr->szTipText[0] = '\0'; } + + /* no text available - try calling parent instead as per native */ + /* FIXME: Unsure if SETITEM should save the value or not */ + if (infoPtr->szTipText[0] == 0x00) { + + SendMessageW(GetParent(toolPtr->hwnd), WM_NOTIFY, + (WPARAM)toolPtr->uId, (LPARAM)&ttnmdi); + + if (IS_INTRESOURCE(ttnmdi.lpszText)) { + LoadStringW(ttnmdi.hinst, LOWORD(ttnmdi.lpszText), + infoPtr->szTipText, INFOTIPSIZE); + } else if (ttnmdi.lpszText && + ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) { + Str_GetPtrAtoW(ttnmdi.lpszText, infoPtr->szTipText, INFOTIPSIZE); + } + } }
static void TOOLTIPS_GetDispInfoW(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO *toolPtr) @@ -357,7 +372,7 @@ ZeroMemory (&ttnmdi, sizeof(NMTTDISPINFOW)); ttnmdi.hdr.hwndFrom = hwnd; ttnmdi.hdr.idFrom = toolPtr->uId; - ttnmdi.hdr.code = TTN_GETDISPINFOW; + ttnmdi.hdr.code = TTN_GETDISPINFOW; /* == TTN_NEEDTEXTW */ ttnmdi.lpszText = (LPWSTR)&ttnmdi.szText; ttnmdi.uFlags = toolPtr->uFlags; ttnmdi.lParam = toolPtr->lParam; @@ -375,7 +390,6 @@ } } else if (ttnmdi.lpszText == 0) { - /* no text available */ infoPtr->szTipText[0] = '\0'; } else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKW) { @@ -390,6 +404,23 @@ ERR("recursive text callback!\n"); infoPtr->szTipText[0] = '\0'; } + + /* no text available - try calling parent instead as per native */ + /* FIXME: Unsure if SETITEM should save the value or not */ + if (infoPtr->szTipText[0] == 0x00) { + + SendMessageW(GetParent(toolPtr->hwnd), WM_NOTIFY, + (WPARAM)toolPtr->uId, (LPARAM)&ttnmdi); + + if (IS_INTRESOURCE(ttnmdi.lpszText)) { + LoadStringW(ttnmdi.hinst, LOWORD(ttnmdi.lpszText), + infoPtr->szTipText, INFOTIPSIZE); + } else if (ttnmdi.lpszText && + ttnmdi.lpszText != LPSTR_TEXTCALLBACKW) { + Str_GetPtrW(ttnmdi.lpszText, infoPtr->szTipText, INFOTIPSIZE); + } + } + }
static void @@ -538,15 +569,18 @@ if (style & TTS_BALLOON) { ptfx = rc.left + ((rc.right - rc.left) / 2); - if(rect.top - size.cy >= 0) + + /* CENTERTIP ballon tooltips default to below the field + if they fit on the screen */ + if(rc.bottom + size.cy > GetSystemMetrics(SM_CYSCREEN)) { - rect.top -= size.cy; + rect.top = rc.top - size.cy; infoPtr->bToolBelow = FALSE; } else { infoPtr->bToolBelow = TRUE; - rect.top += 20; + rect.top = rc.bottom; } rect.left = max(0, rect.left - BALLOON_STEMINDENT); }
Modified: trunk/reactos/dll/win32/comctl32/treeview.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/treeview... ============================================================================== --- trunk/reactos/dll/win32/comctl32/treeview.c (original) +++ trunk/reactos/dll/win32/comctl32/treeview.c Fri Sep 14 11:22:03 2007 @@ -946,6 +946,8 @@ for (item = start; item != NULL; item = TREEVIEW_GetNextListItem(infoPtr, item)) { + if (!ISVISIBLE(item) && order > 0) + TREEVIEW_ComputeItemInternalMetrics(infoPtr, item); item->visibleOrder = order; order += item->iIntegral; } @@ -2031,7 +2033,10 @@ lpRect->bottom = wineItem->rect.bottom;
lpRect->left = wineItem->textOffset; - lpRect->right = wineItem->textOffset + wineItem->textWidth; + if (!wineItem->textWidth) + TREEVIEW_ComputeTextWidth(infoPtr, wineItem, 0); + + lpRect->right = wineItem->textOffset + wineItem->textWidth + 4; } else {