]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dataobj.cpp
fix adding non owned window for mac
[wxWidgets.git] / src / gtk / dataobj.cpp
index f0ed8dcb5a7e1089426e2faf2b215c88f11f05d9..0791e6e092feaecc0415e31b37dc3ded3c0b05e2 100644 (file)
@@ -204,13 +204,17 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, Direction dir)
 // wxTextDataObject
 // ----------------------------------------------------------------------------
 
-#if defined(__WXGTK20__) && wxUSE_UNICODE
-void wxTextDataObject::GetAllFormats(wxDataFormat *formats, wxDataObjectBase::Direction dir) const
+#if wxUSE_UNICODE
+
+void
+wxTextDataObject::GetAllFormats(wxDataFormat *formats,
+                                wxDataObjectBase::Direction WXUNUSED(dir)) const
 {
     *formats++ = GetPreferredFormat();
     *formats = g_altTextAtom;
 }
-#endif
+
+#endif // wxUSE_UNICODE
 
 // ----------------------------------------------------------------------------
 // wxFileDataObject
@@ -398,4 +402,53 @@ void wxBitmapDataObject::DoConvertToPng()
     image.SaveFile(mstream, wxBITMAP_TYPE_PNG);
 }
 
+// ----------------------------------------------------------------------------
+// wxURLDataObject
+// ----------------------------------------------------------------------------
+
+wxURLDataObject::wxURLDataObject(const wxString& url) :
+   wxDataObjectSimple( wxDataFormat( gdk_atom_intern("text/x-moz-url",FALSE) ) )
+{
+   m_url = url;
+}
+
+size_t wxURLDataObject::GetDataSize() const
+{ 
+    if (m_url.empty())
+        return 0;
+        
+    return 2*m_url.Len()+2;
+}
+
+bool wxURLDataObject::GetDataHere(void *buf) const
+{ 
+    if (m_url.empty())
+        return false;
+    
+    wxCSConv conv( "UCS2" );
+    conv.FromWChar( (char*) buf, 2*m_url.Len()+2, m_url.wc_str() );
+    
+    return true;
+}
+
+    // copy data from buffer to our data
+bool wxURLDataObject::SetData(size_t len, const void *buf)
+{ 
+    if (len == 0)
+    {
+        m_url = wxEmptyString;
+        return false;
+    }
+    
+    wxCSConv conv( "UCS2" );
+    wxWCharBuffer res = conv.cMB2WC( (const char*) buf );
+    m_url = res;
+    int pos = m_url.Find( '\n' );
+    if (pos != wxNOT_FOUND)
+        m_url.Remove( pos, m_url.Len() - pos );
+    
+    return true;
+}
+
+
 #endif // wxUSE_DATAOBJ