Bug 23553 Type Hierarchy shows wrong drop cursor
If you drag and drop a Java Element onto the Type Hierarchy, there are several different reactions depending on the drop target you point at: 1. Point at a binary type -> NO DROP cursor: no drop possible 2. Point at source type -> COPY cursor: copies the drag source into the target 3. Point at the TreeViewer, but NOT at an element (i.e. besides or below of the tree's items) -> COPY cursor: doesn't copy, but sets hierarchy's focus to the drag source. Case 3 is confusing. We shouldn't show a copy cursor if we are not going to copy anything. The right cursor for this 'setFocus' action is the LINK cursor. The current behaviour is even more confusing because placing the mouse besides a type label highlights the label (even though that label has nothing to do with the 'setFocus' action that is triggered on mouseup). Using the link cursor would allow a visual discrimination between these two highly differing actions.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyTransferDropAdapter.java
initializeSelection();
		if (target != null){
			super.validateDrop(target, event, operation);
			return;
		}	
		if (getInputElement(getSelection()) != null) 
			event.detail= DND.DROP_COPY;
	}
	public void drop(Object target, DropTargetEvent event) {
		if (target != null || event.detail != DND.DROP_COPY){
			super.drop(target, event);
			return;
		}	
		IJavaElement input= getInputElement(getSelection());
		fTypeHierarchyViewPart.setInputElement(input);
		if (input instanceof IMember) 
			fTypeHierarchyViewPart.selectMember((IMember) input);
	}
	
	private static IJavaElement getInputElement(ISelection selection) {
		Object single= SelectionUtil.getSingleElement(selection);
		if (single == null)
			return null;
		IJavaElement[] candidates= OpenTypeHierarchyUtil.getCandidates(single);
		if (candidates != null && candidates.length > 0) 
			return candidates[0];
		return null;
	}
}