Added SetURL to wxURLDataObject
Fixed the Mozilla problem by reversing the order of the component DOs
in the wxURLDataObject. By checking the wxTextDataObject first then
it avoids the problem of how Mozilla sends the UniformResourceLocator
data.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12166
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
{
public:
wxString GetURL() const { return GetText(); }
{
public:
wxString GetURL() const { return GetText(); }
+ void SetURL(const wxString& url) { SetText(url); }
};
#endif // __WXMSW__/!__WXMSW__
};
#endif // __WXMSW__/!__WXMSW__
wxDragNone, // drag target didn't accept the data
wxDragCopy, // the data was successfully copied
wxDragMove, // the data was successfully moved (MSW only)
wxDragNone, // drag target didn't accept the data
wxDragCopy, // the data was successfully copied
wxDragMove, // the data was successfully moved (MSW only)
+ wxDragLink, // operation is a drag-link
wxDragCancel // the operation was cancelled by user (not an error)
};
inline WXDLLEXPORT bool wxIsDragResultOk(wxDragResult res)
{
wxDragCancel // the operation was cancelled by user (not an error)
};
inline WXDLLEXPORT bool wxIsDragResultOk(wxDragResult res)
{
- return res == wxDragCopy || res == wxDragMove;
+ return res == wxDragCopy || res == wxDragMove || res == wxDragLink;
}
// ----------------------------------------------------------------------------
}
// ----------------------------------------------------------------------------
// return the URL as string
wxString GetURL() const;
// return the URL as string
wxString GetURL() const;
+ // Set a string as the URL in the data object
+ void SetURL(const wxString& url);
+
// override to set m_textFormat
virtual bool SetData(const wxDataFormat& format,
size_t len,
// override to set m_textFormat
virtual bool SetData(const wxDataFormat& format,
size_t len,
// URLs can't be moved, only copied
virtual wxDragResult OnDragOver(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
wxDragResult def)
// URLs can't be moved, only copied
virtual wxDragResult OnDragOver(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
wxDragResult def)
- { return def == wxDragMove ? wxDragCopy : def; }
+ {
+ return wxDragLink; // At least IE 5.x needs wxDragLink, the
+ // other browsers on MSW seem okay with it too.
+ }
// translate this to calls to OnDropURL() just for convenience
virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def)
// translate this to calls to OnDropURL() just for convenience
virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def)
const wxString choices[] = { wxT("None"), wxT("Triangle"),
wxT("Rectangle"), wxT("Ellipse") };
const wxString choices[] = { wxT("None"), wxT("Triangle"),
wxT("Rectangle"), wxT("Ellipse") };
- m_radio = new wxRadioBox( this, -1, wxT("&Shape"),
+ m_radio = new wxRadioBox( this, -1, wxT("&Shape"),
wxDefaultPosition, wxDefaultSize, 4, choices, 4,
wxRA_SPECIFY_COLS );
shapesSizer->Add( m_radio, 0, wxGROW|wxALL, 5 );
wxDefaultPosition, wxDefaultSize, 4, choices, 4,
wxRA_SPECIFY_COLS );
shapesSizer->Add( m_radio, 0, wxGROW|wxALL, 5 );
wxStaticBox* box = new wxStaticBox( this, -1, wxT("&Attributes") );
wxStaticBoxSizer* attrSizer = new wxStaticBoxSizer( box, wxHORIZONTAL );
wxFlexGridSizer* xywhSizer = new wxFlexGridSizer( 4, 2 );
wxStaticBox* box = new wxStaticBox( this, -1, wxT("&Attributes") );
wxStaticBoxSizer* attrSizer = new wxStaticBoxSizer( box, wxHORIZONTAL );
wxFlexGridSizer* xywhSizer = new wxFlexGridSizer( 4, 2 );
wxStaticText* st;
st = new wxStaticText( this, -1, wxT("Position &X:") );
m_textX = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
wxStaticText* st;
st = new wxStaticText( this, -1, wxT("Position &X:") );
m_textX = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
- xywhSizer->Add( st, 1, wxGROW|wxALL, 2 );
- xywhSizer->Add( m_textX, 1, wxGROW|wxALL, 2 );
+ xywhSizer->Add( st, 1, wxGROW|wxALL, 2 );
+ xywhSizer->Add( m_textX, 1, wxGROW|wxALL, 2 );
st = new wxStaticText( this, -1, wxT("Size &width:") );
m_textW = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
st = new wxStaticText( this, -1, wxT("Size &width:") );
m_textW = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
- xywhSizer->Add( st, 1, wxGROW|wxALL, 2 );
- xywhSizer->Add( m_textW, 1, wxGROW|wxALL, 2 );
+ xywhSizer->Add( st, 1, wxGROW|wxALL, 2 );
+ xywhSizer->Add( m_textW, 1, wxGROW|wxALL, 2 );
st = new wxStaticText( this, -1, wxT("&Y:") );
m_textY = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
st = new wxStaticText( this, -1, wxT("&Y:") );
m_textY = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
- xywhSizer->Add( st, 1, wxALL|wxALIGN_RIGHT, 2 );
- xywhSizer->Add( m_textY, 1, wxGROW|wxALL, 2 );
+ xywhSizer->Add( st, 1, wxALL|wxALIGN_RIGHT, 2 );
+ xywhSizer->Add( m_textY, 1, wxGROW|wxALL, 2 );
st = new wxStaticText( this, -1, wxT("&height:") );
m_textH = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
st = new wxStaticText( this, -1, wxT("&height:") );
m_textH = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition,
wxSize( 30, 20 ) );
- xywhSizer->Add( st, 1, wxALL|wxALIGN_RIGHT, 2 );
- xywhSizer->Add( m_textH, 1, wxGROW|wxALL, 2 );
+ xywhSizer->Add( st, 1, wxALL|wxALIGN_RIGHT, 2 );
+ xywhSizer->Add( m_textH, 1, wxGROW|wxALL, 2 );
wxButton* col = new wxButton( this, Button_Colour, wxT("&Colour...") );
attrSizer->Add( xywhSizer, 1, wxGROW );
wxButton* col = new wxButton( this, Button_Colour, wxT("&Colour...") );
attrSizer->Add( xywhSizer, 1, wxGROW );
// we support CF_TEXT and CFSTR_SHELLURL formats which are basicly the same
// but it seems that some browsers only provide one of them so we have to
// support both
// we support CF_TEXT and CFSTR_SHELLURL formats which are basicly the same
// but it seems that some browsers only provide one of them so we have to
// support both
- Add(new CFSTR_SHELLURLDataObject());
Add(new wxTextDataObject);
Add(new wxTextDataObject);
+ Add(new CFSTR_SHELLURLDataObject());
// we don't have any data yet
m_dataObjectLast = NULL;
// we don't have any data yet
m_dataObjectLast = NULL;
size_t len = m_dataObjectLast->GetDataSize();
size_t len = m_dataObjectLast->GetDataSize();
- m_dataObjectLast->GetDataHere(url.GetWriteBuf(len + 1));
+ m_dataObjectLast->GetDataHere(url.GetWriteBuf(len));
url.UngetWriteBuf();
return url;
}
url.UngetWriteBuf();
return url;
}
+void wxURLDataObject::SetURL(const wxString& url)
+{
+ SetData(wxDataFormat(wxDF_TEXT), url.Length()+1, url.c_str());
+ SetData(wxDataFormat(CFSTR_SHELLURL), url.Length()+1, url.c_str());
+}
+
// ----------------------------------------------------------------------------
// private functions
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// private functions
// ----------------------------------------------------------------------------
case DROPEFFECT_COPY:
return wxDragCopy;
case DROPEFFECT_COPY:
return wxDragCopy;
+ case DROPEFFECT_LINK:
+ return wxDragLink;
+
case DROPEFFECT_MOVE:
return wxDragMove;
case DROPEFFECT_MOVE:
return wxDragMove;
case wxDragCopy:
return DROPEFFECT_COPY;
case wxDragCopy:
return DROPEFFECT_COPY;
+ case wxDragLink:
+ return DROPEFFECT_LINK;
+
case wxDragMove:
return DROPEFFECT_MOVE;
case wxDragMove:
return DROPEFFECT_MOVE;