Implemented wxURLDataObject for wxGTK using text/x-moz-url
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -502,12 +502,13 @@ private:
|
||||
|
||||
#if defined(__WXMSW__)
|
||||
#include "wx/msw/ole/dataobj2.h"
|
||||
|
||||
// wxURLDataObject defined in msw/ole/dataobj2.h
|
||||
#else // !__WXMSW__
|
||||
#if defined(__WXGTK20__)
|
||||
#elif defined(__WXGTK20__)
|
||||
#include "wx/gtk/dataobj2.h"
|
||||
#elif defined(__WXGTK__)
|
||||
// wxURLDataObject defined in msw/ole/dataobj2.h
|
||||
|
||||
#else
|
||||
#if defined(__WXGTK__)
|
||||
#include "wx/gtk1/dataobj2.h"
|
||||
#elif defined(__WXX11__)
|
||||
#include "wx/x11/dataobj2.h"
|
||||
@@ -533,7 +534,7 @@ private:
|
||||
wxString GetURL() const { return GetText(); }
|
||||
void SetURL(const wxString& url) { SetText(url); }
|
||||
};
|
||||
#endif // __WXMSW__/!__WXMSW__
|
||||
#endif
|
||||
|
||||
#endif // wxUSE_DATAOBJ
|
||||
|
||||
|
@@ -89,5 +89,26 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxURLDataObject is a specialization of wxDataObject for URLs
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxURLDataObject : public wxDataObjectSimple
|
||||
{
|
||||
public:
|
||||
wxURLDataObject(const wxString& url = wxEmptyString);
|
||||
|
||||
wxString GetURL() const { return m_url; }
|
||||
void SetURL(const wxString& url) { m_url = url; }
|
||||
|
||||
private:
|
||||
wxString m_url;
|
||||
|
||||
virtual size_t GetDataSize() const;
|
||||
virtual bool GetDataHere(void *buf) const;
|
||||
virtual bool SetData(size_t len, const void *buf);
|
||||
};
|
||||
|
||||
|
||||
#endif // _WX_GTK_DATAOBJ2_H_
|
||||
|
||||
|
@@ -402,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
|
||||
|
@@ -196,6 +196,16 @@ static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget),
|
||||
return FALSE, otherwise call gtk_drag_status() and
|
||||
return TRUE" */
|
||||
|
||||
#if 0
|
||||
wxPrintf( "motion\n" );
|
||||
GList *tmp_list;
|
||||
for (tmp_list = context->targets; tmp_list; tmp_list = tmp_list->next)
|
||||
{
|
||||
wxString atom = wxString::FromAscii( gdk_atom_name (GDK_POINTER_TO_ATOM (tmp_list->data)) );
|
||||
wxPrintf( "Atom: %s\n", atom );
|
||||
}
|
||||
#endif
|
||||
|
||||
/* inform the wxDropTarget about the current GdkDragContext.
|
||||
this is only valid for the duration of this call */
|
||||
drop_target->SetDragContext( context );
|
||||
@@ -229,6 +239,7 @@ static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget),
|
||||
else if (drop_target->GetDefaultAction() == wxDragMove &&
|
||||
(context->actions & GDK_ACTION_MOVE))
|
||||
{
|
||||
|
||||
result = wxDragMove;
|
||||
}
|
||||
else
|
||||
@@ -293,8 +304,6 @@ static gboolean target_drag_drop( GtkWidget *widget,
|
||||
the drop, call gtk_drag_finish() with success == FALSE
|
||||
otherwise call gtk_drag_data_get()" */
|
||||
|
||||
// printf( "drop.\n" );
|
||||
|
||||
/* this seems to make a difference between not accepting
|
||||
due to wrong target area and due to wrong format. let
|
||||
us hope that this is not required.. */
|
||||
|
Reference in New Issue
Block a user