Ignore:
Timestamp:
Sep 3, 2002, 2:34:35 PM (23 years ago)
Author:
sandervl
Message:

clipboard cleanup

File:
1 edited

Legend:

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

    r7736 r9198  
    1 /* $Id: clipboard.cpp,v 1.14 2002-01-07 14:32:21 sandervl Exp $ */
     1/* $Id: clipboard.cpp,v 1.15 2002-09-03 12:34:01 sandervl Exp $ */
    22
    33/*
     
    2323#include "dbglocal.h"
    2424
    25 #ifdef USING_OPEN32CLIPBOARD
    26 
    27 #define FLAG_TO_OPEN32       0
    28 #define FLAG_FROM_OPEN32     1
    29 
    30 //******************************************************************************
    31 //******************************************************************************
    32 HGLOBAL GlobalCopy(HGLOBAL hDest, HGLOBAL hSource, BOOL fToOpen32)
    33 {
    34  LPVOID src;
    35  LPVOID dest;
    36  ULONG  size;
    37 
    38       if(fToOpen32 == FLAG_TO_OPEN32) {
    39           src = GlobalLock(hSource);
    40           if(src) {
    41               size = GlobalSize(hSource);
    42               if(hDest == NULL) {
    43                   hDest = O32_GlobalAlloc(GHND, size);
    44               }
    45               dest  = O32_GlobalLock(hDest);
    46               memcpy(dest, src, size);
    47               O32_GlobalUnlock(hDest);
    48           }
    49           GlobalUnlock(hSource);
    50       }
    51       else {
    52           src = O32_GlobalLock(hSource);
    53           if(src) {
    54               size = O32_GlobalSize(hSource);
    55               if(hDest == NULL) {
    56                   hDest = GlobalAlloc(GHND, size);
    57               }
    58               dest  = GlobalLock(hDest);
    59               memcpy(dest, src, size);
    60               GlobalUnlock(hDest);
    61           }
    62           O32_GlobalUnlock(hSource);
    63       }
    64       return hDest;
    65 }
    66 #endif
    67 
    6825//******************************************************************************
    6926//******************************************************************************
    7027BOOL WIN32API ChangeClipboardChain( HWND hwndRemove, HWND hwndNext)
    7128{
    72   Win32BaseWindow *wndRemove, *wndNext;
    73   HWND hwndOS2Remove, hwndOS2Next;
     29    Win32BaseWindow *wndRemove, *wndNext;
     30    HWND hwndOS2Remove, hwndOS2Next;
    7431
    7532    wndRemove = Win32BaseWindow::GetWindowFromHandle(hwndRemove);
     
    9653//******************************************************************************
    9754//******************************************************************************
    98 BOOL WIN32API CloseClipboard(void)
    99 {
    100     dprintf(("USER32:  CloseClipboard\n"));
    101     return O32_CloseClipboard();
    102 }
    103 //******************************************************************************
    104 //******************************************************************************
    10555int WIN32API CountClipboardFormats(void)
    10656{
    107     dprintf(("USER32:  CountClipboardFormats\n"));
     57    dprintf(("USER32: CountClipboardFormats"));
    10858    return O32_CountClipboardFormats();
    10959}
     
    11262BOOL WIN32API EmptyClipboard(void)
    11363{
    114     dprintf(("USER32:  EmptyClipboard\n"));
     64    dprintf(("USER32: EmptyClipboard"));
    11565    return O32_EmptyClipboard();
    11666}
     
    11969UINT WIN32API EnumClipboardFormats(UINT arg1)
    12070{
    121     dprintf(("USER32:  EnumClipboardFormats\n"));
     71    dprintf(("USER32: EnumClipboardFormats %d", arg1));
    12272    return O32_EnumClipboardFormats(arg1);
    12373}
    12474//******************************************************************************
    12575//******************************************************************************
    126 HANDLE WIN32API GetClipboardData( UINT uFormat)
    127 {
    128 #ifdef USING_OPEN32CLIPBOARD
    129     HANDLE hClipObj = 0, hClipObjOpen32 = 0;
    130 
    131     dprintf(("USER32: GetClipboardData %x", uFormat));
    132     hClipObjOpen32 = O32_GetClipboardData(uFormat);
    133     //memory leak
    134     if(hClipObjOpen32) {
    135         hClipObj = GlobalCopy(NULL, hClipObjOpen32, FLAG_FROM_OPEN32);
    136     }
    137     return hClipObj;
    138 #else
    139     dprintf(("USER32: GetClipboardData %x", uFormat));
    140     return O32_GetClipboardData(uFormat);
    141 #endif
    142 }
    143 //******************************************************************************
    144 //******************************************************************************
    14576int WIN32API GetClipboardFormatNameA(UINT format,LPSTR lpszFormatName,int cchMaxCount)
    14677{
    147   dprintf(("USER32: GetClipboardFormatNameA %d\n",format));
    148   return O32_GetClipboardFormatName(format,lpszFormatName,cchMaxCount);
     78    dprintf(("USER32: GetClipboardFormatNameA %d\n",format));
     79    return O32_GetClipboardFormatName(format,lpszFormatName,cchMaxCount);
    14980}
    15081//******************************************************************************
     
    15283int WIN32API GetClipboardFormatNameW(UINT format,LPWSTR lpszFormatName,int cchMaxCount)
    15384{
    154   int   rc;
    155   char *astring = (CHAR*)malloc(cchMaxCount);
    156 
    157   dprintf(("USER32:  GetClipboardFormatNameW %d\n",format));
    158   rc = O32_GetClipboardFormatName(format,astring,cchMaxCount);
    159   if (rc) AsciiToUnicode(astring,lpszFormatName);
    160   free(astring);
    161   return(rc);
     85    int   rc;
     86    char *astring = (CHAR*)malloc(cchMaxCount);
     87
     88    rc = GetClipboardFormatNameA(format,astring,cchMaxCount);
     89    if (rc) AsciiToUnicode(astring,lpszFormatName);
     90    free(astring);
     91    return(rc);
    16292}
    16393//******************************************************************************
     
    16595HWND WIN32API GetClipboardOwner(void)
    16696{
    167  HWND hwndOwner;
    168  Win32BaseWindow *window;
    169 
    170     dprintf(("USER32:  GetClipboardOwner\n"));
     97    HWND hwndOwner;
     98    Win32BaseWindow *window;
     99
     100    dprintf(("USER32: GetClipboardOwner\n"));
    171101    hwndOwner = O32_GetClipboardOwner();
    172102
     
    184114HWND WIN32API GetClipboardViewer(void)
    185115{
    186  Win32BaseWindow *window;
    187  HWND hwndViewer;
    188 
    189     dprintf(("USER32:  GetClipboardViewer\n"));
     116    Win32BaseWindow *window;
     117    HWND hwndViewer;
     118
     119    dprintf(("USER32: GetClipboardViewer"));
    190120    hwndViewer = O32_GetClipboardViewer();
    191121
     
    201131//******************************************************************************
    202132//******************************************************************************
     133HWND WIN32API SetClipboardViewer( HWND hwndNew)
     134{
     135    Win32BaseWindow *wndnew, *wndold;
     136    HWND hwndOld;
     137    HWND hwndOS2New;
     138
     139    wndnew = Win32BaseWindow::GetWindowFromHandle(hwndNew);
     140    if(!wndnew) {
     141        dprintf(("SetClipboardViewer, window %x not found", hwndNew));
     142        SetLastError(ERROR_INVALID_WINDOW_HANDLE);
     143        return 0;
     144    }
     145    dprintf(("USER32: SetClipboardViewer %x", hwndNew));
     146    hwndOS2New = wndnew->getOS2WindowHandle();
     147    RELEASE_WNDOBJ(wndnew);
     148
     149    hwndOld = O32_SetClipboardViewer(hwndOS2New);
     150
     151    wndold = Win32BaseWindow::GetWindowFromOS2Handle(hwndOld);
     152    if(!wndold) {
     153        //probably an OS/2 window, so pretend it's nobody
     154        return 0;
     155    }
     156    hwndOld = wndold->getWindowHandle();
     157    RELEASE_WNDOBJ(wndold);
     158    return hwndOld;
     159}
     160//******************************************************************************
     161//******************************************************************************
    203162HWND WIN32API GetOpenClipboardWindow(void)
    204163{
    205  Win32BaseWindow *window;
    206  HWND hwnd;
    207 
    208     dprintf(("USER32:  GetOpenClipboardWindow\n"));
     164    Win32BaseWindow *window;
     165    HWND hwnd;
     166
     167    dprintf(("USER32: GetOpenClipboardWindow"));
    209168    hwnd = O32_GetOpenClipboardWindow();
    210169
     
    222181int WIN32API GetPriorityClipboardFormat( PUINT arg1, int arg2)
    223182{
    224     dprintf(("USER32:  GetPriorityClipboardFormat\n"));
     183    dprintf(("USER32: GetPriorityClipboardFormat"));
    225184    return O32_GetPriorityClipboardFormat(arg1, arg2);
    226185}
     
    236195BOOL WIN32API OpenClipboard( HWND hwnd)
    237196{
    238   Win32BaseWindow *window;
     197    Win32BaseWindow *window;
    239198
    240199    if (hwnd) {
     
    253212//******************************************************************************
    254213//******************************************************************************
     214BOOL WIN32API CloseClipboard(void)
     215{
     216    dprintf(("USER32: CloseClipboard"));
     217    return O32_CloseClipboard();
     218}
     219//******************************************************************************
     220//******************************************************************************
    255221UINT WIN32API RegisterClipboardFormatA( LPCSTR arg1)
    256222{
     
    262228UINT WIN32API RegisterClipboardFormatW(LPCWSTR arg1)
    263229{
    264  UINT  rc;
    265  char *astring = UnicodeToAsciiString((LPWSTR)arg1);
     230    UINT  rc;
     231    char *astring = UnicodeToAsciiString((LPWSTR)arg1);
    266232
    267233    dprintf(("USER32:  RegisterClipboardFormatW %s\n", astring));
     
    273239//******************************************************************************
    274240//******************************************************************************
     241HANDLE WIN32API GetClipboardData(UINT uFormat)
     242{
     243    HANDLE hRet = O32_GetClipboardData(uFormat);
     244    dprintf(("GetClipboardData %x returned %x", uFormat, hRet));
     245    return hRet;
     246}
     247//******************************************************************************
     248//******************************************************************************
    275249HANDLE WIN32API SetClipboardData( UINT uFormat, HANDLE hClipObj)
    276250{
    277 #ifdef USING_OPEN32CLIPBOARD
    278     HANDLE hClipObjOpen32 = 0;
    279 
    280     dprintf(("USER32: SetClipboardData %x %x", uFormat, hClipObj));
    281     //memory leak
    282     if(hClipObj) {
    283         hClipObjOpen32 = GlobalCopy(NULL, hClipObj, FLAG_TO_OPEN32);
    284     }
    285     O32_SetClipboardData(uFormat, hClipObjOpen32);
    286 
    287     return hClipObj;
    288 #else
    289     dprintf(("USER32: SetClipboardData %x %x", uFormat, hClipObj));
    290 
    291     if(uFormat == CF_UNICODETEXT)
    292     {
    293         //have to translate to CF_TEXT, because WGSS doesn't understand
    294         //unicode text
    295         LPWSTR lpTextUnicode;
    296         LPSTR  lpTextAscii;
    297         DWORD  length;
    298         HANDLE hClipObjAscii;
    299 
    300         lpTextUnicode = (LPWSTR)GlobalLock(hClipObj);
    301         if(lpTextUnicode == NULL) {
    302             dprintf(("!ERROR!: Invalid handle!!"));
    303             SetLastError(ERROR_INVALID_HANDLE);
    304             return 0;
    305         }
    306         length = GlobalSize(hClipObj)/sizeof(WCHAR);
    307         hClipObjAscii = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, length);
    308         lpTextAscii = (LPSTR)GlobalLock(hClipObjAscii);
    309         if(!hClipObjAscii || lpTextAscii == NULL || length == 0) {
    310             dprintf(("!ERROR!: GlobalAlloc %d failed!!", length));
    311             SetLastError(ERROR_INVALID_HANDLE);
    312             return 0;
    313         }
    314         WideCharToMultiByte(CP_ACP, 0, lpTextUnicode, -1, lpTextAscii, length, 0, NULL);
    315        
    316         GlobalUnlock(hClipObjAscii);
    317         GlobalUnlock(hClipObj);
    318         HANDLE ret = O32_SetClipboardData(CF_TEXT, hClipObjAscii);
    319         //hClipObjAscii will be freed when the clipboard is closed
    320         return ret;
    321     }
     251    dprintf(("SetClipboardData %x %x", uFormat, hClipObj));
    322252    return O32_SetClipboardData(uFormat, hClipObj);
    323 #endif
    324 }
    325 //******************************************************************************
    326 //******************************************************************************
    327 HWND WIN32API SetClipboardViewer( HWND hwndNew)
    328 {
    329   Win32BaseWindow *wndnew, *wndold;
    330   HWND hwndOld;
    331   HWND hwndOS2New;
    332 
    333     wndnew = Win32BaseWindow::GetWindowFromHandle(hwndNew);
    334     if(!wndnew) {
    335         dprintf(("SetClipboardViewer, window %x not found", hwndNew));
    336         SetLastError(ERROR_INVALID_WINDOW_HANDLE);
    337         return 0;
    338     }
    339     dprintf(("USER32: SetClipboardViewer %x", hwndNew));
    340     hwndOS2New = wndnew->getOS2WindowHandle();
    341     RELEASE_WNDOBJ(wndnew);
    342 
    343     hwndOld = O32_SetClipboardViewer(hwndOS2New);
    344 
    345     wndold = Win32BaseWindow::GetWindowFromOS2Handle(hwndOld);
    346     if(!wndold) {
    347         //probably an OS/2 window, so pretend it's nobody
    348         return 0;
    349     }
    350     hwndOld = wndold->getWindowHandle();
    351     RELEASE_WNDOBJ(wndold);
    352     return hwndOld;
    353 }
    354 //******************************************************************************
    355 //******************************************************************************
     253}
     254//******************************************************************************
     255//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.