Bug 50022 [DND] NPE in DelegatingDragAdapter
DelegatingDragAdapater defines a list "activeListeners" but initializes it only in DragStart. However, the list is referenced in removeDragSourceListener without a null check, thus causing a null pointer exception if no dragStart ever occured.
bundles/org.eclipse.jface/src/org/eclipse/jface/util/DelegatingDragAdapter.java
* </p> 
 * The <code>DragSource</code>'s set of supported Transfer types ({@link
 * DragSource#setTransfer(Transfer[])}) is updated to reflect the Transfer types
 * corresponding to the active listener subset.
 * <p>
 * If and when {@link #dragSetData(DragSourceEvent)} is called, a single
 * <code>TransferDragSourceListener</code> is chosen, and only it is allowed to set the
 * drag data. The chosen listener is the first listener in the subset of active listeners
 * whose Transfer supports ({@link Transfer#isSupportedType(TransferData)}) the 
 * <code>dataType</code> in the <code>DragSourceEvent</code>.
 * </p>
 * <p>
 * The following example snippet shows a <code>DelegatingDragAdapter</code> with two
 * <code>TransferDragSourceListeners</code>. One implements drag of text strings, 
 * the other supports file transfer and demonstrates how a listener can be disabled using
 * the dragStart method. 
 * </p>
 * <code><pre>
 *		final TreeViewer viewer = new TreeViewer(shell, SWT.NONE);
 *		
 *		DelegatingDragAdapter dragAdapter = new DelegatingDragAdapter();		
 *		dragAdapter.addDragSourceListener(new TransferDragSourceListener() {
 *			public Transfer getTransfer() {
 *				return TextTransfer.getInstance();
 *			}
 *			public void dragStart(DragSourceEvent event) {
 *				// always enabled, can control enablement based on selection etc.
 *			}
 *			public void dragSetData(DragSourceEvent event) {
 *				event.data = "Transfer data";