Ignore:
Timestamp:
Dec 26, 1999, 6:32:14 PM (26 years ago)
Author:
cbratschi
Message:

NC fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/comctl32/tooltips.c

    r1664 r2205  
    1 /* $Id: tooltips.c,v 1.17 1999-11-09 14:38:01 achimha Exp $ */
     1/* $Id: tooltips.c,v 1.18 1999-12-26 17:32:14 cbratschi Exp $ */
    22/*
    33 * Tool tip control
     
    1616 *     hittest.exe, needtext.exe, newrect.exe, updtext.exe and winfrpt.exe.
    1717 */
    18 
    19 /* CB: Odin32 problems
    20  - WM_NCCREATE not handled first -> title bar visible if WS_POPUP wasn't set before
    21  - CS_SAVEBITS: window movements are slow, bug in Open32?
    22 */
    2318
    2419/* WINE 991031 level */
     
    262257
    263258    if (infoPtr->nMaxTipWidth > -1) {
    264         rc.right = infoPtr->nMaxTipWidth;
    265         uFlags |= DT_WORDBREAK;
     259        rc.right = infoPtr->nMaxTipWidth;
     260        uFlags |= DT_WORDBREAK;
    266261    }
    267262    if (GetWindowLongA (hwnd, GWL_STYLE) & TTS_NOPREFIX)
    268         uFlags |= DT_NOPREFIX;
     263        uFlags |= DT_NOPREFIX;
    269264//    TRACE("\"%s\"\n", debugstr_w(infoPtr->szTipText));
    270265
     
    275270    ReleaseDC (hwnd, hdc);
    276271
    277     lpSize->cx = rc.right - rc.left + 4 + 
    278                 infoPtr->rcMargin.left + infoPtr->rcMargin.right;
     272    lpSize->cx = rc.right - rc.left + 4 +
     273                infoPtr->rcMargin.left + infoPtr->rcMargin.right;
    279274    lpSize->cy = rc.bottom - rc.top + 4 +
    280                 infoPtr->rcMargin.bottom + infoPtr->rcMargin.top;
     275                infoPtr->rcMargin.bottom + infoPtr->rcMargin.top;
    281276}
    282277
     
    291286
    292287    if (infoPtr->nTool == -1) {
    293 //      TRACE("invalid tool (-1)!\n");
    294         return;
     288//      TRACE("invalid tool (-1)!\n");
     289        return;
    295290    }
    296291
     
    302297
    303298    if (infoPtr->szTipText[0] == L'\0') {
    304         infoPtr->nCurrentTool = -1;
    305         return;
     299        infoPtr->nCurrentTool = -1;
     300        return;
    306301    }
    307302
     
    313308    hdr.code = TTN_SHOW;
    314309    SendMessageA (toolPtr->hwnd, WM_NOTIFY,
    315                     (WPARAM)toolPtr->uId, (LPARAM)&hdr);
     310                    (WPARAM)toolPtr->uId, (LPARAM)&hdr);
    316311
    317312//    TRACE("\"%s\"\n", debugstr_w(infoPtr->szTipText));
     
    321316
    322317    if (toolPtr->uFlags & TTF_CENTERTIP) {
    323         RECT rc;
    324 
    325         if (toolPtr->uFlags & TTF_IDISHWND)
    326             GetWindowRect ((HWND)toolPtr->uId, &rc);
    327         else {
    328             rc = toolPtr->rect;
    329             MapWindowPoints (toolPtr->hwnd, (HWND)0, (LPPOINT)&rc, 2);
    330         }
    331         rect.left = (rc.left + rc.right - size.cx) / 2;
    332         rect.top  = rc.bottom + 2;
     318        RECT rc;
     319
     320        if (toolPtr->uFlags & TTF_IDISHWND)
     321            GetWindowRect ((HWND)toolPtr->uId, &rc);
     322        else {
     323            rc = toolPtr->rect;
     324            MapWindowPoints (toolPtr->hwnd, (HWND)0, (LPPOINT)&rc, 2);
     325        }
     326        rect.left = (rc.left + rc.right - size.cx) / 2;
     327        rect.top  = rc.bottom + 2;
    333328    }
    334329    else {
    335         GetCursorPos ((LPPOINT)&rect);
    336         rect.top += 20;
     330        GetCursorPos ((LPPOINT)&rect);
     331        rect.top += 20;
    337332    }
    338333
     
    345340    wndrect.right = GetSystemMetrics( SM_CXSCREEN );
    346341    if( rect.right > wndrect.right ) {
    347            rect.left -= rect.right - wndrect.right + 2;
    348            rect.right = wndrect.right - 2;
     342           rect.left -= rect.right - wndrect.right + 2;
     343           rect.right = wndrect.right - 2;
    349344    }
    350345    wndrect.bottom = GetSystemMetrics( SM_CYSCREEN );
     
    352347        RECT rc;
    353348
    354         if (toolPtr->uFlags & TTF_IDISHWND)
    355             GetWindowRect ((HWND)toolPtr->uId, &rc);
    356         else {
    357             rc = toolPtr->rect;
    358             MapWindowPoints (toolPtr->hwnd, (HWND)0, (LPPOINT)&rc, 2);
    359         }   
    360         rect.bottom = rc.top - 2;
    361         rect.top = rect.bottom - size.cy;
     349        if (toolPtr->uFlags & TTF_IDISHWND)
     350            GetWindowRect ((HWND)toolPtr->uId, &rc);
     351        else {
     352            rc = toolPtr->rect;
     353            MapWindowPoints (toolPtr->hwnd, (HWND)0, (LPPOINT)&rc, 2);
     354        }
     355        rect.bottom = rc.top - 2;
     356        rect.top = rect.bottom - size.cy;
    362357    }
    363358
    364359    AdjustWindowRectEx (&rect, GetWindowLongA (hwnd, GWL_STYLE),
    365                         FALSE, GetWindowLongA (hwnd, GWL_EXSTYLE));
     360                        FALSE, GetWindowLongA (hwnd, GWL_EXSTYLE));
    366361
    367362    SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top,
    368                     rect.right - rect.left, rect.bottom - rect.top,
    369                     SWP_SHOWWINDOW | SWP_NOACTIVATE);
     363                    rect.right - rect.left, rect.bottom - rect.top,
     364                    SWP_SHOWWINDOW | SWP_NOACTIVATE);
    370365
    371366    /* repaint the tooltip */
     
    909904    toolPtr = &infoPtr->tools[nTool];
    910905    if ((toolPtr->hinst) && (toolPtr->lpszText)) {
    911         if ( (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) &&
    912              (HIWORD((INT)toolPtr->lpszText) != 0) )
     906        if ( (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) &&
     907             (HIWORD((INT)toolPtr->lpszText) != 0) )
    913908            COMCTL32_Free (toolPtr->lpszText);
    914909    }
     
    967962    toolPtr = &infoPtr->tools[nTool];
    968963    if ((toolPtr->hinst) && (toolPtr->lpszText)) {
    969         if ( (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) &&
    970              (HIWORD((INT)toolPtr->lpszText) != 0) )
     964        if ( (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) &&
     965             (HIWORD((INT)toolPtr->lpszText) != 0) )
    971966            COMCTL32_Free (toolPtr->lpszText);
    972967    }
     
    16501645            toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
    16511646        else {
    1652             if ( (toolPtr->lpszText) &&
    1653                 (HIWORD((INT)toolPtr->lpszText) != 0) ) {
     1647            if ( (toolPtr->lpszText) &&
     1648                (HIWORD((INT)toolPtr->lpszText) != 0) ) {
    16541649                COMCTL32_Free (toolPtr->lpszText);
    16551650                toolPtr->lpszText = NULL;
     
    17051700            toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
    17061701        else {
    1707             if ( (toolPtr->lpszText) &&
    1708                 (HIWORD((INT)toolPtr->lpszText) != 0) ) {
     1702            if ( (toolPtr->lpszText) &&
     1703                (HIWORD((INT)toolPtr->lpszText) != 0) ) {
    17091704                COMCTL32_Free (toolPtr->lpszText);
    17101705                toolPtr->lpszText = NULL;
     
    17981793
    17991794    if (lpToolInfo == NULL)
    1800         return 0;
     1795        return 0;
    18011796    if (lpToolInfo->cbSize < TTTOOLINFO_V1_SIZEA)
    1802         return FALSE;
     1797        return FALSE;
    18031798
    18041799    nTool = TOOLTIPS_GetToolFromInfoA (infoPtr, lpToolInfo);
     
    18131808
    18141809    if ((lpToolInfo->hinst) && (HIWORD((INT)lpToolInfo->lpszText) == 0)){
    1815         toolPtr->lpszText = (LPWSTR)lpToolInfo->lpszText;
     1810        toolPtr->lpszText = (LPWSTR)lpToolInfo->lpszText;
    18161811    }
    18171812    else if (lpToolInfo->lpszText) {
    1818         if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACKA)
    1819             toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
    1820         else {
    1821             if ( (toolPtr->lpszText) &&
    1822                 (HIWORD((INT)toolPtr->lpszText) != 0) ) {
    1823                 COMCTL32_Free (toolPtr->lpszText);
    1824                 toolPtr->lpszText = NULL;
    1825             }
    1826             if (lpToolInfo->lpszText) {
    1827                 INT len = lstrlenA (lpToolInfo->lpszText);
    1828                 toolPtr->lpszText = COMCTL32_Alloc ((len+1)*sizeof(WCHAR));
    1829                 lstrcpyAtoW (toolPtr->lpszText, lpToolInfo->lpszText);
    1830             }
    1831         }
     1813        if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACKA)
     1814            toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
     1815        else {
     1816            if ( (toolPtr->lpszText) &&
     1817                (HIWORD((INT)toolPtr->lpszText) != 0) ) {
     1818                COMCTL32_Free (toolPtr->lpszText);
     1819                toolPtr->lpszText = NULL;
     1820            }
     1821            if (lpToolInfo->lpszText) {
     1822                INT len = lstrlenA (lpToolInfo->lpszText);
     1823                toolPtr->lpszText = COMCTL32_Alloc ((len+1)*sizeof(WCHAR));
     1824                lstrcpyAtoW (toolPtr->lpszText, lpToolInfo->lpszText);
     1825            }
     1826        }
    18321827    }
    18331828
    18341829    /* force repaint */
    18351830    if (infoPtr->bActive)
    1836         TOOLTIPS_Show (hwnd, infoPtr);
     1831        TOOLTIPS_Show (hwnd, infoPtr);
    18371832    else if (infoPtr->bTrackActive)
    1838         TOOLTIPS_TrackShow (hwnd, infoPtr);
     1833        TOOLTIPS_TrackShow (hwnd, infoPtr);
    18391834
    18401835    return 0;
     
    18511846
    18521847    if (lpToolInfo == NULL)
    1853         return 0;
     1848        return 0;
    18541849    if (lpToolInfo->cbSize < TTTOOLINFO_V1_SIZEW)
    1855         return FALSE;
     1850        return FALSE;
    18561851
    18571852    nTool = TOOLTIPS_GetToolFromInfoW (infoPtr, lpToolInfo);
    18581853    if (nTool == -1)
    1859         return 0;
     1854        return 0;
    18601855
    18611856//    TRACE("tool %d\n", nTool);
     
    18671862
    18681863    if ((lpToolInfo->hinst) && (HIWORD((INT)lpToolInfo->lpszText) == 0)){
    1869         toolPtr->lpszText = lpToolInfo->lpszText;
     1864        toolPtr->lpszText = lpToolInfo->lpszText;
    18701865    }
    18711866    else if (lpToolInfo->lpszText) {
    1872         if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACKW)
    1873             toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
    1874         else {
    1875             if ( (toolPtr->lpszText)  &&
    1876                 (HIWORD((INT)toolPtr->lpszText) != 0) ) {
    1877                 COMCTL32_Free (toolPtr->lpszText);
    1878                 toolPtr->lpszText = NULL;
    1879             }
    1880             if (lpToolInfo->lpszText) {
    1881                 INT len = lstrlenW (lpToolInfo->lpszText);
    1882                 toolPtr->lpszText = COMCTL32_Alloc ((len+1)*sizeof(WCHAR));
    1883                 lstrcpyW (toolPtr->lpszText, lpToolInfo->lpszText);
    1884             }
    1885         }
     1867        if (lpToolInfo->lpszText == LPSTR_TEXTCALLBACKW)
     1868            toolPtr->lpszText = LPSTR_TEXTCALLBACKW;
     1869        else {
     1870            if ( (toolPtr->lpszText)  &&
     1871                (HIWORD((INT)toolPtr->lpszText) != 0) ) {
     1872                COMCTL32_Free (toolPtr->lpszText);
     1873                toolPtr->lpszText = NULL;
     1874            }
     1875            if (lpToolInfo->lpszText) {
     1876                INT len = lstrlenW (lpToolInfo->lpszText);
     1877                toolPtr->lpszText = COMCTL32_Alloc ((len+1)*sizeof(WCHAR));
     1878                lstrcpyW (toolPtr->lpszText, lpToolInfo->lpszText);
     1879            }
     1880        }
    18861881    }
    18871882
    18881883    /* force repaint */
    18891884    if (infoPtr->bActive)
    1890         TOOLTIPS_Show (hwnd, infoPtr);
     1885        TOOLTIPS_Show (hwnd, infoPtr);
    18911886    else if (infoPtr->bTrackActive)
    1892         TOOLTIPS_TrackShow (hwnd, infoPtr);
     1887        TOOLTIPS_TrackShow (hwnd, infoPtr);
    18931888
    18941889    return 0;
     
    19641959    /* free tools */
    19651960    if (infoPtr->tools) {
    1966         for (i = 0; i < infoPtr->uNumTools; i++) {
    1967             toolPtr = &infoPtr->tools[i];
    1968             if ((toolPtr->hinst) && (toolPtr->lpszText)) {
    1969                 if ( (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) &&
    1970                      (HIWORD((INT)toolPtr->lpszText) != 0) )
    1971                 {
    1972                     COMCTL32_Free (toolPtr->lpszText);
    1973                     toolPtr->lpszText = NULL;
    1974                 }
    1975             }
    1976 
    1977             /* remove subclassing */
    1978             if (toolPtr->uFlags & TTF_SUBCLASS) {
    1979                 LPTT_SUBCLASS_INFO lpttsi;
    1980 
    1981                 if (toolPtr->uFlags & TTF_IDISHWND)
    1982                     lpttsi = (LPTT_SUBCLASS_INFO)GetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass);
    1983                 else
    1984                     lpttsi = (LPTT_SUBCLASS_INFO)GetPropA (toolPtr->hwnd, COMCTL32_aSubclass);
    1985 
    1986                 if (lpttsi) {
    1987                     SetWindowLongA ((HWND)toolPtr->uId, GWL_WNDPROC,
    1988                                       (LONG)lpttsi->wpOrigProc);
    1989                     RemovePropA ((HWND)toolPtr->uId, COMCTL32_aSubclass);
    1990                     COMCTL32_Free (&lpttsi);
    1991                 }
    1992             }
     1961        for (i = 0; i < infoPtr->uNumTools; i++) {
     1962            toolPtr = &infoPtr->tools[i];
     1963            if ((toolPtr->hinst) && (toolPtr->lpszText)) {
     1964                if ( (toolPtr->lpszText != LPSTR_TEXTCALLBACKW) &&
     1965                     (HIWORD((INT)toolPtr->lpszText) != 0) )
     1966                {
     1967                    COMCTL32_Free (toolPtr->lpszText);
     1968                    toolPtr->lpszText = NULL;
     1969                }
     1970            }
     1971
     1972            /* remove subclassing */
     1973            if (toolPtr->uFlags & TTF_SUBCLASS) {
     1974                LPTT_SUBCLASS_INFO lpttsi;
     1975
     1976                if (toolPtr->uFlags & TTF_IDISHWND)
     1977                    lpttsi = (LPTT_SUBCLASS_INFO)GetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass);
     1978                else
     1979                    lpttsi = (LPTT_SUBCLASS_INFO)GetPropA (toolPtr->hwnd, COMCTL32_aSubclass);
     1980
     1981                if (lpttsi) {
     1982                    SetWindowLongA ((HWND)toolPtr->uId, GWL_WNDPROC,
     1983                                      (LONG)lpttsi->wpOrigProc);
     1984                    RemovePropA ((HWND)toolPtr->uId, COMCTL32_aSubclass);
     1985                    COMCTL32_Free (&lpttsi);
     1986                }
     1987            }
    19931988      }
    19941989      COMCTL32_Free (infoPtr->tools);
Note: See TracChangeset for help on using the changeset viewer.