- Added wxTimePickerCtrl::Get/SetTime().
- Fix WXK_MENU handling in wxStyledTextCtrl under wxGTK (cantabile).
- Added wxAcceleratorEntry::ToRawString() (Armel Asselin).
+- Added wxDataViewEvent::SetDragFlags() and GetDropEffect() (Friedrich).
GTK:
#include "wx/textctrl.h"
#include "wx/headercol.h"
#include "wx/variant.h"
+#include "wx/dnd.h" // For wxDragResult declaration only.
#include "wx/dynarray.h"
#include "wx/icon.h"
#include "wx/itemid.h"
#if wxUSE_DRAG_AND_DROP
, m_dataObject(NULL),
m_dataBuffer(NULL),
- m_dataSize(0)
+ m_dataSize(0),
+ m_dragFlags(0),
+ m_dropEffect(wxDragNone)
#endif
{ }
, m_dataObject(event.m_dataObject),
m_dataFormat(event.m_dataFormat),
m_dataBuffer(event.m_dataBuffer),
- m_dataSize(event.m_dataSize)
+ m_dataSize(event.m_dataSize),
+ m_dragFlags(event.m_dragFlags),
+ m_dropEffect(event.m_dropEffect)
#endif
{ }
size_t GetDataSize() const { return m_dataSize; }
void SetDataBuffer( void* buf ) { m_dataBuffer = buf;}
void *GetDataBuffer() const { return m_dataBuffer; }
+ void SetDragFlags( int flags ) { m_dragFlags = flags; }
+ int GetDragFlags() const { return m_dragFlags; }
+ void SetDropEffect( wxDragResult effect ) { m_dropEffect = effect; }
+ wxDragResult GetDropEffect() const { return m_dropEffect; }
#endif // wxUSE_DRAG_AND_DROP
virtual wxEvent *Clone() const { return new wxDataViewEvent(*this); }
wxDataFormat m_dataFormat;
void* m_dataBuffer;
size_t m_dataSize;
+
+ int m_dragFlags;
+ wxDragResult m_dropEffect;
#endif // wxUSE_DRAG_AND_DROP
private:
*/
void *GetDataBuffer() const;
+ /**
+ Specify the kind of the drag operation to perform.
+
+ This method can be used inside a wxEVT_COMMAND_DATAVIEW_ITEM_BEGIN_DRAG
+ handler in order to configure the drag operation. Valid values are
+ ::wxDrag_CopyOnly (default), ::wxDrag_AllowMove (allow the data to be
+ moved) and ::wxDrag_DefaultMove.
+
+ Currently it is only honoured by the generic version of wxDataViewCtrl
+ (used e.g. under MSW) and not supported by the native GTK and OS X
+ versions.
+
+ @see GetDropEffect()
+
+ @since 2.9.4
+ */
+ void SetDragFlags(int flags);
+
+ /**
+ Returns the effect the user requested to happen to the dropped data.
+
+ This function can be used inside
+ wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE and
+ wxEVT_COMMAND_DATAVIEW_ITEM_DROP handlers and returns whether the user
+ is trying to copy (the return value is ::wxDragCopy) or move (if the
+ return value is ::wxDragMove) the data.
+
+ Currently this is only available when using the generic version of
+ wxDataViewCtrl (used e.g. under MSW) and always returns ::wxDragNone in
+ the GTK and OS X native versions.
+
+ @since 2.9.4
+ */
+ wxDragResult GetDropEffect() const;
+
/**
Return the first row that will be displayed.
*/
wxTextDataObject *obj = new wxTextDataObject;
obj->SetText( node->m_title );
event.SetDataObject( obj );
+ event.SetDragFlags(wxDrag_AllowMove); // allows both copy and move
}
void MyFrame::OnDropPossible( wxDataViewEvent &event )
event.SetItem( item );
event.SetModel( model );
event.SetDataFormat( format );
+ event.SetDropEffect( def );
if (!m_owner->HandleWindowEvent( event ))
{
RemoveDropHint();
event.SetDataFormat( format );
event.SetDataSize( obj->GetSize() );
event.SetDataBuffer( obj->GetData() );
+ event.SetDropEffect( def );
if (!m_owner->HandleWindowEvent( event ))
return wxDragNone;
wxDataViewDropSource drag( this, drag_item_row );
drag.SetData( *obj );
- /* wxDragResult res = */ drag.DoDragDrop();
+ /* wxDragResult res = */ drag.DoDragDrop(event.GetDragFlags());
delete obj;
}
return;