- if (!m_hasAtom)
- {
- m_hasAtom = TRUE;
-
- if (m_type == wxDF_TEXT)
- {
- m_atom = g_textAtom;
- }
- else
- if (m_type == wxDF_BITMAP)
- {
- m_atom = GDK_TARGET_BITMAP;
- }
- else
- if (m_type == wxDF_PRIVATE)
- {
- m_atom = gdk_atom_intern( wxMBSTRINGCAST m_id.mbc_str(), FALSE );
- }
- else
- if (m_type == wxDF_FILENAME)
- {
- m_atom = gdk_atom_intern( "file:ALL", FALSE );
- }
- else
- {
- m_hasAtom = FALSE;
- m_atom = (GdkAtom) 0;
- }
- }
-
- return m_atom;
-}
-
-void wxDataFormat::PrepareFormats()
-{
- if (!g_textAtom) g_textAtom = gdk_atom_intern( "STRING", FALSE );
- if (!g_pngAtom) g_pngAtom = gdk_atom_intern( "image/png", FALSE );
-}
-
-//-------------------------------------------------------------------------
-// wxDataBroker
-//-------------------------------------------------------------------------
-
-IMPLEMENT_CLASS(wxDataBroker,wxObject)
-
-wxDataBroker::wxDataBroker()
-{
- m_dataObjects.DeleteContents(TRUE);
- m_preferred = 0;
-}
-
-void wxDataBroker::Add( wxDataObject *dataObject, bool preferred )
-{
- if (preferred) m_preferred = m_dataObjects.GetCount();
- m_dataObjects.Append( dataObject );
-}
-
-size_t wxDataBroker::GetFormatCount() const
-{
- return m_dataObjects.GetCount();
-}
-
-wxDataFormatId wxDataBroker::GetPreferredFormat() const
-{
- wxNode *node = m_dataObjects.Nth( m_preferred );
-
- wxASSERT( node );
-
- wxDataObject* data_obj = (wxDataObject*)node->Data();
-
- return data_obj->GetFormat().GetType();
-}
-
-wxDataFormat &wxDataBroker::GetNthFormat( size_t nth ) const
-{
- wxNode *node = m_dataObjects.Nth( nth );
-
- wxASSERT( node );
-
- wxDataObject* data_obj = (wxDataObject*)node->Data();
-
- return data_obj->GetFormat();
-}
-
-bool wxDataBroker::IsSupportedFormat( wxDataFormat &format ) const
-{
- wxNode *node = m_dataObjects.First();
- while (node)
- {
- wxDataObject *dobj = (wxDataObject*)node->Data();
-
- if (dobj->GetFormat().GetAtom() == format.GetAtom())
- {
- return TRUE;
- }
-
- node = node->Next();
- }