Ignore:
Timestamp:
Jun 9, 2001, 4:50:26 PM (24 years ago)
Author:
sandervl
Message:

reference count (window + class objects) rewrite

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/window.cpp

    r5713 r5935  
    1 /* $Id: window.cpp,v 1.98 2001-05-15 14:31:40 sandervl Exp $ */
     1/* $Id: window.cpp,v 1.99 2001-06-09 14:50:25 sandervl Exp $ */
    22/*
    33 * Win32 window apis for OS/2
     
    129129    {
    130130        dprintf(("Win32BaseWindow error found!!"));
     131        RELEASE_WNDOBJ(window);
    131132        delete window;
    132133        return 0;
    133134    }
    134     return window->getWindowHandle();
     135    HWND hwnd = window->getWindowHandle();
     136    RELEASE_WNDOBJ(window);
     137    return hwnd;
    135138}
    136139//******************************************************************************
     
    220223    {
    221224        dprintf(("Win32BaseWindow error found!!"));
     225        RELEASE_WNDOBJ(window);
    222226        delete window;
    223227        return 0;
    224228    }
    225     return window->getWindowHandle();
     229    HWND hwnd = window->getWindowHandle();
     230    RELEASE_WNDOBJ(window);
     231    return hwnd;
    226232}
    227233//******************************************************************************
     
    237243        return 0;
    238244    }
    239     return window->getWindowHandle();
     245    HWND hwnd = window->getWindowHandle();
     246    RELEASE_WNDOBJ(window);
     247    return hwnd;
    240248}
    241249//******************************************************************************
     
    271279    else dprintf(("CreateMDIWindowA: class %d parent %x (%d,%d) (%d,%d), %x %x lParam=%x", lpszClassName, hwndParent, x, y, nWidth, nHeight, dwStyle, lParam));
    272280
    273     return window->SendMessageA(WM_MDICREATE, 0, (LPARAM)&cs);
     281    hwnd = window->SendMessageA(WM_MDICREATE, 0, (LPARAM)&cs);
     282    RELEASE_WNDOBJ(window);
     283    return hwnd;
    274284}
    275285//******************************************************************************
     
    306316    else dprintf(("CreateMDIWindowW: class %d parent %x (%d,%d) (%d,%d), %x %x lParam=%x", lpszClassName, hwndParent, x, y, nWidth, nHeight, dwStyle, lParam));
    307317
    308     return window->SendMessageW(WM_MDICREATE, 0, (LPARAM)&cs);
     318    hwnd = window->SendMessageW(WM_MDICREATE, 0, (LPARAM)&cs);
     319    RELEASE_WNDOBJ(window);
     320    return hwnd;
    309321}
    310322//******************************************************************************
     
    313325{
    314326  Win32BaseWindow *window;
     327  BOOL             ret;
    315328
    316329    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    320333        return 0;
    321334    }
    322     if(window->isDesktopWindow()) {
    323     dprintf(("WARNING: Trying to destroy desktop window!"));
    324     return FALSE;
    325     }
    326     return window->DestroyWindow();
     335    ret = window->DestroyWindow();
     336    RELEASE_WNDOBJ(window);
     337    return ret;
    327338}
    328339//******************************************************************************
     
    331342{
    332343  Win32BaseWindow *window;
     344  HWND             hwndActive;
    333345
    334346    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    338350        return 0;
    339351    }
    340     return window->SetActiveWindow();
     352    hwndActive = window->SetActiveWindow();
     353    RELEASE_WNDOBJ(window);
     354    return hwndActive;
    341355}
    342356//******************************************************************************
     
    346360{
    347361  Win32BaseWindow *window;
     362  HWND             hwndParent;
    348363
    349364    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    354369    }
    355370    dprintf2(("GetParent %x", hwnd));
    356     return window->GetParent();
     371    hwndParent = window->GetParent();
     372    RELEASE_WNDOBJ(window);
     373    return hwndParent;
    357374}
    358375//******************************************************************************
     
    360377HWND WIN32API SetParent( HWND hwndChild, HWND hwndNewParent)
    361378{
    362   Win32BaseWindow *window, *parent;
     379  Win32BaseWindow *window;
     380  HWND             hwndOldParent;
    363381
    364382    window = Win32BaseWindow::GetWindowFromHandle(hwndChild);
     
    372390    }
    373391    else {
    374         parent = Win32BaseWindow::GetWindowFromHandle(hwndNewParent);
    375         if(!window) {
     392        if(!IsWindow(hwndNewParent)) {
     393            RELEASE_WNDOBJ(window);
    376394            dprintf(("SetParent, parent %x not found", hwndNewParent));
    377395            SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     
    380398    }
    381399    dprintf(("SetParent %x %x", hwndChild, hwndNewParent));
    382     return window->SetParent(hwndNewParent);
     400    hwndOldParent = window->SetParent(hwndNewParent);
     401    RELEASE_WNDOBJ(window);
     402    return hwndOldParent;
    383403}
    384404//******************************************************************************
     
    387407{
    388408  Win32BaseWindow *window;
     409  BOOL             fIsChild;
    389410
    390411    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    395416    }
    396417    dprintf(("IsChild %x %x", hwndParent, hwnd));
    397     return window->IsChild(hwndParent);
     418    fIsChild = window->IsChild(hwndParent);
     419    RELEASE_WNDOBJ(window);
     420    return fIsChild;
    398421}
    399422//******************************************************************************
     
    405428
    406429    if(hwnd == HWND_DESKTOP) {
     430        windowDesktop->addRef();
    407431        window = windowDesktop;
    408432    }
     
    417441    hwndTop = window->GetTopWindow();
    418442    dprintf2(("GetTopWindow %x returned %x", hwnd, hwndTop));
     443    RELEASE_WNDOBJ(window);
    419444    return hwndTop;
    420445}
     
    424449{
    425450  Win32BaseWindow *window;
    426   BOOL rc;
     451  BOOL fIsIconic;
    427452
    428453    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    432457        return FALSE;
    433458    }
    434     rc = window->IsWindowIconic();
    435     dprintf(("IsIconic %x returned %d", hwnd, rc));
    436     return rc;
     459    fIsIconic = window->IsWindowIconic();
     460    dprintf(("IsIconic %x returned %d", hwnd, fIsIconic));
     461    RELEASE_WNDOBJ(window);
     462    return fIsIconic;
    437463}
    438464//******************************************************************************
     
    441467{
    442468  Win32BaseWindow *window;
    443   HWND rc;
     469  HWND hwndRelated;
    444470
    445471    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    449475        return 0;
    450476    }
    451     return window->GetWindow(uCmd);
     477    hwndRelated = window->GetWindow(uCmd);
     478    RELEASE_WNDOBJ(window);
     479    return hwndRelated;
    452480}
    453481//******************************************************************************
     
    456484{
    457485  Win32BaseWindow *window;
     486  BOOL             fEnabled;
    458487
    459488    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    464493    }
    465494    dprintf(("EnableWindow %x %d", hwnd, fEnable));
    466     return window->EnableWindow(fEnable);
     495    fEnabled = window->EnableWindow(fEnable);
     496    RELEASE_WNDOBJ(window);
     497    return fEnabled;
    467498}
    468499//******************************************************************************
     
    539570{
    540571  Win32BaseWindow *window;
     572  BOOL             ret;
    541573
    542574    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    546578        return 0;
    547579    }
    548     return window->ShowWindow(nCmdShow);
     580    ret = window->ShowWindow(nCmdShow);
     581    RELEASE_WNDOBJ(window);
     582    return ret;
    549583}
    550584/*****************************************************************************
     
    589623    }
    590624    dprintf(("SetWindowPos %x %x x=%d y=%d cx=%d cy=%d %x", hwnd, hwndInsertAfter, x, y, cx, cy, fuFlags));
    591     return window->SetWindowPos(hwndInsertAfter, x, y, cx, cy, fuFlags);
     625    BOOL ret = window->SetWindowPos(hwndInsertAfter, x, y, cx, cy, fuFlags);
     626    RELEASE_WNDOBJ(window);
     627    return ret;
    592628}
    593629//******************************************************************************
     
    598634  Win32BaseWindow *window;
    599635
    600     window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    601     if(!window) {
    602         dprintf(("SetWindowPlacement, window %x not found", hwnd));
    603         SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    604         return FALSE;
    605     }
    606636    if(!winpos || winpos->length != sizeof(WINDOWPLACEMENT)) {
    607637        dprintf(("SetWindowPlacement %x invalid parameter", hwnd));
     
    609639        return FALSE;
    610640    }
     641    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     642    if(!window) {
     643        dprintf(("SetWindowPlacement, window %x not found", hwnd));
     644        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     645        return FALSE;
     646    }
    611647    dprintf(("USER32: SetWindowPlacement %x %x", hwnd, winpos));
    612     return window->SetWindowPlacement((WINDOWPLACEMENT *)winpos);
     648    BOOL ret = window->SetWindowPlacement((WINDOWPLACEMENT *)winpos);
     649    RELEASE_WNDOBJ(window);
     650    return ret;
    613651}
    614652//******************************************************************************
     
    620658  Win32BaseWindow *window;
    621659
    622     window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    623     if(!window) {
    624         dprintf(("GetWindowPlacement, window %x not found", hwnd));
    625         SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    626         return FALSE;
    627     }
    628660    if(!winpos) {
    629661        dprintf(("GetWindowPlacement %x invalid parameter", hwnd));
     
    631663        return FALSE;
    632664    }
     665    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     666    if(!window) {
     667        dprintf(("GetWindowPlacement, window %x not found", hwnd));
     668        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     669        return FALSE;
     670    }
    633671    dprintf(("USER32: GetWindowPlacement %x %x", hwnd, winpos));
    634     return window->GetWindowPlacement(winpos);
     672    BOOL ret = window->GetWindowPlacement(winpos);
     673    RELEASE_WNDOBJ(window);
     674    return ret;
    635675}
    636676//******************************************************************************
     
    647687    }
    648688    dprintf2(("IsWindow %x", hwnd));
    649     return window->IsWindow();
     689    BOOL fIsWindow = window->IsWindow();
     690    RELEASE_WNDOBJ(window);
     691    return fIsWindow;
    650692}
    651693//******************************************************************************
     
    653695BOOL WIN32API IsWindowEnabled( HWND hwnd)
    654696{
    655   Win32BaseWindow *window;
    656697  DWORD            dwStyle;
    657698
    658     window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    659     if(!window) {
     699    if(!IsWindow(hwnd)) {
    660700        dprintf(("IsWindowEnabled, window %x not found", hwnd));
    661701        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     
    673713BOOL WIN32API IsWindowVisible(HWND hwnd)
    674714{
    675   Win32BaseWindow *window;
    676715  BOOL             ret;
    677716  HWND             hwndParent;
    678717  DWORD            dwStyle;
    679718
    680     if(!hwnd) {//TODO: verify in NT!
     719    if(hwnd == HWND_DESKTOP) {//TODO: verify in NT!
    681720        dprintf(("IsWindowVisible DESKTOP returned TRUE"));
    682721        return TRUE;    //desktop is always visible
    683722    }
    684     window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    685 
    686     if(!window) {
     723    if(!IsWindow(hwnd)) {
    687724        dprintf(("IsWindowVisible, window %x not found", hwnd));
    688725        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     
    716753HWND WIN32API SetFocus(HWND hwnd)
    717754{
    718  Win32BaseWindow *window, *topparent;
     755 Win32BaseWindow *window;
    719756 Win32BaseWindow *oldfocuswnd;
    720  HWND lastFocus, lastFocus_W, hwnd_O;
     757 HWND lastFocus, lastFocus_W, hwnd_O, hwndTopParent;
    721758 BOOL activate;
    722759 TEB *teb;
     
    741778    else lastFocus = OSLibWinQueryFocus (OSLIB_HWND_DESKTOP);
    742779
    743     topparent = window->GetTopParent();
     780    hwndTopParent = window->GetTopParent();
    744781    activate = FALSE;
    745     lastFocus_W = OS2ToWin32Handle (lastFocus);
     782    lastFocus_W = OS2ToWin32Handle(lastFocus);
    746783    if(lastFocus_W) {
    747784         oldfocuswnd = Win32BaseWindow::GetWindowFromHandle(lastFocus_W);
    748          if(lastFocus_W != hwnd && topparent != oldfocuswnd->GetTopParent()) {
     785         if(lastFocus_W != hwnd && hwndTopParent != oldfocuswnd->GetTopParent()) {
    749786            activate = TRUE;
    750787         }
     788         RELEASE_WNDOBJ(oldfocuswnd);
    751789    }
    752790    else activate = TRUE;
     
    766804        //mp1 = win32 window handle
    767805        //mp2 = top parent if activation required
    768         OSLibPostMessageDirect(hwnd_O, WIN32APP_SETFOCUSMSG, hwnd, (activate) ? topparent->getWindowHandle() : 0);
     806        OSLibPostMessageDirect(hwnd_O, WIN32APP_SETFOCUSMSG, hwnd, (activate) ? hwndTopParent : 0);
    769807        return lastFocus_W;
    770808    }
    771809    teb->o.odin.hwndFocus = 0;
    772810    if(activate) {
    773         SetActiveWindow(topparent->getWindowHandle());
     811        SetActiveWindow(hwndTopParent);
    774812    }
    775813    if(!IsWindow(hwnd)) return FALSE;       //abort if window destroyed
     
    827865  Win32BaseWindow *window;
    828866
    829     if (hwnd)
    830       window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    831     else
    832       window = windowDesktop;
    833 
     867    if(pRect == NULL) {
     868        dprintf(("GetWindowRect %x invalid parameter!", hwnd));
     869        SetLastError(ERROR_INVALID_PARAMETER);
     870        return FALSE;
     871    }
     872
     873    if(hwnd == HWND_DESKTOP) {
     874         windowDesktop->addRef();
     875         window = windowDesktop;
     876    }     
     877    else window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     878     
    834879    if(!window) {
    835880        dprintf(("GetWindowRect, window %x not found", hwnd));
    836881        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    837         return FALSE;
    838     }
    839     if(pRect == NULL) {
    840         SetLastError(ERROR_INVALID_PARAMETER);
    841882        return FALSE;
    842883    }
     
    847888         MapWindowPoints(window->getParent()->getWindowHandle(), 0, (PPOINT)pRect, 2);
    848889    }
    849 
     890    RELEASE_WNDOBJ(window);
    850891    dprintf(("GetWindowRect %x (%d,%d) (%d,%d)", hwnd, pRect->left, pRect->top, pRect->right, pRect->bottom));
    851892    return TRUE;
     
    864905    }
    865906    dprintf(("GetWindowTextLengthA %x", hwnd));
    866     return window->GetWindowTextLengthA();
     907    int ret = window->GetWindowTextLengthA();
     908    RELEASE_WNDOBJ(window);
     909    return ret;
    867910}
    868911//******************************************************************************
     
    881924    rc = window->GetWindowTextA(lpsz, cch);
    882925    dprintf(("GetWindowTextA %x %s", hwnd, lpsz));
     926    RELEASE_WNDOBJ(window);
    883927    return rc;
    884928}
     
    896940    }
    897941    dprintf(("GetWindowTextLengthW %x", hwnd));
    898     return window->GetWindowTextLengthW();
     942    int ret = window->GetWindowTextLengthW();
     943    RELEASE_WNDOBJ(window);
     944    return ret;
    899945}
    900946//******************************************************************************
     
    910956        return 0;
    911957    }
    912 #ifdef DEBUG
    913958    int rc = window->GetWindowTextW(lpsz, cch);
     959    RELEASE_WNDOBJ(window);
    914960    dprintf(("GetWindowTextW %x %ls", hwnd, lpsz));
    915961    return rc;
    916 #else
    917     return window->GetWindowTextW(lpsz, cch);
    918 #endif
    919962}
    920963//******************************************************************************
     
    931974    }
    932975    dprintf(("SetWindowTextA %x %s", hwnd, lpsz));
    933     return window->SetWindowTextA((LPSTR)lpsz);
     976    BOOL ret = window->SetWindowTextA((LPSTR)lpsz);
     977    RELEASE_WNDOBJ(window);
     978    return ret;
    934979}
    935980//******************************************************************************
     
    946991    }
    947992    dprintf(("SetWindowTextW %x %ls", hwnd, lpsz));
    948     return window->SetWindowTextW((LPWSTR)lpsz);
     993    BOOL ret = window->SetWindowTextW((LPWSTR)lpsz);
     994    RELEASE_WNDOBJ(window);
     995    return ret;
    949996}
    950997/*******************************************************************
     
    9911038    window->getClientRect(pRect);
    9921039    dprintf(("GetClientRect of %X returned (%d,%d) (%d,%d)\n", hwndWin32, pRect->left, pRect->top, pRect->right, pRect->bottom));
     1040    RELEASE_WNDOBJ(window);
    9931041    return TRUE;
    9941042}
     
    11141162        return 0;
    11151163    }
    1116     if(hwndFrom)
    1117     {
     1164    if(hwndTo == hwndFrom)
     1165        return 0; //nothing to do
     1166
     1167    if(hwndFrom == HWND_DESKTOP)
     1168    {
     1169        windowDesktop->addRef();
     1170        wndfrom = windowDesktop;
     1171    }
     1172    else {
    11181173        wndfrom = Win32BaseWindow::GetWindowFromHandle(hwndFrom);
    11191174        if(!wndfrom) {
     
    11231178        }
    11241179    }
    1125     else wndfrom = windowDesktop;
    1126 
    1127     if(hwndTo)
    1128     {
     1180
     1181    if(hwndTo == HWND_DESKTOP)
     1182    {
     1183        windowDesktop->addRef();
     1184        wndto = windowDesktop;
     1185    }
     1186    else {
    11291187        wndto = Win32BaseWindow::GetWindowFromHandle(hwndTo);
    11301188        if(!wndto) {
     
    11341192        }
    11351193    }
    1136     else wndto = windowDesktop;
    1137 
    1138     if(wndto == wndfrom)
    1139         return 0; //nothing to do
    11401194
    11411195    dprintf2(("USER32: MapWindowPoints %x to %x (%d,%d) (%d)", hwndFrom, hwndTo, lpPoints->x, lpPoints->y, cPoints));
    11421196    WINPOS_GetWinOffset(wndfrom, wndto, &offset);
    11431197
     1198    RELEASE_WNDOBJ(wndto);
     1199    RELEASE_WNDOBJ(wndfrom);
    11441200    for(int i=0;i<cPoints;i++)
    11451201    {
     
    11541210BOOL WIN32API ScreenToClient(HWND hwnd, LPPOINT pt)
    11551211{
    1156     Win32BaseWindow *wnd;
    11571212    PRECT rcl;
    11581213    BOOL rc;
    11591214
    1160     if(!hwnd) {
    1161     return (TRUE);
    1162     }
    1163     wnd = Win32BaseWindow::GetWindowFromHandle (hwnd);
    1164     if (!wnd) {
     1215    if(hwnd == HWND_DESKTOP) {
     1216        return (TRUE); //nothing to do
     1217    }
     1218    if (!IsWindow(hwnd)) {
    11651219        dprintf(("warning: ScreenToClient: window %x not found!", hwnd));
    11661220        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     
    12801334BOOL WIN32API ClientToScreen (HWND hwnd, PPOINT pt)
    12811335{
    1282     Win32BaseWindow *wnd;
    12831336    PRECT rcl;
    12841337
    1285     if (!hwnd) {
    1286         SetLastError(ERROR_INVALID_PARAMETER);
    1287         return (FALSE);
    1288     }
    1289     wnd = Win32BaseWindow::GetWindowFromHandle (hwnd);
    1290     if (!wnd) {
     1338    if(hwnd == HWND_DESKTOP) {
     1339        return(TRUE); //nothing to do
     1340    }
     1341    if(!IsWindow(hwnd)) {
    12911342        dprintf(("warning: ClientToScreen window %x not found!", hwnd));
    12921343        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     
    13441395  int i;
    13451396  HDWP newhdwp = hdwp,retvalue;
    1346   Win32BaseWindow *window;
    13471397
    13481398    pDWP = (DWP *)hdwp;
     
    13551405        return 0;
    13561406
    1357     window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    1358     if(!window) {
     1407    if(!IsWindow(hwnd)) {
    13591408        dprintf(("DeferWindowPos, window %x not found", hwnd));
    13601409        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     
    15501599    }
    15511600    dprintf(("CloseWindow %x\n", hwnd));
    1552     return window->CloseWindow();
     1601    BOOL ret = window->CloseWindow();
     1602    RELEASE_WNDOBJ(window);
     1603    return ret;
    15531604}
    15541605//******************************************************************************
     
    16421693        return 0;
    16431694    }
    1644     return window->IsWindowUnicode();
     1695    BOOL ret = window->IsWindowUnicode();
     1696    RELEASE_WNDOBJ(window);
     1697    return ret;
    16451698}
    16461699/***********************************************************************
     
    16551708BOOL WIN32API EnumThreadWindows(DWORD dwThreadId, WNDENUMPROC lpfn, LPARAM lParam)
    16561709{
    1657   return windowDesktop->EnumThreadWindows(dwThreadId, lpfn, lParam);
     1710    return windowDesktop->EnumThreadWindows(dwThreadId, lpfn, lParam);
    16581711}
    16591712//******************************************************************************
     
    16611714BOOL WIN32API EnumChildWindows(HWND hwnd, WNDENUMPROC lpfn, LPARAM lParam)
    16621715{
    1663  Win32BaseWindow *window;
    1664  BOOL   rc = TRUE;
    1665  ULONG  henum;
    1666  HWND   hwndNext;
    1667 
    1668   if(lpfn == NULL) {
    1669     dprintf(("EnumChildWindows invalid parameter %x %x\n", hwnd, lParam));
     1716    Win32BaseWindow *window;
     1717    BOOL   ret = TRUE;
     1718    ULONG  henum;
     1719    HWND   hwndNext;
     1720
     1721    if(lpfn == NULL) {
     1722        dprintf(("EnumChildWindows invalid parameter %x %x\n", hwnd, lParam));
    16701723        SetLastError(ERROR_INVALID_PARAMETER);
    16711724        return FALSE;
    1672   }
    1673   window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    1674   if(!window) {
     1725    }
     1726    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
     1727    if(!window) {
    16751728        dprintf(("EnumChildWindows, window %x not found", hwnd));
    16761729        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    16771730        return FALSE;
    1678   }
    1679   return window->EnumChildWindows(lpfn, lParam);
     1731    }
     1732    ret = window->EnumChildWindows(lpfn, lParam);
     1733    RELEASE_WNDOBJ(window);
     1734    return ret;
    16801735}
    16811736//******************************************************************************
     
    16831738BOOL WIN32API EnumWindows(WNDENUMPROC lpfn, LPARAM lParam)
    16841739{
    1685   return windowDesktop->EnumWindows(lpfn, lParam);
     1740    return windowDesktop->EnumWindows(lpfn, lParam);
    16861741}
    16871742//******************************************************************************
     
    16971752BOOL WIN32API OpenIcon(HWND hwnd)
    16981753{
    1699   dprintf(("USER32: OpenIcon %x", hwnd));
    1700 
    1701   if(!IsIconic(hwnd))
     1754    dprintf(("USER32: OpenIcon %x", hwnd));
     1755
     1756    if(!IsIconic(hwnd))
    17021757        return FALSE;
    1703   ShowWindow(hwnd, SW_SHOWNORMAL);
    1704   return TRUE;
     1758    ShowWindow(hwnd, SW_SHOWNORMAL);
     1759    return TRUE;
    17051760}
    17061761//******************************************************************************
     
    17111766BOOL WIN32API ShowOwnedPopups(HWND hwndOwner, BOOL fShow)
    17121767{
    1713   Win32BaseWindow *window, *owner;
    1714   HWND hwnd;
    1715 
    1716   owner = Win32BaseWindow::GetWindowFromHandle(hwndOwner);
    1717   if(!owner) {
     1768    Win32BaseWindow *window, *owner;
     1769    HWND hwnd;
     1770
     1771    owner = Win32BaseWindow::GetWindowFromHandle(hwndOwner);
     1772    if(!owner) {
    17181773        dprintf(("ShowOwnedPopups, window %x not found", hwndOwner));
    17191774        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    17201775        return FALSE;
    1721   }
    1722   dprintf(("USER32: ShowOwnedPopups %x %d", hwndOwner, fShow));
    1723 
    1724   hwnd = GetWindow(GetDesktopWindow(), GW_CHILD);
    1725   while(hwnd) {
     1776    }
     1777    dprintf(("USER32: ShowOwnedPopups %x %d", hwndOwner, fShow));
     1778
     1779    hwnd = GetWindow(GetDesktopWindow(), GW_CHILD);
     1780    while(hwnd) {
    17261781        window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    17271782        if(window) {
     
    17521807                }
    17531808            }
     1809            RELEASE_WNDOBJ(window);
    17541810        }
    1755         else    dprintf(("WARNING: window %x is not valid", hwnd));
     1811        else dprintf(("WARNING: window %x is not valid", hwnd));
    17561812
    17571813        hwnd = GetWindow(hwnd, GW_HWNDNEXT);
    1758   }
    1759   return TRUE;
     1814    }
     1815    RELEASE_WNDOBJ(owner);
     1816    return TRUE;
    17601817}
    17611818//******************************************************************************
     
    18031860    }
    18041861    dprintf(("GetWindowContextHelpId %x", hwnd));
    1805     return window->getWindowContextHelpId();
     1862    DWORD ret = window->getWindowContextHelpId();
     1863    RELEASE_WNDOBJ(window);
     1864    return ret;
    18061865}
    18071866//******************************************************************************
     
    18191878    dprintf(("SetWindowContextHelpId %x %d", hwnd, dwContextHelpId));
    18201879    window->setWindowContextHelpId(dwContextHelpId);
     1880    RELEASE_WNDOBJ(window);
    18211881    return(TRUE);
    18221882}
     
    18331893        return 0;
    18341894    }
    1835     return window->getProp(str);
     1895    HANDLE ret = window->getProp(str);
     1896    RELEASE_WNDOBJ(window);
     1897    return ret;
    18361898}
    18371899//******************************************************************************
     
    18601922        return FALSE;
    18611923    }
    1862     return window->setProp(str, handle);
     1924    BOOL ret = window->setProp(str, handle);
     1925    RELEASE_WNDOBJ(window);
     1926    return ret;
    18631927}
    18641928//******************************************************************************
     
    18881952        return 0;
    18891953    }
    1890     return window->removeProp(str);
     1954    HANDLE ret = window->removeProp(str);
     1955    RELEASE_WNDOBJ(window);
     1956    return ret;
    18911957}
    18921958//******************************************************************************
     
    19281994        return -1;
    19291995    }
    1930     return window->enumPropsExA(func, lParam);
     1996    INT ret = window->enumPropsExA(func, lParam);
     1997    RELEASE_WNDOBJ(window);
     1998    return ret;
    19311999}
    19322000//******************************************************************************
     
    19422010        return -1;
    19432011    }
    1944     return window->enumPropsExW(func, lParam);
    1945 }
    1946 //******************************************************************************
    1947 //******************************************************************************
     2012    INT ret = window->enumPropsExW(func, lParam);
     2013    RELEASE_WNDOBJ(window);
     2014    return ret;
     2015}
     2016//******************************************************************************
     2017//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.