Add Wine-0_9_4 tag and remove Wine-0_9_3 tag
Deleted: vendor/wine/dlls/avifil32/Wine-0_9_3/
Added: vendor/wine/dlls/avifil32/Wine-0_9_4/
Deleted: vendor/wine/dlls/cabinet/Wine-0_9_3/
Added: vendor/wine/dlls/cabinet/Wine-0_9_4/
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_3/
Added: vendor/wine/dlls/comctl32/Wine-0_9_4/
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_4/tooltips.c
Added: vendor/wine/dlls/comctl32/Wine-0_9_4/tooltips.c
Deleted: vendor/wine/dlls/comctl32/Wine-0_9_4/treeview.c
Added: vendor/wine/dlls/comctl32/Wine-0_9_4/treeview.c
Deleted: vendor/wine/dlls/commdlg/Wine-0_9_3/
Added: vendor/wine/dlls/commdlg/Wine-0_9_4/
Deleted: vendor/wine/dlls/commdlg/Wine-0_9_4/finddlg32.c
Added: vendor/wine/dlls/commdlg/Wine-0_9_4/finddlg32.c
Deleted: vendor/wine/dlls/commdlg/Wine-0_9_4/fontdlg.c
Added: vendor/wine/dlls/commdlg/Wine-0_9_4/fontdlg.c
Deleted: vendor/wine/dlls/crypt32/Wine-0_9_3/
Added: vendor/wine/dlls/crypt32/Wine-0_9_4/
Deleted: vendor/wine/dlls/crypt32/Wine-0_9_4/cert.c
Added: vendor/wine/dlls/crypt32/Wine-0_9_4/cert.c
Deleted: vendor/wine/dlls/crypt32/Wine-0_9_4/encode.c
Added: vendor/wine/dlls/crypt32/Wine-0_9_4/encode.c
Deleted: vendor/wine/dlls/dinput/Wine-0_9_3/
Added: vendor/wine/dlls/dinput/Wine-0_9_4/
Deleted: vendor/wine/dlls/dinput8/Wine-0_9_3/
Added: vendor/wine/dlls/dinput8/Wine-0_9_4/
Deleted: vendor/wine/dlls/dplay/Wine-0_9_3/
Added: vendor/wine/dlls/dplay/Wine-0_9_4/
Deleted: vendor/wine/dlls/dplayx/Wine-0_9_3/
Added: vendor/wine/dlls/dplayx/Wine-0_9_4/
Deleted: vendor/wine/dlls/dsound/Wine-0_9_3/
Added: vendor/wine/dlls/dsound/Wine-0_9_4/
Deleted: vendor/wine/dlls/dxdiagn/Wine-0_9_3/
Added: vendor/wine/dlls/dxdiagn/Wine-0_9_4/
Deleted: vendor/wine/dlls/icmp/Wine-0_9_3/
Added: vendor/wine/dlls/icmp/Wine-0_9_4/
Deleted: vendor/wine/dlls/imm32/Wine-0_9_3/
Added: vendor/wine/dlls/imm32/Wine-0_9_4/
Deleted: vendor/wine/dlls/midimap/Wine-0_9_3/
Added: vendor/wine/dlls/midimap/Wine-0_9_4/
Deleted: vendor/wine/dlls/mpr/Wine-0_9_3/
Added: vendor/wine/dlls/mpr/Wine-0_9_4/
Deleted: vendor/wine/dlls/mpr/Wine-0_9_4/mpr_main.c
Added: vendor/wine/dlls/mpr/Wine-0_9_4/mpr_main.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_3/
Added: vendor/wine/dlls/msi/Wine-0_9_4/
Deleted: vendor/wine/dlls/msi/Wine-0_9_4/dialog.c
Added: vendor/wine/dlls/msi/Wine-0_9_4/dialog.c
Deleted: vendor/wine/dlls/msi/Wine-0_9_4/format.c
Added: vendor/wine/dlls/msi/Wine-0_9_4/format.c
Deleted: vendor/wine/dlls/msimg32/Wine-0_9_3/
Added: vendor/wine/dlls/msimg32/Wine-0_9_4/
Deleted: vendor/wine/dlls/netapi32/Wine-0_9_3/
Added: vendor/wine/dlls/netapi32/Wine-0_9_4/
Deleted: vendor/wine/dlls/objsel/Wine-0_9_3/
Added: vendor/wine/dlls/objsel/Wine-0_9_4/
Deleted: vendor/wine/dlls/ole32/Wine-0_9_3/
Added: vendor/wine/dlls/ole32/Wine-0_9_4/
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/errorinfo.c
Added: vendor/wine/dlls/ole32/Wine-0_9_4/errorinfo.c
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/ole16.c
Added: vendor/wine/dlls/ole32/Wine-0_9_4/ole16.c
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/ole2.c
Added: vendor/wine/dlls/ole32/Wine-0_9_4/ole2.c
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/rpc.c
Added: vendor/wine/dlls/ole32/Wine-0_9_4/rpc.c
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/stg_stream.c
Added: vendor/wine/dlls/ole32/Wine-0_9_4/stg_stream.c
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/storage32.c
Added: vendor/wine/dlls/ole32/Wine-0_9_4/storage32.c
Deleted: vendor/wine/dlls/ole32/Wine-0_9_4/storage32.h
Added: vendor/wine/dlls/ole32/Wine-0_9_4/storage32.h
Deleted: vendor/wine/dlls/oleacc/Wine-0_9_3/
Added: vendor/wine/dlls/oleacc/Wine-0_9_4/
Deleted: vendor/wine/dlls/oleaut32/Wine-0_9_3/
Added: vendor/wine/dlls/oleaut32/Wine-0_9_4/
Deleted: vendor/wine/dlls/oleaut32/Wine-0_9_4/oleaut.c
Added: vendor/wine/dlls/oleaut32/Wine-0_9_4/oleaut.c
Deleted: vendor/wine/dlls/oleaut32/Wine-0_9_4/safearray.c
Added: vendor/wine/dlls/oleaut32/Wine-0_9_4/safearray.c
Deleted: vendor/wine/dlls/oleaut32/Wine-0_9_4/typelib.c
Added: vendor/wine/dlls/oleaut32/Wine-0_9_4/typelib.c
Deleted: vendor/wine/dlls/oledlg/Wine-0_9_3/
Added: vendor/wine/dlls/oledlg/Wine-0_9_4/
Deleted: vendor/wine/dlls/olepro32/Wine-0_9_3/
Added: vendor/wine/dlls/olepro32/Wine-0_9_4/
Deleted: vendor/wine/dlls/riched20/Wine-0_9_3/
Added: vendor/wine/dlls/riched20/Wine-0_9_4/
Deleted: vendor/wine/dlls/riched20/Wine-0_9_4/editor.c
Added: vendor/wine/dlls/riched20/Wine-0_9_4/editor.c
Deleted: vendor/wine/dlls/richedit/Wine-0_9_3/
Added: vendor/wine/dlls/richedit/Wine-0_9_4/
Deleted: vendor/wine/dlls/rpcrt4/Wine-0_9_3/
Added: vendor/wine/dlls/rpcrt4/Wine-0_9_4/
Deleted: vendor/wine/dlls/shdocvw/Wine-0_9_3/
Added: vendor/wine/dlls/shdocvw/Wine-0_9_4/
Deleted: vendor/wine/dlls/shell32/Wine-0_9_3/
Added: vendor/wine/dlls/shell32/Wine-0_9_4/
Deleted: vendor/wine/dlls/shell32/Wine-0_9_4/shellpath.c
Added: vendor/wine/dlls/shell32/Wine-0_9_4/shellpath.c
[truncated at 100 lines; 44 more skipped]
Copied: vendor/wine/dlls/avifil32/Wine-0_9_4 (from rev 20338, vendor/wine/dlls/avifil32/current)

Copied: vendor/wine/dlls/cabinet/Wine-0_9_4 (from rev 20338, vendor/wine/dlls/cabinet/current)

Copied: vendor/wine/dlls/comctl32/Wine-0_9_4 (from rev 20338, vendor/wine/dlls/comctl32/current)

Deleted: vendor/wine/dlls/comctl32/Wine-0_9_4/tooltips.c
--- vendor/wine/dlls/comctl32/current/tooltips.c	2005-12-26 20:14:24 UTC (rev 20338)
+++ vendor/wine/dlls/comctl32/Wine-0_9_4/tooltips.c	2005-12-26 23:34:26 UTC (rev 20356)
@@ -1,2840 +0,0 @@
-/*
- * Tool tip control
- *
- * Copyright 1998, 1999 Eric Kohl
- * Copyright 2004 Robert Shearman
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- * NOTES
- *
- * This code was audited for completeness against the documented features
- * of Comctl32.dll version 6.0 on Sep. 08, 2004, by Robert Shearman.
- * 
- * Unless otherwise noted, we believe this code to be complete, as per
- * the specification mentioned above.
- * If you discover missing features or bugs please note them below.
- * 
- * TODO:
- *   - Custom draw support.
- *   - Animation.
- *   - Links.
- *   - Messages:
- *     o TTM_ADJUSTRECT
- *     o TTM_GETTITLEA
- *     o TTM_GETTTILEW
- *     o TTM_POPUP
- *   - Styles:
- *     o TTS_NOANIMATE
- *     o TTS_NOFADE
- *     o TTS_CLOSE
- *
- * Testing:
- *   - Run tests using Waite Group Windows95 API Bible Volume 2.
- *     The second cdrom (chapter 3) contains executables activate.exe,
- *     curtool.exe, deltool.exe, enumtools.exe, getinfo.exe, getiptxt.exe,
- *     hittest.exe, needtext.exe, newrect.exe, updtext.exe and winfrpt.exe.
- *
- *   Timer logic.
- *
- * One important point to remember is that tools don't necessarily get
- * a WM_MOUSEMOVE once the cursor leaves the tool, an example is when
- * a tool sets TTF_IDISHWND (i.e. an entire window is a tool) because
- * here WM_MOUSEMOVEs only get sent when the cursor is inside the
- * client area.  Therefore the only reliable way to know that the
- * cursor has left a tool is to keep a timer running and check the
- * position every time it expires.  This is the role of timer
- * ID_TIMERLEAVE.
- *
- *
- * On entering a tool (detected in a relayed WM_MOUSEMOVE) we start
- * ID_TIMERSHOW, if this times out and we're still in the tool we show
- * the tip.  On showing a tip we start both ID_TIMERPOP and
- * ID_TIMERLEAVE.  On hiding a tooltip we kill ID_TIMERPOP.
- * ID_TIMERPOP is restarted on every relayed WM_MOUSEMOVE.  If
- * ID_TIMERPOP expires the tool is hidden and ID_TIMERPOP is killed.
- * ID_TIMERLEAVE remains running - this is important as we need to
- * determine when the cursor leaves the tool.
- *
- * When ID_TIMERLEAVE expires or on a relayed WM_MOUSEMOVE if we're
- * still in the tool do nothing (apart from restart ID_TIMERPOP if
- * this is a WM_MOUSEMOVE) (ID_TIMERLEAVE remains running).  If we've
- * left the tool and entered another one then hide the tip and start
- * ID_TIMERSHOW with time ReshowTime and kill ID_TIMERLEAVE.  If we're
- * outside all tools hide the tip and kill ID_TIMERLEAVE.  On Relayed
- * mouse button messages hide the tip but leave ID_TIMERLEAVE running,
- * this again will let us keep track of when the cursor leaves the
- * tool.
- *
- *
- * infoPtr->nTool is the tool the mouse was on on the last relayed MM
- * or timer expiry or -1 if the mouse was not on a tool.
- *
- * infoPtr->nCurrentTool is the tool for which the tip is currently
- * displaying text for or -1 if the tip is not shown.  Actually this
- * will only ever be infoPtr-nTool or -1, so it could be changed to a
- * BOOL.
- *
- */
-
-
-
-#include <stdarg.h>
-#include <string.h>
-
-#include "windef.h"
-#include "winbase.h"
-#include "wine/unicode.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winnls.h"
-#include "commctrl.h"
-#include "comctl32.h"
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(tooltips);
-
-static HICON hTooltipIcons[TTI_ERROR+1];
-
-typedef struct
-{
-    UINT      uFlags;
-    HWND      hwnd;
-    BOOL      bNotifyUnicode;
-    UINT_PTR  uId;
-    RECT      rect;
-    HINSTANCE hinst;
-    LPWSTR      lpszText;
-    LPARAM      lParam;
-} TTTOOL_INFO;
-
-
-typedef struct
-{
-    WCHAR      szTipText[INFOTIPSIZE];
-    BOOL     bActive;
-    BOOL     bTrackActive;
-    UINT     uNumTools;
-    COLORREF   clrBk;
-    COLORREF   clrText;
-    HFONT    hFont;
-    HFONT    hTitleFont;
-    INT      xTrackPos;
-    INT      yTrackPos;
-    INT      nMaxTipWidth;
-    INT      nTool; /* tool that mouse was on on last relayed mouse move */
-    INT      nCurrentTool;
-    INT      nTrackTool;
-    INT      nReshowTime;
-    INT      nAutoPopTime;
-    INT      nInitialTime;
-    RECT     rcMargin;
-    BOOL     bToolBelow;
-    LPWSTR   pszTitle;
-    HICON    hTitleIcon;
-
-    TTTOOL_INFO *tools;
-} TOOLTIPS_INFO;
-
-#define ID_TIMERSHOW   1    /* show delay timer */
-#define ID_TIMERPOP    2    /* auto pop timer */
-#define ID_TIMERLEAVE  3    /* tool leave timer */
-
-
-#define TOOLTIPS_GetInfoPtr(hWindow) ((TOOLTIPS_INFO *)GetWindowLongPtrW (hWindow, 0))
-
-/* offsets from window edge to start of text */
-#define NORMAL_TEXT_MARGIN 2
-#define BALLOON_TEXT_MARGIN (NORMAL_TEXT_MARGIN+8)
-/* value used for CreateRoundRectRgn that specifies how much
- * each corner is curved */
-#define BALLOON_ROUNDEDNESS 20
-#define BALLOON_STEMHEIGHT 13
-#define BALLOON_STEMWIDTH 10
-#define BALLOON_STEMINDENT 20
-
-#define BALLOON_ICON_TITLE_SPACING 8 /* horizontal spacing between icon and title */
-#define BALLOON_TITLE_TEXT_SPACING 8 /* vertical spacing between icon/title and main text */
-#define ICON_HEIGHT 16
-#define ICON_WIDTH  16
-
-static LRESULT CALLBACK
-TOOLTIPS_SubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uId, DWORD_PTR dwRef);
-
-
-inline static UINT_PTR
-TOOLTIPS_GetTitleIconIndex(HICON hIcon)
-{
-    UINT i;
-    for (i = 0; i <= TTI_ERROR; i++)
-        if (hTooltipIcons[i] == hIcon)
-            return i;
-    return (UINT_PTR)hIcon;
-}
-
-static void
-TOOLTIPS_InitSystemSettings (TOOLTIPS_INFO *infoPtr)
-{
-    NONCLIENTMETRICSW nclm;
-
-    infoPtr->clrBk   = GetSysColor (COLOR_INFOBK);
-    infoPtr->clrText = GetSysColor (COLOR_INFOTEXT);
-
-    DeleteObject (infoPtr->hFont);
-    nclm.cbSize = sizeof(nclm);
-    SystemParametersInfoW (SPI_GETNONCLIENTMETRICS, sizeof(nclm), &nclm, 0);
-    infoPtr->hFont = CreateFontIndirectW (&nclm.lfStatusFont);
-
-    DeleteObject (infoPtr->hTitleFont);
-    nclm.lfStatusFont.lfWeight = FW_BOLD;
-    infoPtr->hTitleFont = CreateFontIndirectW (&nclm.lfStatusFont);
-}
-
-static void
-TOOLTIPS_Refresh (HWND hwnd, HDC hdc)
-{
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(hwnd);
-    RECT rc;
-    INT oldBkMode;
-    HFONT hOldFont;
-    HBRUSH hBrush;
-    UINT uFlags = DT_EXTERNALLEADING;
-    HRGN hRgn = NULL;
-    DWORD dwStyle = GetWindowLongW(hwnd, GWL_STYLE);
-
-    if (infoPtr->nMaxTipWidth > -1)
-	uFlags |= DT_WORDBREAK;
-    if (GetWindowLongW (hwnd, GWL_STYLE) & TTS_NOPREFIX)
-	uFlags |= DT_NOPREFIX;
-    GetClientRect (hwnd, &rc);
-
-    hBrush = CreateSolidBrush(infoPtr->clrBk);
-
-    oldBkMode = SetBkMode (hdc, TRANSPARENT);
-    SetTextColor (hdc, infoPtr->clrText);
-
-    if (dwStyle & TTS_BALLOON)
-    {
-        /* create a region to store result into */
-        hRgn = CreateRectRgn(0, 0, 0, 0);
-
-        GetWindowRgn(hwnd, hRgn);
-
-        /* fill the background */
-        FillRgn(hdc, hRgn, hBrush);
-        DeleteObject(hBrush);
-        hBrush = NULL;
-    }
-    else
-    {
-        /* fill the background */
-        FillRect(hdc, &rc, hBrush);
-        DeleteObject(hBrush);
-        hBrush = NULL;
-    }
-
-    if ((dwStyle & TTS_BALLOON) || infoPtr->pszTitle)
-    {
-        /* calculate text rectangle */
-        rc.left   += (BALLOON_TEXT_MARGIN + infoPtr->rcMargin.left);
-        rc.top    += (BALLOON_TEXT_MARGIN + infoPtr->rcMargin.top);
-        rc.right  -= (BALLOON_TEXT_MARGIN + infoPtr->rcMargin.right);
-        rc.bottom -= (BALLOON_TEXT_MARGIN + infoPtr->rcMargin.bottom);
-        if(infoPtr->bToolBelow) rc.top += BALLOON_STEMHEIGHT;
-
-        if (infoPtr->pszTitle)
-        {
-            RECT rcTitle = {rc.left, rc.top, rc.right, rc.bottom};
-            int height;
-            BOOL icon_present;
-
-            /* draw icon */
-            icon_present = infoPtr->hTitleIcon && 
-                DrawIconEx(hdc, rc.left, rc.top, infoPtr->hTitleIcon,
-                           ICON_WIDTH, ICON_HEIGHT, 0, NULL, DI_NORMAL);
-            if (icon_present)
-                rcTitle.left += ICON_WIDTH + BALLOON_ICON_TITLE_SPACING;
-
-            rcTitle.bottom = rc.top + ICON_HEIGHT;
-
-            /* draw title text */
-            hOldFont = SelectObject (hdc, infoPtr->hTitleFont);
-            height = DrawTextW(hdc, infoPtr->pszTitle, -1, &rcTitle, DT_BOTTOM | DT_SINGLELINE | DT_NOPREFIX);
-            SelectObject (hdc, hOldFont);
-            rc.top += height + BALLOON_TITLE_TEXT_SPACING;
-        }
-    }
-    else
-    {
-        /* calculate text rectangle */
-        rc.left   += (NORMAL_TEXT_MARGIN + infoPtr->rcMargin.left);
-        rc.top    += (NORMAL_TEXT_MARGIN + infoPtr->rcMargin.top);
-        rc.right  -= (NORMAL_TEXT_MARGIN + infoPtr->rcMargin.right);
-        rc.bottom -= (NORMAL_TEXT_MARGIN + infoPtr->rcMargin.bottom);
-    }
-
-    /* draw text */
-    hOldFont = SelectObject (hdc, infoPtr->hFont);
-    DrawTextW (hdc, infoPtr->szTipText, -1, &rc, uFlags);
-    /* be polite and reset the things we changed in the dc */
-    SelectObject (hdc, hOldFont);
-    SetBkMode (hdc, oldBkMode);
-
-    if (dwStyle & TTS_BALLOON)
-    {
-        /* frame region because default window proc doesn't do it */
-        INT width = GetSystemMetrics(SM_CXDLGFRAME) - GetSystemMetrics(SM_CXEDGE);
-        INT height = GetSystemMetrics(SM_CYDLGFRAME) - GetSystemMetrics(SM_CYEDGE);
-
-        hBrush = GetSysColorBrush(COLOR_WINDOWFRAME);
-        FrameRgn(hdc, hRgn, hBrush, width, height);
-    }
-
-    if (hRgn)
-        DeleteObject(hRgn);
-}
-
-static void TOOLTIPS_GetDispInfoA(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO *toolPtr)
-{
-    NMTTDISPINFOA ttnmdi;
-
-    /* fill NMHDR struct */
-    ZeroMemory (&ttnmdi, sizeof(NMTTDISPINFOA));
-    ttnmdi.hdr.hwndFrom = hwnd;
-    ttnmdi.hdr.idFrom = toolPtr->uId;
-    ttnmdi.hdr.code = TTN_GETDISPINFOA;
-    ttnmdi.lpszText = (LPSTR)&ttnmdi.szText;
-    ttnmdi.uFlags = toolPtr->uFlags;
-    ttnmdi.lParam = toolPtr->lParam;
-
-    TRACE("hdr.idFrom = %x\n", ttnmdi.hdr.idFrom);
-    SendMessageW(toolPtr->hwnd, WM_NOTIFY,
-                 (WPARAM)toolPtr->uId, (LPARAM)&ttnmdi);
-
-    if (IS_INTRESOURCE(ttnmdi.lpszText)) {
-        LoadStringW(ttnmdi.hinst, LOWORD(ttnmdi.lpszText),
-               infoPtr->szTipText, INFOTIPSIZE);
-        if (ttnmdi.uFlags & TTF_DI_SETITEM) {
-            toolPtr->hinst = ttnmdi.hinst;
-            toolPtr->lpszText = (LPWSTR)ttnmdi.lpszText;
-        }
-    }
-    else if (ttnmdi.lpszText == 0) {
-        /* no text available */
-        infoPtr->szTipText[0] = '\0';
-    }
-    else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKA) {
-        INT max_len = (ttnmdi.lpszText == &ttnmdi.szText[0]) ? 
-                sizeof(ttnmdi.szText)/sizeof(ttnmdi.szText[0]) : -1;
-        MultiByteToWideChar(CP_ACP, 0, ttnmdi.lpszText, max_len,
-                            infoPtr->szTipText, INFOTIPSIZE);
-        if (ttnmdi.uFlags & TTF_DI_SETITEM) {
-            INT len = MultiByteToWideChar(CP_ACP, 0, ttnmdi.lpszText,
-					  max_len, NULL, 0);
-            toolPtr->hinst = 0;
-            toolPtr->lpszText =	Alloc (len * sizeof(WCHAR));
-            MultiByteToWideChar(CP_ACP, 0, ttnmdi.lpszText, -1,
-                                toolPtr->lpszText, len);
-        }
-    }
-    else {
-        ERR("recursive text callback!\n");
-        infoPtr->szTipText[0] = '\0';
-    }
-}
-
-static void TOOLTIPS_GetDispInfoW(HWND hwnd, TOOLTIPS_INFO *infoPtr, TTTOOL_INFO *toolPtr)
-{
-    NMTTDISPINFOW ttnmdi;
-
-    /* fill NMHDR struct */
-    ZeroMemory (&ttnmdi, sizeof(NMTTDISPINFOW));
-    ttnmdi.hdr.hwndFrom = hwnd;
-    ttnmdi.hdr.idFrom = toolPtr->uId;
-    ttnmdi.hdr.code = TTN_GETDISPINFOW;
-    ttnmdi.lpszText = (LPWSTR)&ttnmdi.szText;
-    ttnmdi.uFlags = toolPtr->uFlags;
-    ttnmdi.lParam = toolPtr->lParam;
-
-    TRACE("hdr.idFrom = %x\n", ttnmdi.hdr.idFrom);
-    SendMessageW(toolPtr->hwnd, WM_NOTIFY,
-                 (WPARAM)toolPtr->uId, (LPARAM)&ttnmdi);
-
-    if (IS_INTRESOURCE(ttnmdi.lpszText)) {
-        LoadStringW(ttnmdi.hinst, LOWORD(ttnmdi.lpszText),
-               infoPtr->szTipText, INFOTIPSIZE);
-        if (ttnmdi.uFlags & TTF_DI_SETITEM) {
-            toolPtr->hinst = ttnmdi.hinst;
-            toolPtr->lpszText = ttnmdi.lpszText;
-        }
-    }
-    else if (ttnmdi.lpszText == 0) {
-        /* no text available */
-        infoPtr->szTipText[0] = '\0';
-    }
-    else if (ttnmdi.lpszText != LPSTR_TEXTCALLBACKW) {
-        INT max_len = (ttnmdi.lpszText == &ttnmdi.szText[0]) ? 
-                sizeof(ttnmdi.szText)/sizeof(ttnmdi.szText[0]) : INFOTIPSIZE-1;
-        lstrcpynW(infoPtr->szTipText, ttnmdi.lpszText, max_len);
-        if (ttnmdi.uFlags & TTF_DI_SETITEM) {
-            INT len = max(strlenW(ttnmdi.lpszText), max_len);
-            toolPtr->hinst = 0;
-            toolPtr->lpszText =	Alloc ((len+1) * sizeof(WCHAR));
-            memcpy(toolPtr->lpszText, ttnmdi.lpszText, (len+1) * sizeof(WCHAR));
-        }
-    }
-    else {
-        ERR("recursive text callback!\n");
-        infoPtr->szTipText[0] = '\0';
-    }
-}
-
-static void
-TOOLTIPS_GetTipText (HWND hwnd, TOOLTIPS_INFO *infoPtr, INT nTool)
-{
-    TTTOOL_INFO *toolPtr = &infoPtr->tools[nTool];
-
-    if (IS_INTRESOURCE(toolPtr->lpszText) && toolPtr->hinst) {
-	/* load a resource */
-	TRACE("load res string %p %x\n",
-	       toolPtr->hinst, LOWORD(toolPtr->lpszText));
-	LoadStringW (toolPtr->hinst, LOWORD(toolPtr->lpszText),
-		       infoPtr->szTipText, INFOTIPSIZE);
-    }
-    else if (toolPtr->lpszText) {
-	if (toolPtr->lpszText == LPSTR_TEXTCALLBACKW) {
-	    if (toolPtr->bNotifyUnicode)
-		TOOLTIPS_GetDispInfoW(hwnd, infoPtr, toolPtr);
-	    else
-		TOOLTIPS_GetDispInfoA(hwnd, infoPtr, toolPtr);
-	}
-	else {
-	    /* the item is a usual (unicode) text */
-	    lstrcpynW (infoPtr->szTipText, toolPtr->lpszText, INFOTIPSIZE);
-	}
-    }
-    else {
-	/* no text available */
-	infoPtr->szTipText[0] = L'\0';
-    }
-
-    TRACE("%s\n", debugstr_w(infoPtr->szTipText));
-}
-
-
-static void
-TOOLTIPS_CalcTipSize (HWND hwnd, TOOLTIPS_INFO *infoPtr, LPSIZE lpSize)
-{
-    HDC hdc;
-    HFONT hOldFont;
-    DWORD style = GetWindowLongW(hwnd, GWL_STYLE);
-    UINT uFlags = DT_EXTERNALLEADING | DT_CALCRECT;
-    RECT rc = {0, 0, 0, 0};
-    SIZE title = {0, 0};
-
-    if (infoPtr->nMaxTipWidth > -1) {
-	rc.right = infoPtr->nMaxTipWidth;
-	uFlags |= DT_WORDBREAK;
-    }
-    if (style & TTS_NOPREFIX)
-	uFlags |= DT_NOPREFIX;
-    TRACE("%s\n", debugstr_w(infoPtr->szTipText));
-
-    hdc = GetDC (hwnd);
-    if (infoPtr->pszTitle)
-    {
-        RECT rcTitle = {0, 0, 0, 0};
-        TRACE("title %s\n", debugstr_w(infoPtr->pszTitle));
-        if (infoPtr->hTitleIcon)
-        {
-            title.cx = ICON_WIDTH;
-            title.cy = ICON_HEIGHT;
-        }
-        if (title.cx != 0) title.cx += BALLOON_ICON_TITLE_SPACING;
-        hOldFont = SelectObject (hdc, infoPtr->hTitleFont);
-        DrawTextW(hdc, infoPtr->pszTitle, -1, &rcTitle, DT_SINGLELINE | DT_NOPREFIX | DT_CALCRECT);
-        SelectObject (hdc, hOldFont);
-        title.cy = max(title.cy, rcTitle.bottom - rcTitle.top) + BALLOON_TITLE_TEXT_SPACING;
-        title.cx += (rcTitle.right - rcTitle.left);
-    }
-    hOldFont = SelectObject (hdc, infoPtr->hFont);
-    DrawTextW (hdc, infoPtr->szTipText, -1, &rc, uFlags);
-    SelectObject (hdc, hOldFont);
-    ReleaseDC (hwnd, hdc);
-
-    if ((style & TTS_BALLOON) || infoPtr->pszTitle)
-    {
-        lpSize->cx = max(rc.right - rc.left, title.cx) + 2*BALLOON_TEXT_MARGIN +
-                       infoPtr->rcMargin.left + infoPtr->rcMargin.right;
-        lpSize->cy = title.cy + rc.bottom - rc.top + 2*BALLOON_TEXT_MARGIN +
-                       infoPtr->rcMargin.bottom + infoPtr->rcMargin.top +
-                       BALLOON_STEMHEIGHT;
-    }
-    else
-    {
-        lpSize->cx = rc.right - rc.left + 2*NORMAL_TEXT_MARGIN +
-                       infoPtr->rcMargin.left + infoPtr->rcMargin.right;
-        lpSize->cy = rc.bottom - rc.top + 2*NORMAL_TEXT_MARGIN +
-                       infoPtr->rcMargin.bottom + infoPtr->rcMargin.top;
-    }
-}
-
-
-static void
-TOOLTIPS_Show (HWND hwnd, TOOLTIPS_INFO *infoPtr)
-{
-    TTTOOL_INFO *toolPtr;
-    RECT rect, wndrect;
-    SIZE size;
-    NMHDR  hdr;
-    int ptfx = 0;
-    DWORD style = GetWindowLongW(hwnd, GWL_STYLE);
-
-    if (infoPtr->nTool == -1) {
-	TRACE("invalid tool (-1)!\n");
-	return;
-    }
-
-    infoPtr->nCurrentTool = infoPtr->nTool;
-
-    TRACE("Show tooltip pre %d! (%p)\n", infoPtr->nTool, hwnd);
-
-    TOOLTIPS_GetTipText (hwnd, infoPtr, infoPtr->nCurrentTool);
-
-    if (infoPtr->szTipText[0] == L'\0') {
-	infoPtr->nCurrentTool = -1;
-	return;
-    }
-
-    TRACE("Show tooltip %d!\n", infoPtr->nCurrentTool);
-    toolPtr = &infoPtr->tools[infoPtr->nCurrentTool];
-
-    hdr.hwndFrom = hwnd;
-    hdr.idFrom = toolPtr->uId;
-    hdr.code = TTN_SHOW;
-    SendMessageW (toolPtr->hwnd, WM_NOTIFY,
-		    (WPARAM)toolPtr->uId, (LPARAM)&hdr);
-
-    TRACE("%s\n", debugstr_w(infoPtr->szTipText));
-
-    TOOLTIPS_CalcTipSize (hwnd, infoPtr, &size);
-    TRACE("size %ld x %ld\n", size.cx, size.cy);
-
-    if (toolPtr->uFlags & TTF_CENTERTIP) {
-	RECT rc;
-
-	if (toolPtr->uFlags & TTF_IDISHWND)
-	    GetWindowRect ((HWND)toolPtr->uId, &rc);
-	else {
-	    rc = toolPtr->rect;
-	    MapWindowPoints (toolPtr->hwnd, NULL, (LPPOINT)&rc, 2);
-	}
-	rect.left = (rc.left + rc.right - size.cx) / 2;
-	if (style & TTS_BALLOON)
-	{
-          ptfx = rc.left + ((rc.right - rc.left) / 2);
-          if(rect.top - size.cy >= 0)
-          {
-            rect.top -= size.cy;
-            infoPtr->bToolBelow = FALSE;
-          }
-          else
-          {
-            infoPtr->bToolBelow = TRUE;
-            rect.top += 20;
-          }
-          rect.left = max(0, rect.left - BALLOON_STEMINDENT);
-        }
-        else
-        {
-          rect.top  = rc.bottom + 2;
-          infoPtr->bToolBelow = TRUE;
-        }
-    }
-    else {
-	GetCursorPos ((LPPOINT)&rect);
-	if (style & TTS_BALLOON)
-	{
-            ptfx = rect.left;
-            if(rect.top - size.cy >= 0)
-            {
-              rect.top -= size.cy;
-              infoPtr->bToolBelow = FALSE;
-            }
-            else
-            {
-              infoPtr->bToolBelow = TRUE;
-              rect.top += 20;
-            }
-            rect.left = max(0, rect.left - BALLOON_STEMINDENT);
-        }
-        else
-        {
-	    rect.top += 20;
-	    infoPtr->bToolBelow = TRUE;
-        }
-    }
-
-    TRACE("pos %ld - %ld\n", rect.left, rect.top);
-
-    rect.right = rect.left + size.cx;
-    rect.bottom = rect.top + size.cy;
-
-    /* check position */
-    wndrect.right = GetSystemMetrics( SM_CXSCREEN );
-    if( rect.right > wndrect.right ) {
-	   rect.left -= rect.right - wndrect.right + 2;
-	   rect.right = wndrect.right - 2;
-    }
-    wndrect.bottom = GetSystemMetrics( SM_CYSCREEN );
-    if( rect.bottom > wndrect.bottom ) {
-        RECT rc;
-
-	if (toolPtr->uFlags & TTF_IDISHWND)
-	    GetWindowRect ((HWND)toolPtr->uId, &rc);
-	else {
-	    rc = toolPtr->rect;
-	    MapWindowPoints (toolPtr->hwnd, NULL, (LPPOINT)&rc, 2);
-	}
-	rect.bottom = rc.top - 2;
-    	rect.top = rect.bottom - size.cy;
-    }
-
-    AdjustWindowRectEx (&rect, GetWindowLongW (hwnd, GWL_STYLE),
-			FALSE, GetWindowLongW (hwnd, GWL_EXSTYLE));
-
-    if (style & TTS_BALLOON)
-    {
-        HRGN hRgn;
-        HRGN hrStem;
-        POINT pts[3];
-
-        ptfx -= rect.left;
-
-        if(infoPtr->bToolBelow)
-        {
-          pts[0].x = ptfx;
-          pts[0].y = 0;
-          pts[1].x = max(BALLOON_STEMINDENT, ptfx - (BALLOON_STEMWIDTH / 2));
-          pts[1].y = BALLOON_STEMHEIGHT;
-          pts[2].x = pts[1].x + BALLOON_STEMWIDTH;
-          pts[2].y = pts[1].y;
-          if(pts[2].x > (rect.right - rect.left) - BALLOON_STEMINDENT)
-          {
-            pts[2].x = (rect.right - rect.left) - BALLOON_STEMINDENT;
-            pts[1].x = pts[2].x - BALLOON_STEMWIDTH;
-          }
-        }
-        else
-        {
-          pts[0].x = max(BALLOON_STEMINDENT, ptfx - (BALLOON_STEMWIDTH / 2));
-          pts[0].y = (rect.bottom - rect.top) - BALLOON_STEMHEIGHT;
-          pts[1].x = pts[0].x + BALLOON_STEMWIDTH;
-          pts[1].y = pts[0].y;
-          pts[2].x = ptfx;
-          pts[2].y = (rect.bottom - rect.top);
-          if(pts[1].x > (rect.right - rect.left) - BALLOON_STEMINDENT)
-          {
-            pts[1].x = (rect.right - rect.left) - BALLOON_STEMINDENT;
-            pts[0].x = pts[1].x - BALLOON_STEMWIDTH;
-          }
-        }
-
-        hrStem = CreatePolygonRgn(pts, sizeof(pts) / sizeof(pts[0]), ALTERNATE);
-        
-        hRgn = CreateRoundRectRgn(0,
-                                  (infoPtr->bToolBelow ? BALLOON_STEMHEIGHT : 0),
-                                  rect.right - rect.left,
-                                  (infoPtr->bToolBelow ? rect.bottom - rect.top : rect.bottom - rect.top - BALLOON_STEMHEIGHT),
-                                  BALLOON_ROUNDEDNESS, BALLOON_ROUNDEDNESS);
-
-        CombineRgn(hRgn, hRgn, hrStem, RGN_OR);
-        DeleteObject(hrStem);
-
-        SetWindowRgn(hwnd, hRgn, FALSE);
-        /* we don't free the region handle as the system deletes it when 
-         * it is no longer needed */
-    }
-
-    SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top,
-		    rect.right - rect.left, rect.bottom - rect.top,
-		    SWP_SHOWWINDOW | SWP_NOACTIVATE);
-
-    /* repaint the tooltip */
-    InvalidateRect(hwnd, NULL, TRUE);
-    UpdateWindow(hwnd);
-
-    SetTimer (hwnd, ID_TIMERPOP, infoPtr->nAutoPopTime, 0);
-    TRACE("timer 2 started!\n");
-    SetTimer (hwnd, ID_TIMERLEAVE, infoPtr->nReshowTime, 0);
-    TRACE("timer 3 started!\n");
-}
-
-
-static void
-TOOLTIPS_Hide (HWND hwnd, TOOLTIPS_INFO *infoPtr)
-{
-    TTTOOL_INFO *toolPtr;
-    NMHDR hdr;
-
-    TRACE("Hide tooltip %d! (%p)\n", infoPtr->nCurrentTool, hwnd);
-
-    if (infoPtr->nCurrentTool == -1)
-	return;
-
-    toolPtr = &infoPtr->tools[infoPtr->nCurrentTool];
-    KillTimer (hwnd, ID_TIMERPOP);
-
-    hdr.hwndFrom = hwnd;
-    hdr.idFrom = toolPtr->uId;
-    hdr.code = TTN_POP;
-    SendMessageW (toolPtr->hwnd, WM_NOTIFY,
-		    (WPARAM)toolPtr->uId, (LPARAM)&hdr);
-
-    infoPtr->nCurrentTool = -1;
-
-    SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
-		    SWP_NOZORDER | SWP_HIDEWINDOW | SWP_NOACTIVATE);
-}
-
-
-static void
-TOOLTIPS_TrackShow (HWND hwnd, TOOLTIPS_INFO *infoPtr)
-{
-    TTTOOL_INFO *toolPtr;
-    RECT rect;
-    SIZE size;
-    NMHDR hdr;
-
-    if (infoPtr->nTrackTool == -1) {
-	TRACE("invalid tracking tool (-1)!\n");
-	return;
-    }
-
-    TRACE("show tracking tooltip pre %d!\n", infoPtr->nTrackTool);
-
-    TOOLTIPS_GetTipText (hwnd, infoPtr, infoPtr->nTrackTool);
-
-    if (infoPtr->szTipText[0] == L'\0') {
-	infoPtr->nTrackTool = -1;
-	return;
-    }
-
-    TRACE("show tracking tooltip %d!\n", infoPtr->nTrackTool);
-    toolPtr = &infoPtr->tools[infoPtr->nTrackTool];
-
-    hdr.hwndFrom = hwnd;
-    hdr.idFrom = toolPtr->uId;
-    hdr.code = TTN_SHOW;
-    SendMessageW (toolPtr->hwnd, WM_NOTIFY,
-		    (WPARAM)toolPtr->uId, (LPARAM)&hdr);
-
-    TRACE("%s\n", debugstr_w(infoPtr->szTipText));
-
-    TOOLTIPS_CalcTipSize (hwnd, infoPtr, &size);
-    TRACE("size %ld x %ld\n", size.cx, size.cy);
-
-    if (toolPtr->uFlags & TTF_ABSOLUTE) {
-	rect.left = infoPtr->xTrackPos;
-	rect.top  = infoPtr->yTrackPos;
-
-	if (toolPtr->uFlags & TTF_CENTERTIP) {
-	    rect.left -= (size.cx / 2);
-	    rect.top  -= (size.cy / 2);
-	}
-    }
-    else {
-	RECT rcTool;
-
-	if (toolPtr->uFlags & TTF_IDISHWND)
-	    GetWindowRect ((HWND)toolPtr->uId, &rcTool);
-	else {
-	    rcTool = toolPtr->rect;
-	    MapWindowPoints (toolPtr->hwnd, NULL, (LPPOINT)&rcTool, 2);
-	}
-
-	GetCursorPos ((LPPOINT)&rect);
-	rect.top += 20;
-
-	if (toolPtr->uFlags & TTF_CENTERTIP) {
-	    rect.left -= (size.cx / 2);
-	    rect.top  -= (size.cy / 2);
-	}
-
-	/* smart placement */
-	if ((rect.left + size.cx > rcTool.left) && (rect.left < rcTool.right) &&
-	    (rect.top + size.cy > rcTool.top) && (rect.top < rcTool.bottom))
-	    rect.left = rcTool.right;
-    }
-
-    TRACE("pos %ld - %ld\n", rect.left, rect.top);
-
-    rect.right = rect.left + size.cx;
-    rect.bottom = rect.top + size.cy;
-
-    AdjustWindowRectEx (&rect, GetWindowLongW (hwnd, GWL_STYLE),
-			FALSE, GetWindowLongW (hwnd, GWL_EXSTYLE));
-
-    if (GetWindowLongW(hwnd, GWL_STYLE) & TTS_BALLOON)
-    {
-        HRGN hRgn;
-
-        /* FIXME: need to add pointy bit using CreatePolyRgn & CombinRgn */
-        hRgn = CreateRoundRectRgn(0, 0, rect.right - rect.left, rect.bottom - rect.top, BALLOON_ROUNDEDNESS, BALLOON_ROUNDEDNESS);
-
-        SetWindowRgn(hwnd, hRgn, FALSE);
-        /* we don't free the region handle as the system deletes it when 
-         * it is no longer needed */
-    }
-
-    SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top,
-		    rect.right - rect.left, rect.bottom - rect.top,
-		    SWP_SHOWWINDOW | SWP_NOACTIVATE );
-
-    InvalidateRect(hwnd, NULL, TRUE);
-    UpdateWindow(hwnd);
-}
-
-
-static void
-TOOLTIPS_TrackHide (HWND hwnd, TOOLTIPS_INFO *infoPtr)
-{
-    TTTOOL_INFO *toolPtr;
-    NMHDR hdr;
-
-    TRACE("hide tracking tooltip %d\n", infoPtr->nTrackTool);
-
-    if (infoPtr->nTrackTool == -1)
-	return;
-
-    toolPtr = &infoPtr->tools[infoPtr->nTrackTool];
-
-    hdr.hwndFrom = hwnd;
-    hdr.idFrom = toolPtr->uId;
-    hdr.code = TTN_POP;
-    SendMessageW (toolPtr->hwnd, WM_NOTIFY,
-		    (WPARAM)toolPtr->uId, (LPARAM)&hdr);
-
-    SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
-		    SWP_NOZORDER | SWP_HIDEWINDOW | SWP_NOACTIVATE);
-}
-
-
-static INT
-TOOLTIPS_GetToolFromInfoA (TOOLTIPS_INFO *infoPtr, LPTTTOOLINFOA lpToolInfo)
-{
-    TTTOOL_INFO *toolPtr;
-    INT nTool;
-
-    for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
-	toolPtr = &infoPtr->tools[nTool];
-
-	if (!(toolPtr->uFlags & TTF_IDISHWND) &&
-	    (lpToolInfo->hwnd == toolPtr->hwnd) &&
-	    (lpToolInfo->uId == toolPtr->uId))
-	    return nTool;
-    }
-
-    for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
-	toolPtr = &infoPtr->tools[nTool];
-
-	if ((toolPtr->uFlags & TTF_IDISHWND) &&
-	    (lpToolInfo->uId == toolPtr->uId))
-	    return nTool;
-    }
-
-    return -1;
-}
-
-
-static INT
-TOOLTIPS_GetToolFromInfoW (TOOLTIPS_INFO *infoPtr, LPTTTOOLINFOW lpToolInfo)
-{
-    TTTOOL_INFO *toolPtr;
-    INT nTool;
-
-    for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
-	toolPtr = &infoPtr->tools[nTool];
-
-	if (!(toolPtr->uFlags & TTF_IDISHWND) &&
-	    (lpToolInfo->hwnd == toolPtr->hwnd) &&
-	    (lpToolInfo->uId == toolPtr->uId))
-	    return nTool;
-    }
-
-    for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
-	toolPtr = &infoPtr->tools[nTool];
-
-	if ((toolPtr->uFlags & TTF_IDISHWND) &&
-	    (lpToolInfo->uId == toolPtr->uId))
-	    return nTool;
-    }
-
-    return -1;
-}
-
-
-static INT
-TOOLTIPS_GetToolFromPoint (TOOLTIPS_INFO *infoPtr, HWND hwnd, LPPOINT lpPt)
-{
-    TTTOOL_INFO *toolPtr;
-    INT  nTool;
-
-    for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
-	toolPtr = &infoPtr->tools[nTool];
-
-	if (!(toolPtr->uFlags & TTF_IDISHWND)) {
-	    if (hwnd != toolPtr->hwnd)
-		continue;
-	    if (!PtInRect (&toolPtr->rect, *lpPt))
-		continue;
-	    return nTool;
-	}
-    }
-
-    for (nTool = 0; nTool < infoPtr->uNumTools; nTool++) {
-	toolPtr = &infoPtr->tools[nTool];
-
-	if (toolPtr->uFlags & TTF_IDISHWND) {
-	    if ((HWND)toolPtr->uId == hwnd)
-		return nTool;
-	}
-    }
-
-    return -1;
-}
-
-
-static BOOL
-TOOLTIPS_IsWindowActive (HWND hwnd)
-{
-    HWND hwndActive = GetActiveWindow ();
-    if (!hwndActive)
-	return FALSE;
-    if (hwndActive == hwnd)
-	return TRUE;
-    return IsChild (hwndActive, hwnd);
-}
-
-
-static INT
-TOOLTIPS_CheckTool (HWND hwnd, BOOL bShowTest)
-{
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
-    POINT pt;
-    HWND hwndTool;
-    INT nTool;
-
-    GetCursorPos (&pt);
-    hwndTool = (HWND)SendMessageW (hwnd, TTM_WINDOWFROMPOINT, 0, (LPARAM)&pt);
-    if (hwndTool == 0)
-	return -1;
-
-    ScreenToClient (hwndTool, &pt);
-    nTool = TOOLTIPS_GetToolFromPoint (infoPtr, hwndTool, &pt);
-    if (nTool == -1)
-	return -1;
-
-    if (!(GetWindowLongW (hwnd, GWL_STYLE) & TTS_ALWAYSTIP) && bShowTest) {
-	if (!TOOLTIPS_IsWindowActive (GetWindow (hwnd, GW_OWNER)))
-	    return -1;
-    }
-
-    TRACE("tool %d\n", nTool);
-
-    return nTool;
-}
-
-
-static LRESULT
-TOOLTIPS_Activate (HWND hwnd, WPARAM wParam, LPARAM lParam)
-{
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
-
-    infoPtr->bActive = (BOOL)wParam;
-
-    if (infoPtr->bActive)
-	TRACE("activate!\n");
-
-    if (!(infoPtr->bActive) && (infoPtr->nCurrentTool != -1))
-	TOOLTIPS_Hide (hwnd, infoPtr);
-
-    return 0;
-}
-
-
-static LRESULT
-TOOLTIPS_AddToolA (HWND hwnd, WPARAM wParam, LPARAM lParam)
-{
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
-    LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
-    TTTOOL_INFO *toolPtr;
-    INT nResult;
-
-    if (lpToolInfo == NULL)
-	return FALSE;
-    if (lpToolInfo->cbSize < TTTOOLINFOA_V1_SIZE)
-	return FALSE;
-
-    TRACE("add tool (%p) %p %d%s!\n",
-	   hwnd, lpToolInfo->hwnd, lpToolInfo->uId,
[truncated at 1000 lines; 58783 more skipped]