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__)
|
#if defined(__WXMSW__)
|
||||||
#include "wx/msw/ole/dataobj2.h"
|
#include "wx/msw/ole/dataobj2.h"
|
||||||
|
|
||||||
// wxURLDataObject defined in msw/ole/dataobj2.h
|
// wxURLDataObject defined in msw/ole/dataobj2.h
|
||||||
#else // !__WXMSW__
|
#elif defined(__WXGTK20__)
|
||||||
#if defined(__WXGTK20__)
|
|
||||||
#include "wx/gtk/dataobj2.h"
|
#include "wx/gtk/dataobj2.h"
|
||||||
#elif defined(__WXGTK__)
|
// wxURLDataObject defined in msw/ole/dataobj2.h
|
||||||
|
|
||||||
|
#else
|
||||||
|
#if defined(__WXGTK__)
|
||||||
#include "wx/gtk1/dataobj2.h"
|
#include "wx/gtk1/dataobj2.h"
|
||||||
#elif defined(__WXX11__)
|
#elif defined(__WXX11__)
|
||||||
#include "wx/x11/dataobj2.h"
|
#include "wx/x11/dataobj2.h"
|
||||||
@@ -533,7 +534,7 @@ private:
|
|||||||
wxString GetURL() const { return GetText(); }
|
wxString GetURL() const { return GetText(); }
|
||||||
void SetURL(const wxString& url) { SetText(url); }
|
void SetURL(const wxString& url) { SetText(url); }
|
||||||
};
|
};
|
||||||
#endif // __WXMSW__/!__WXMSW__
|
#endif
|
||||||
|
|
||||||
#endif // wxUSE_DATAOBJ
|
#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_
|
#endif // _WX_GTK_DATAOBJ2_H_
|
||||||
|
|
||||||
|
@@ -402,4 +402,53 @@ void wxBitmapDataObject::DoConvertToPng()
|
|||||||
image.SaveFile(mstream, wxBITMAP_TYPE_PNG);
|
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
|
#endif // wxUSE_DATAOBJ
|
||||||
|
@@ -196,6 +196,16 @@ static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget),
|
|||||||
return FALSE, otherwise call gtk_drag_status() and
|
return FALSE, otherwise call gtk_drag_status() and
|
||||||
return TRUE" */
|
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.
|
/* inform the wxDropTarget about the current GdkDragContext.
|
||||||
this is only valid for the duration of this call */
|
this is only valid for the duration of this call */
|
||||||
drop_target->SetDragContext( context );
|
drop_target->SetDragContext( context );
|
||||||
@@ -229,6 +239,7 @@ static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget),
|
|||||||
else if (drop_target->GetDefaultAction() == wxDragMove &&
|
else if (drop_target->GetDefaultAction() == wxDragMove &&
|
||||||
(context->actions & GDK_ACTION_MOVE))
|
(context->actions & GDK_ACTION_MOVE))
|
||||||
{
|
{
|
||||||
|
|
||||||
result = wxDragMove;
|
result = wxDragMove;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -293,8 +304,6 @@ static gboolean target_drag_drop( GtkWidget *widget,
|
|||||||
the drop, call gtk_drag_finish() with success == FALSE
|
the drop, call gtk_drag_finish() with success == FALSE
|
||||||
otherwise call gtk_drag_data_get()" */
|
otherwise call gtk_drag_data_get()" */
|
||||||
|
|
||||||
// printf( "drop.\n" );
|
|
||||||
|
|
||||||
/* this seems to make a difference between not accepting
|
/* this seems to make a difference between not accepting
|
||||||
due to wrong target area and due to wrong format. let
|
due to wrong target area and due to wrong format. let
|
||||||
us hope that this is not required.. */
|
us hope that this is not required.. */
|
||||||
|
Reference in New Issue
Block a user