]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/clipbrd.cpp
Fix broken and missing DataView interface items for Phoenix
[wxWidgets.git] / src / msw / clipbrd.cpp
index 55c12d45af3ec798ff2dc5da135b5830ad6d6df9..bd929dcac3fe3168d363439b49e2de783f86f3ee 100644 (file)
@@ -79,6 +79,7 @@
 // ---------------------------------------------------------------------------
 
 static bool gs_wxClipboardIsOpen = false;
 // ---------------------------------------------------------------------------
 
 static bool gs_wxClipboardIsOpen = false;
+static int gs_htmlcfid = 0;
 
 bool wxOpenClipboard()
 {
 
 bool wxOpenClipboard()
 {
@@ -139,7 +140,9 @@ bool wxIsClipboardOpened()
 
 bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat)
 {
 
 bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat)
 {
-   wxDataFormat::NativeFormat cf = dataFormat.GetFormatId();
+    wxDataFormat::NativeFormat cf = dataFormat.GetFormatId();
+    if (cf == wxDF_HTML)
+        cf = gs_htmlcfid;
 
     if ( ::IsClipboardFormatAvailable(cf) )
     {
 
     if ( ::IsClipboardFormatAvailable(cf) )
     {
@@ -304,10 +307,6 @@ bool wxSetClipboardData(wxDataFormat dataFormat,
                 char *buf = new char [400 + strlen(html)];
                 if(!buf) return false;
 
                 char *buf = new char [400 + strlen(html)];
                 if(!buf) return false;
 
-                // Get clipboard id for HTML format...
-                static int cfid = 0;
-                if(!cfid) cfid = RegisterClipboardFormat(wxT("HTML Format"));
-
                 // Create a template string for the HTML header...
                 strcpy(buf,
                     "Version:0.9\r\n"
                 // Create a template string for the HTML header...
                 strcpy(buf,
                     "Version:0.9\r\n"
@@ -358,7 +357,7 @@ bool wxSetClipboardData(wxDataFormat dataFormat,
                 strcpy(ptr, buf);
                 GlobalUnlock(hText);
 
                 strcpy(ptr, buf);
                 GlobalUnlock(hText);
 
-                handle = ::SetClipboardData(cfid, hText);
+                handle = ::SetClipboardData(gs_htmlcfid, hText);
 
                 // Free memory...
                 GlobalFree(hText);
 
                 // Free memory...
                 GlobalFree(hText);
@@ -598,6 +597,10 @@ bool wxClipboard::Flush()
 
 bool wxClipboard::Open()
 {
 
 bool wxClipboard::Open()
 {
+    // Get clipboard id for HTML format...
+    if(!gs_htmlcfid)
+        gs_htmlcfid = RegisterClipboardFormat(wxT("HTML Format"));
+
     // OLE opens clipboard for us
     m_isOpened = true;
 #if wxUSE_OLE_CLIPBOARD
     // OLE opens clipboard for us
     m_isOpened = true;
 #if wxUSE_OLE_CLIPBOARD
@@ -814,6 +817,8 @@ bool wxClipboard::GetData( wxDataObject& data )
         // convert to NativeFormat Id
         cf = formats[n].GetFormatId();
 
         // convert to NativeFormat Id
         cf = formats[n].GetFormatId();
 
+        if (cf == wxDF_HTML)
+            cf = gs_htmlcfid;
         // if the format is not available, try the next one
         // this test includes implicit / sythetic formats
         if ( !::IsClipboardFormatAvailable(cf) )
         // if the format is not available, try the next one
         // this test includes implicit / sythetic formats
         if ( !::IsClipboardFormatAvailable(cf) )