Graphisoft®

Dialog ManagerVersion: 2.0

TreeViewDropTargetObserver::TreeViewDragMoved

Event handler for the drag moved notification.

virtual void TreeViewDragMoved (
    const TreeViewDropTargetEvent & ev,
    DragDrop::Effect *  effect,
    DragDrop::Feedback * denyFeedback
);

Parameters

ev
A reference to the event.
effect
Drag and drop effect can take the following values: DragDrop::Reject, DragDrop::Accept, DragDrop::Copy, DragDrop::Move, DragDrop::Link, DragDrop::Delete.
denyFeedback
Use this parameter to control the amount of target feedback. Can take the following values: DragDrop::AcceptSelAndIns, DragDrop::RejectSelection, DragDrop::RejectInsertion, DragDrop::RejectSelAndIns.

Description

This virtual member tracks the movement over a drop target in a drag and drop operation. It is possible to control the allowed effects over the drag target or draw custom feedback.

Example

// Method Example:
void	DragTab2Observer::TreeViewDragMoved (const DG::TreeViewDropTargetEvent& ev, DG::DragDrop::Effect* effect,
											 DG::DragDrop::Feedback* denyFeedback)
{
	long insertPosTreeItem = ev.GetInsertPosition ();
	DG::TreeView* sourceTree = ev.GetTreeViewSource ();
	if (sourceTree != NULL && !IsValidInsertionPos (ev, insertPosTreeItem)) {
		*effect = DG::DragDrop::Reject;
		*denyFeedback = DG::DragDrop::RejectSelAndIns;
		return;
	}
	if (insertPosTreeItem != DG::TreeView::RootItem && insertPosTreeItem != DG::TreeView::NoItem) {
		long size = tabPage->treeView.GetItemTextLength (insertPosTreeItem);
		char* text = BMAllocatePtr (size, ALLOCATE_CLEAR, 0);
		if (DBERROR (text == NULL))
			return;
		tabPage->treeView.GetItemText (insertPosTreeItem, text, size);
		if (CHCompareASCII (text, ARCHICAD_TEXT) == 0) {
			*denyFeedback = DG::DragDrop::RejectSelAndIns;
		}
		BMKillPtr (&text);
	}
}

Drag moved event handling in tree view controls.