implement wxWindow::DragAcceptFiles() on all platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -355,6 +355,14 @@ public:
|
|||||||
m_strings[i] = m_array[i];
|
m_strings[i] = m_array[i];
|
||||||
return m_strings;
|
return m_strings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxString* Release()
|
||||||
|
{
|
||||||
|
wxString *r = GetStrings();
|
||||||
|
m_strings = NULL;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const wxArrayString& m_array;
|
const wxArrayString& m_array;
|
||||||
wxString* m_strings;
|
wxString* m_strings;
|
||||||
|
@@ -1230,6 +1230,16 @@ public:
|
|||||||
// NULL; it's owned by the window and will be deleted by it)
|
// NULL; it's owned by the window and will be deleted by it)
|
||||||
virtual void SetDropTarget( wxDropTarget *dropTarget ) = 0;
|
virtual void SetDropTarget( wxDropTarget *dropTarget ) = 0;
|
||||||
virtual wxDropTarget *GetDropTarget() const { return m_dropTarget; }
|
virtual wxDropTarget *GetDropTarget() const { return m_dropTarget; }
|
||||||
|
|
||||||
|
// Accept files for dragging
|
||||||
|
virtual void DragAcceptFiles(bool accept)
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
// it does have common implementation but not for MSW which has its own
|
||||||
|
// native version of it
|
||||||
|
= 0
|
||||||
|
#endif // __WXMSW__
|
||||||
|
;
|
||||||
|
|
||||||
#endif // wxUSE_DRAG_AND_DROP
|
#endif // wxUSE_DRAG_AND_DROP
|
||||||
|
|
||||||
// constraints and sizers
|
// constraints and sizers
|
||||||
|
@@ -600,7 +600,11 @@ public:
|
|||||||
If @true, the window is eligible for drop file events.
|
If @true, the window is eligible for drop file events.
|
||||||
If @false, the window will not accept drop file events.
|
If @false, the window will not accept drop file events.
|
||||||
|
|
||||||
@remarks Windows only.
|
@remarks Windows only until version 2.8.9, available on all platforms
|
||||||
|
since 2.8.10. Cannot be used together with SetDropTarget() on
|
||||||
|
non-Windows platforms.
|
||||||
|
|
||||||
|
@see SetDropTarget()
|
||||||
*/
|
*/
|
||||||
virtual void DragAcceptFiles(bool accept);
|
virtual void DragAcceptFiles(bool accept);
|
||||||
|
|
||||||
|
@@ -2897,6 +2897,61 @@ bool wxWindowBase::HasFocus() const
|
|||||||
win == wxConstCast(this, wxWindowBase)->GetMainWindowOfCompositeControl();
|
win == wxConstCast(this, wxWindowBase)->GetMainWindowOfCompositeControl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// drag and drop
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if wxUSE_DRAG_AND_DROP && !defined(__WXMSW__)
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
class DragAcceptFilesTarget : public wxFileDropTarget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DragAcceptFilesTarget(wxWindowBase *win) : m_win(win) {}
|
||||||
|
|
||||||
|
virtual bool OnDropFiles(wxCoord x, wxCoord y,
|
||||||
|
const wxArrayString& filenames)
|
||||||
|
{
|
||||||
|
wxDropFilesEvent event(wxEVT_DROP_FILES,
|
||||||
|
filenames.size(),
|
||||||
|
wxCArrayString(filenames).Release());
|
||||||
|
event.SetEventObject(m_win);
|
||||||
|
event.m_pos.x = x;
|
||||||
|
event.m_pos.y = y;
|
||||||
|
|
||||||
|
return m_win->HandleWindowEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxWindowBase * const m_win;
|
||||||
|
|
||||||
|
DECLARE_NO_COPY_CLASS(DragAcceptFilesTarget)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
// Generic version of DragAcceptFiles(). It works by installing a simple
|
||||||
|
// wxFileDropTarget-to-EVT_DROP_FILES adaptor and therefore cannot be used
|
||||||
|
// together with explicit SetDropTarget() calls.
|
||||||
|
void wxWindowBase::DragAcceptFiles(bool accept)
|
||||||
|
{
|
||||||
|
if ( accept )
|
||||||
|
{
|
||||||
|
wxASSERT_MSG( !GetDropTarget(),
|
||||||
|
"cannot use DragAcceptFiles() and SetDropTarget() together" );
|
||||||
|
SetDropTarget(new DragAcceptFilesTarget(this));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetDropTarget(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // wxUSE_DRAG_AND_DROP && !defined(__WXMSW__)
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// global functions
|
// global functions
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user