[whatwg] more drag/drop feedback

The initDragEvent/initDragEvent methods take a DataTransfer as an 
argument. Is it expected that the DataTransfer to use here can be 
created with 'new DataTransfer'?

IE and Safari allow a no-argument form of clearData as well which clears 
all formats.

The description for the 'types' property implies that this should be a 
live list. Why?

The clearData, setData and getData methods should clarify what happens 
if an empty format is supplied.

I still don't understand the purpose of the addElement method. Either 
this should be removed or there should be clarification of the 
difference between addElement and setDragImage

Previously, I said that DragEvents should be UIEvents. I think they 
should instead inherit from MouseEvent.

We have a need to be able to support both dragging multiple items, as 
well as dragging non-string data, for instance dragging a set of files 
as a set of File objects (see http://www.w3.org/TR/file-upload/) from 
the file system onto a page.

For this, we would also like to propose methods like the following, 
which are analagous to the existing methods (where Variant is just any 
type of object):

/**
* The number of items being dragged.
*/
readonly attribute unsigned long itemCount;

/**
* Holds a list of the format types of the data that is stored for an item
* at the specified index. If the index is not in the range from 0 to
* itemCount - 1, an empty string list is returned.
*/
DOMStringList typesAt(in unsigned long index);

/**
* Remove the data associated with the given format for an item at the
* specified index. The index is in the range from zero to itemCount - 1.
*
* If the last format for the item is removed, the entire item is removed,
* reducing the itemCount by one.
*
* If format is empty, then the data associated with all formats is removed.
* If the format is not found, then this method has no effect.
*
* @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater or equal than 
itemCount
*/
void clearDataAt(in DOMString format, in unsigned long index);

/*
* setDataAt may only be called with an index argument less than
* itemCount in which case an existing item is modified, or equal to
* itemCount in which case a new item is added, and the itemCount is
* incremented by one.
*
* Data should be added in order of preference, with the most specific
* format added first and the least specific format added last. If data of
* the given format already exists, it is replaced in the same position as
* the old data.
*
* @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater than itemCount
*/
void setDataAt(in DOMString format, in Variant data, in unsigned long 
index);

/**
* Retrieve the data associated with the given format for an item at the
* specified index, or null if it does not exist. The index should be in the
* range from zero to itemCount - 1.
*
* @throws NS_ERROR_DOM_INDEX_SIZE_ERR if index is greater or equal than 
itemCount
*/
Variant getDataAt(in DOMString format, in unsigned long index);

Received on Wednesday, 18 June 2008 07:46:20 UTC