XtSetArg (args[n], XmNimportTargets, &importTargets); n++;
XtSetArg (args[n], XmNnumImportTargets, &numImportTargets); n++;
XtSetArg (args[n], XmNdropProc, &drop_proc); n++;
XmDropSiteRetrieve (text_edit, args, n);
Although a drop site is always associated with a widget, the XtVaGetValues() routine cannot be used to retrieve
drop site resources, as the resources are stored separately from the widget in a DropSite object. We retrieve the
XmN-importTargets resource so that we can add our own targets to the list of data targets for the drop site. A
drop site can only have one XmN-dropProc associated with it, so we need to get the existing routine and store it
before we specify our own routine.
Once we have the data targets for the drop site, we create a new list that contains the existing targets, as well as the
FILE_CONTENTS and FILE_NAME targets. We use XmDropSiteUpdate() to modify the drop site:
n = 0;
XtSetArg (args[n], XmNimportTargets, newTargets); n++;
XtSetArg (args[n], XmNnumImportTargets, numImportTargets + 2); n++;
XtSetArg (args[n], XmNdropProc, HandleDropText); n++;
XmDropSiteUpdate (text_edit, args, n);
The HandleDropText() routine processes the drops that occur in the Text widget. We explain this routine in
detail in the following section.
If you need to update information for a number of drop sites, you should use the XmDropSiteStartUpdate()
and XmDropSiteEndUpdate() routines, as they optimize the process. After a call to
XmDropSiteStartUpdate(), you can call XmDropSiteUpdate() ...