var removeDropIndicatorTimer;
/**
+ * The element currently targeted by a touch.
+ * @type {Element}
+ */
+ var currentTouchTarget;
+
+ /**
* The element that had a style applied it to indicate the drop location.
* This is used to easily remove the style when necessary.
* @type {Element}
// Determine the selected bookmarks.
var target = e.target;
var draggedNodes = [];
+ var isFromTouch = target == currentTouchTarget;
+
if (target instanceof ListItem) {
// Use selected items.
draggedNodes = target.parentNode.selectedItems;
chrome.bookmarkManagerPrivate.startDrag(draggedNodes.map(function(node) {
return node.id;
- }));
+ }), isFromTouch);
}
}
dropIndicator.finish();
}
+ function setCurrentTouchTarget(e) {
+ // Only set a new target for a single touch point.
+ if (e.touches.length == 1)
+ currentTouchTarget = getBookmarkElement(e.target);
+ }
+
+ function clearCurrentTouchTarget(e) {
+ if (getBookmarkElement(e.target) == currentTouchTarget)
+ currentTouchTarget = null;
+ }
+
function clearDragData() {
dragInfo.clearDragData();
dropDestination = null;
document.addEventListener('drop', handleDrop);
document.addEventListener('dragend', deferredClearData);
document.addEventListener('mouseup', deferredClearData);
+ document.addEventListener('mousedown', clearCurrentTouchTarget);
+ document.addEventListener('touchcancel', clearCurrentTouchTarget);
+ document.addEventListener('touchend', clearCurrentTouchTarget);
+ document.addEventListener('touchstart', setCurrentTouchTarget);
chrome.bookmarkManagerPrivate.onDragEnter.addListener(
dragInfo.handleChromeDragEnter);