X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/338dd992160bf20205743c092b353d96ef7604fb..a4f4d548ce0d3533fe9e84d812643cc7c21dd580:/src/motif/dataobj.cpp?ds=sidebyside diff --git a/src/motif/dataobj.cpp b/src/motif/dataobj.cpp index 90e41f267a..0647d3501b 100644 --- a/src/motif/dataobj.cpp +++ b/src/motif/dataobj.cpp @@ -7,9 +7,8 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "dataobj.h" -#endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #include "wx/defs.h" @@ -17,6 +16,7 @@ #include "wx/dataobj.h" #include "wx/app.h" +#include "wx/utils.h" #ifdef __VMS__ #pragma message disable nosimpint @@ -25,14 +25,15 @@ #ifdef __VMS__ #pragma message enable nosimpint #endif -#include "wx/utils.h" + +#include "wx/motif/private.h" //------------------------------------------------------------------------- // global data //------------------------------------------------------------------------- Atom g_textAtom = 0; -Atom g_pngAtom = 0; +Atom g_bitmapAtom = 0; Atom g_fileAtom = 0; //------------------------------------------------------------------------- @@ -86,7 +87,7 @@ void wxDataFormat::SetType( wxDataFormatId type ) m_format = g_textAtom; else if (m_type == wxDF_BITMAP) - m_format = g_pngAtom; + m_format = g_bitmapAtom; else if (m_type == wxDF_FILENAME) m_format = g_fileAtom; @@ -118,7 +119,7 @@ void wxDataFormat::SetId( NativeFormat format ) if (m_format == g_textAtom) m_type = wxDF_TEXT; else - if (m_format == g_pngAtom) + if (m_format == g_bitmapAtom) m_type = wxDF_BITMAP; else if (m_format == g_fileAtom) @@ -132,69 +133,57 @@ void wxDataFormat::SetId( const wxChar *id ) PrepareFormats(); m_type = wxDF_PRIVATE; wxString tmp( id ); - m_format = XInternAtom( (Display*) wxGetDisplay(), wxMBSTRINGCAST tmp.mbc_str(), FALSE ); // what is the string cast for? + m_format = XInternAtom( wxGlobalDisplay(), + tmp.mbc_str(), False ); } void wxDataFormat::PrepareFormats() { if (!g_textAtom) - g_textAtom = XInternAtom( (Display*) wxGetDisplay(), "STRING", FALSE ); - if (!g_pngAtom) - g_pngAtom = XInternAtom( (Display*) wxGetDisplay(), "image/png", FALSE ); + g_textAtom = XInternAtom( wxGlobalDisplay(), "STRING", False ); + if (!g_bitmapAtom) + g_bitmapAtom = XInternAtom( wxGlobalDisplay(), "PIXMAP", False ); if (!g_fileAtom) - g_fileAtom = XInternAtom( (Display*) wxGetDisplay(), "file:ALL", FALSE ); + g_fileAtom = XInternAtom( wxGlobalDisplay(), "file:ALL", False ); } -#if 0 - // ---------------------------------------------------------------------------- -// wxPrivateDataObject +// wxDataObject // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS( wxPrivateDataObject, wxDataObject ) - -void wxPrivateDataObject::Free() +wxDataObject::~wxDataObject() { - if ( m_data ) - free(m_data); } -wxPrivateDataObject::wxPrivateDataObject() -{ - wxString id = wxT("application/"); - id += wxTheApp->GetAppName(); - - m_format.SetId( id ); +// ---------------------------------------------------------------------------- +// wxBitmapDataObject +// ---------------------------------------------------------------------------- - m_size = 0; - m_data = (void *)NULL; +size_t wxBitmapDataObject::GetDataSize() const +{ + return sizeof(Pixmap); } -void wxPrivateDataObject::SetData( const void *data, size_t size ) +bool wxBitmapDataObject::GetDataHere(void* buf) const { - Free(); + if( !GetBitmap().Ok() ) + return false; - m_size = size; - m_data = malloc(size); + (*(Pixmap*)buf) = (Pixmap)GetBitmap().GetDrawable(); - memcpy( m_data, data, size ); + return true; } -void wxPrivateDataObject::WriteData( void *dest ) const +bool wxBitmapDataObject::SetData(size_t len, const void* buf) { - WriteData( m_data, dest ); -} + if( len != sizeof(Pixmap) ) + return false; -size_t wxPrivateDataObject::GetSize() const -{ - return m_size; -} + WXPixmap pixmap = (WXPixmap)*(Pixmap*)buf; -void wxPrivateDataObject::WriteData( const void *data, void *dest ) const -{ - memcpy( dest, data, GetSize() ); -} + m_bitmap.Create( pixmap ); -#endif // 0 + return true; +} #endif // wxUSE_CLIPBOARD