Commit 949a4849 authored by Paul Gofman's avatar Paul Gofman Committed by Alexandre Julliard

ole32: Move OLEClipbrd_Initialize() before get_ole_clipbrd().

parent 34a4f5bc
......@@ -183,18 +183,6 @@ static CRITICAL_SECTION_DEBUG latest_snapshot_cs_debug =
};
static CRITICAL_SECTION latest_snapshot_cs = { &latest_snapshot_cs_debug, -1, 0, 0, 0, 0 };
static inline HRESULT get_ole_clipbrd(ole_clipbrd **clipbrd)
{
struct oletls *info = COM_CurrentInfo();
*clipbrd = NULL;
if(!info->ole_inits)
return CO_E_NOTINITIALIZED;
*clipbrd = theOleClipboard;
return S_OK;
}
/*
* Name of our registered OLE clipboard window class
*/
......@@ -214,6 +202,79 @@ UINT ole_private_data_clipboard_format = 0;
static UINT wine_marshal_clipboard_format;
/*********************************************************
* register_clipboard_formats
*/
static void register_clipboard_formats(void)
{
ownerlink_clipboard_format = RegisterClipboardFormatW(L"OwnerLink");
filename_clipboard_format = RegisterClipboardFormatW(L"FileName");
filenameW_clipboard_format = RegisterClipboardFormatW(L"FileNameW");
dataobject_clipboard_format = RegisterClipboardFormatW(L"DataObject");
embedded_object_clipboard_format = RegisterClipboardFormatW(L"Embedded Object");
embed_source_clipboard_format = RegisterClipboardFormatW(L"Embed Source");
custom_link_source_clipboard_format = RegisterClipboardFormatW(L"Custom Link Source");
link_source_clipboard_format = RegisterClipboardFormatW(L"Link Source");
object_descriptor_clipboard_format = RegisterClipboardFormatW(L"Object Descriptor");
link_source_descriptor_clipboard_format = RegisterClipboardFormatW(L"Link Source Descriptor");
ole_private_data_clipboard_format = RegisterClipboardFormatW(L"Ole Private Data");
wine_marshal_clipboard_format = RegisterClipboardFormatW(L"Wine Marshalled DataObject");
}
/***********************************************************************
* OLEClipbrd_Initialize()
* Initializes the OLE clipboard.
*/
void OLEClipbrd_Initialize(void)
{
register_clipboard_formats();
if ( !theOleClipboard )
{
ole_clipbrd* clipbrd;
HGLOBAL h;
TRACE("()\n");
clipbrd = HeapAlloc( GetProcessHeap(), 0, sizeof(*clipbrd) );
if (!clipbrd) return;
clipbrd->latest_snapshot = NULL;
clipbrd->window = NULL;
clipbrd->src_data = NULL;
clipbrd->cached_enum = NULL;
h = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, 0);
if(!h)
{
HeapFree(GetProcessHeap(), 0, clipbrd);
return;
}
if(FAILED(CreateStreamOnHGlobal(h, TRUE, &clipbrd->marshal_data)))
{
GlobalFree(h);
HeapFree(GetProcessHeap(), 0, clipbrd);
return;
}
theOleClipboard = clipbrd;
}
}
static inline HRESULT get_ole_clipbrd(ole_clipbrd **clipbrd)
{
struct oletls *info = COM_CurrentInfo();
*clipbrd = NULL;
if(!info->ole_inits)
return CO_E_NOTINITIALIZED;
*clipbrd = theOleClipboard;
return S_OK;
}
static inline const char *dump_fmtetc(FORMATETC *fmt)
{
if (!fmt) return "(null)";
......@@ -1739,67 +1800,6 @@ static snapshot *snapshot_construct(DWORD seq_no)
return This;
}
/*********************************************************
* register_clipboard_formats
*/
static void register_clipboard_formats(void)
{
ownerlink_clipboard_format = RegisterClipboardFormatW(L"OwnerLink");
filename_clipboard_format = RegisterClipboardFormatW(L"FileName");
filenameW_clipboard_format = RegisterClipboardFormatW(L"FileNameW");
dataobject_clipboard_format = RegisterClipboardFormatW(L"DataObject");
embedded_object_clipboard_format = RegisterClipboardFormatW(L"Embedded Object");
embed_source_clipboard_format = RegisterClipboardFormatW(L"Embed Source");
custom_link_source_clipboard_format = RegisterClipboardFormatW(L"Custom Link Source");
link_source_clipboard_format = RegisterClipboardFormatW(L"Link Source");
object_descriptor_clipboard_format = RegisterClipboardFormatW(L"Object Descriptor");
link_source_descriptor_clipboard_format = RegisterClipboardFormatW(L"Link Source Descriptor");
ole_private_data_clipboard_format = RegisterClipboardFormatW(L"Ole Private Data");
wine_marshal_clipboard_format = RegisterClipboardFormatW(L"Wine Marshalled DataObject");
}
/***********************************************************************
* OLEClipbrd_Initialize()
* Initializes the OLE clipboard.
*/
void OLEClipbrd_Initialize(void)
{
register_clipboard_formats();
if ( !theOleClipboard )
{
ole_clipbrd* clipbrd;
HGLOBAL h;
TRACE("()\n");
clipbrd = HeapAlloc( GetProcessHeap(), 0, sizeof(*clipbrd) );
if (!clipbrd) return;
clipbrd->latest_snapshot = NULL;
clipbrd->window = NULL;
clipbrd->src_data = NULL;
clipbrd->cached_enum = NULL;
h = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, 0);
if(!h)
{
HeapFree(GetProcessHeap(), 0, clipbrd);
return;
}
if(FAILED(CreateStreamOnHGlobal(h, TRUE, &clipbrd->marshal_data)))
{
GlobalFree(h);
HeapFree(GetProcessHeap(), 0, clipbrd);
return;
}
theOleClipboard = clipbrd;
}
}
/*********************************************************************
* set_clipboard_formats
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment