top of page

Notes

 

All targets should provide scroll zones along the edges to allow users without a mousewheel to scroll the target.

 

We are collecting examples to show DND might work in various cases.  Dragging text is straightforward since there are several well-known formats, including text/plain and text/enriched.  Dragging files is at least equally important.

 

We have also developed extensions that allow dropping on the root window and on windows that do not support XDND.

 

XdndActionLink only makes sense within a single program or between cooperating programs because the target must obtain not only the data, but also the location of the data.  In all other cases, the target should respond with XdndActionCopy or XdndActionPrivate in the XdndStatus message.

 

On the other hand, XdndActionAsk makes equally good sense between unrelated programs and cooperating programs.  However, when the source and target are unrelated, the target may choose to provide a list of actions that it can perform on its own after retrieving the data instead of asking the source for a list of actions.

 

Remember also that you must debounce the mouse drag.  If the user moves the mouse by only a couple of pixels while clicking to select something, then it is far more likely that the user is a bit clumsy than that the user intends to start a drag.  A threshold of 3 pixels is typical.

 

Getting up on my soap box...

 

In my opinion, programs should not change the cursor during the drag because this provides the user with the most consistent picture.  The user is always dragging the same data, regardless of whether or not the current target will accept it.  It is the target that should change to show whether or not it will accept the drop.

 

However, if you want to be Microsoft compliant, you have to change the cursor.  As usual, Microsoft got it backwards...

 

As a side note, on page 253 of his book, About Face, Alan Cooper agrees wholeheartedly.

 

The single exception that I endorse is adding a small symbol to the cursor to show that the requested action will be performed, instead of XdndActionPrivate.  For an example, refer to the page on dragging files.

 

<< Previous | Next >>

 

bottom of page