OS.ImageList_DragShowNolock(false);
void showDropTargetEffect(int effect, int x, int y) {	effect = checkEffect(effect);	int handle = table.handle;	Point coordinates = new Point(x, y);	coordinates = table.toControl(coordinates);	LVHITTESTINFO pinfo = new LVHITTESTINFO();	pinfo.x = coordinates.x;	pinfo.y = coordinates.y;	OS.SendMessage(handle, OS.LVM_HITTEST, 0, pinfo);		if ((effect & DND.FEEDBACK_SCROLL) == 0) {		scrollBeginTime = 0;		scrollIndex = -1;	} else {		if (pinfo.iItem != -1 && scrollIndex == pinfo.iItem && scrollBeginTime != 0) {			if (System.currentTimeMillis() >= scrollBeginTime) {				int top = Math.max (0, OS.SendMessage (handle, OS.LVM_GETTOPINDEX, 0, 0));				int count = OS.SendMessage (handle, OS.LVM_GETITEMCOUNT, 0, 0);				int index = (scrollIndex - 1 < top) ? Math.max(0, scrollIndex - 1) : Math.min(count - 1, scrollIndex + 1);				boolean scroll = true;				if (pinfo.iItem == top) {					scroll = pinfo.iItem != index;				} else {					RECT itemRect = new RECT ();					itemRect.left = OS.LVIR_BOUNDS;					if (OS.SendMessage (handle, OS.LVM_GETITEMRECT, pinfo.iItem, itemRect) != 0) {						RECT rect = new RECT ();						OS.GetClientRect (handle, rect);						POINT pt = new POINT ();						pt.x = itemRect.left;						pt.y = itemRect.top;						if (OS.PtInRect (rect, pt)) {							pt.y = itemRect.bottom;							if (OS.PtInRect (rect, pt)) scroll = false;						}					}				}				if (scroll) {					OS.ImageList_DragShowNolock(false);					OS.SendMessage (handle, OS.LVM_ENSUREVISIBLE, index, 0);					table.update();					OS.ImageList_DragShowNolock(true);				}				scrollBeginTime = 0;				scrollIndex = -1;			}		} else {			scrollBeginTime = System.currentTimeMillis() + SCROLL_HYSTERESIS;			scrollIndex = pinfo.iItem;		}	}		if (pinfo.iItem != -1 && (effect & DND.FEEDBACK_SELECT) != 0) {		TableItem item = table.getItem(pinfo.iItem);		if (dropHighlight != item) {			LVITEM lvItem = new LVITEM();			lvItem.stateMask = OS.LVIS_DROPHILITED;			OS.ImageList_DragShowNolock(false);			OS.SendMessage(handle, OS.LVM_SETITEMSTATE, -1, lvItem);					lvItem.state = OS.LVIS_DROPHILITED;			OS.SendMessage(handle, OS.LVM_SETITEMSTATE, pinfo.iItem, lvItem);			table.update();			OS.ImageList_DragShowNolock(true);			dropHighlight = item;		}	} else {		if (dropHighlight != null) {			LVITEM lvItem = new LVITEM ();			lvItem.stateMask = OS.LVIS_DROPHILITED;			OS.ImageList_DragShowNolock(false);			OS.SendMessage(handle, OS.LVM_SETITEMSTATE, -1, lvItem);					table.update();			OS.ImageList_DragShowNolock(true);			dropHighlight = null;		}	}	//Insert mark only supported on Windows XP with manifest//	if (OS.COMCTL32_MAJOR >= 6) {//		if ((effect & DND.FEEDBACK_INSERT_BEFORE) != 0 || (effect & DND.FEEDBACK_INSERT_AFTER) != 0) {//			LVINSERTMARK lvinsertmark = new LVINSERTMARK();//			lvinsertmark.cbSize = LVINSERTMARK.sizeof;//			lvinsertmark.dwFlags = (effect & DND.FEEDBACK_INSERT_BEFORE) != 0 ? 0 : OS.LVIM_AFTER;//			lvinsertmark.iItem = pinfo.iItem == -1 ? 0 : pinfo.iItem;//			int hItem = pinfo.iItem;//			OS.SendMessage (handle, OS.LVM_SETINSERTMARK, 0, lvinsertmark);//		} else {//			OS.SendMessage (handle, OS.LVM_SETINSERTMARK, 0, 0);//		}//	}	return;}