// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "dataobj.h"
#endif
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
#include "wx/dataobj.h"
#include "wx/app.h"
#include "wx/debug.h"
#include "wx/mstream.h"
#include "wx/image.h"
+#include "wx/log.h"
#include <gdk/gdk.h>
//-------------------------------------------------------------------------
GdkAtom g_textAtom = 0;
+GdkAtom g_altTextAtom = 0;
GdkAtom g_pngAtom = 0;
GdkAtom g_fileAtom = 0;
{
PrepareFormats();
- if (type == wxDF_UNICODETEXT)
- type = wxDF_TEXT;
-
m_type = type;
- if (m_type == wxDF_TEXT)
+#if wxUSE_UNICODE
+ if (m_type == wxDF_UNICODETEXT)
m_format = g_textAtom;
+ else if (m_type == wxDF_TEXT)
+ m_format = g_altTextAtom;
+#else
+ if (m_type == wxDF_TEXT || m_type == wxDF_UNICODETEXT)
+ m_format = g_textAtom;
+#endif
else
if (m_type == wxDF_BITMAP)
m_format = g_pngAtom;
m_format = format;
if (m_format == g_textAtom)
+#if wxUSE_UNICODE
+ m_type = wxDF_UNICODETEXT;
+#else
+ m_type = wxDF_TEXT;
+#endif
+ else
+ if (m_format == g_altTextAtom)
m_type = wxDF_TEXT;
else
if (m_format == g_pngAtom)
if (!g_textAtom)
#if wxUSE_UNICODE
g_textAtom = gdk_atom_intern( "UTF8_STRING", FALSE );
+ g_altTextAtom = gdk_atom_intern( "STRING", FALSE );
#else
g_textAtom = gdk_atom_intern( "STRING" /* "text/plain" */, FALSE );
#endif
{
}
+wxDataObject::~wxDataObject()
+{
+ // dtor is empty but needed for Darwin and AIX -- otherwise it doesn't link
+}
+
bool wxDataObject::IsSupportedFormat(const wxDataFormat& format, Direction dir) const
{
size_t nFormatCount = GetFormatCount(dir);
}
}
+// ----------------------------------------------------------------------------
+// wxTextDataObject
+// ----------------------------------------------------------------------------
+
+#if defined(__WXGTK20__) && wxUSE_UNICODE
+void wxTextDataObject::GetAllFormats(wxDataFormat *formats, wxDataObjectBase::Direction dir) const
+{
+ *formats++ = GetPreferredFormat();
+ *formats = g_altTextAtom;
+}
+#endif
+
// ----------------------------------------------------------------------------
// wxFileDataObject
// ----------------------------------------------------------------------------
for (size_t i = 0; i < m_filenames.GetCount(); i++)
{
+ filenames += wxT("file:");
filenames += m_filenames[i];
- filenames += (wxChar) 0;
+ filenames += wxT("\r\n");
}
memcpy( buf, filenames.mbc_str(), filenames.Len() + 1 );
for (size_t i = 0; i < m_filenames.GetCount(); i++)
{
+ // This is junk in UTF-8
res += m_filenames[i].Len();
- res += 1;
+ res += 5 + 2; // "file:" (5) + "\r\n" (2)
}
return res + 1;