ChangeLog Make tab send its notifications to the parent window passed to it in CREATESTRUCT. Based on a treeview patch by Igor Grahek. Index: dlls/comctl32/tab.c =================================================================== RCS file: /var/cvs/wine/dlls/comctl32/tab.c,v retrieving revision 1.88 diff -u -r1.88 tab.c --- dlls/comctl32/tab.c 31 Oct 2003 00:06:42 -0000 1.88 +++ dlls/comctl32/tab.c 19 Nov 2003 19:35:01 -0000 @@ -59,6 +59,7 @@ typedef struct { + HWND hwndNotify; /* notification window (parent) */ UINT uNumItem; /* number of tab items */ UINT uNumRows; /* number of tab rows */ INT tabHeight; /* height of the tab row */ @@ -118,13 +119,14 @@ static BOOL TAB_SendSimpleNotify (HWND hwnd, UINT code) { + TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); NMHDR nmhdr; nmhdr.hwndFrom = hwnd; nmhdr.idFrom = GetWindowLongA(hwnd, GWL_ID); nmhdr.code = code; - return (BOOL) SendMessageA (GetParent (hwnd), WM_NOTIFY, + return (BOOL) SendMessageA (infoPtr->hwndNotify, WM_NOTIFY, (WPARAM) nmhdr.idFrom, (LPARAM) &nmhdr); } @@ -1526,7 +1528,7 @@ /* * send the draw message */ - SendMessageA( GetParent(hwnd), WM_DRAWITEM, (WPARAM)id, (LPARAM)&dis ); + SendMessageA( infoPtr->hwndNotify, WM_DRAWITEM, (WPARAM)id, (LPARAM)&dis ); } else { @@ -3001,6 +3003,7 @@ SetWindowLongA(hwnd, 0, (DWORD)infoPtr); + infoPtr->hwndNotify = ((LPCREATESTRUCTW)lParam)->hwndParent; infoPtr->uNumItem = 0; infoPtr->uNumRows = 0; infoPtr->uHItemPadding = 6; @@ -3044,7 +3047,7 @@ nmttc.hdr.code = NM_TOOLTIPSCREATED; nmttc.hwndToolTips = infoPtr->hwndToolTip; - SendMessageA (GetParent (hwnd), WM_NOTIFY, + SendMessageA (infoPtr->hwndNotify, WM_NOTIFY, (WPARAM)GetWindowLongA(hwnd, GWL_ID), (LPARAM)&nmttc); } } @@ -3113,6 +3116,7 @@ static LRESULT WINAPI TAB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { + TAB_INFO *infoPtr = TAB_GetInfoPtr(hwnd); TRACE("hwnd=%p msg=%x wParam=%x lParam=%lx\n", hwnd, uMsg, wParam, lParam); if (!TAB_GetInfoPtr(hwnd) && (uMsg != WM_CREATE)) @@ -3243,7 +3247,7 @@ return TAB_LButtonUp (hwnd, wParam, lParam); case WM_NOTIFY: - return SendMessageA(GetParent(hwnd), WM_NOTIFY, wParam, lParam); + return SendMessageA(infoPtr->hwndNotify, WM_NOTIFY, wParam, lParam); case WM_RBUTTONDOWN: return TAB_RButtonDown (hwnd, wParam, lParam); -- Dimi.