Index: lams_central/web/includes/javascript/authoring/authoringActivity.js =================================================================== diff -u -r6bf16c0bcd10106016b4996b0012c90b0f3fca3e -rd3a385feec7bc1de8bb274dd23d7e99c4e431e92 --- lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision 6bf16c0bcd10106016b4996b0012c90b0f3fca3e) +++ lams_central/web/includes/javascript/authoring/authoringActivity.js (.../authoringActivity.js) (revision d3a385feec7bc1de8bb274dd23d7e99c4e431e92) @@ -452,7 +452,7 @@ if (!isReadOnlyMode){ // allow transition drawing and other activity behaviour - this.items.shape.unmousedown().mousedown(HandlerActivityLib.activityMousedownHandler); + this.items.unmousedown().mousedown(HandlerActivityLib.activityMousedownHandler); } this.items.data('parentObject', this); @@ -501,7 +501,7 @@ if (!isReadOnlyMode){ // allow transition drawing and other activity behaviour - this.items.shape.unmousedown().mousedown(HandlerActivityLib.activityMousedownHandler); + this.items.unmousedown().mousedown(HandlerActivityLib.activityMousedownHandler); } this.items.data('parentObject', this); Index: lams_central/web/includes/javascript/authoring/authoringGeneral.js =================================================================== diff -u -r06c6921e9173ff630c99268f69463adf1a5e4834 -rd3a385feec7bc1de8bb274dd23d7e99c4e431e92 --- lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision 06c6921e9173ff630c99268f69463adf1a5e4834) +++ lams_central/web/includes/javascript/authoring/authoringGeneral.js (.../authoringGeneral.js) (revision d3a385feec7bc1de8bb274dd23d7e99c4e431e92) @@ -63,7 +63,7 @@ 'arrangeHorizontalPadding' : 35, 'arrangeVerticalPadding' : 50, - 'dragStartThreshold' : 300, + 'dragStartThreshold' : 100, 'propertiesDialogDimOpacity' : 0.3, 'propertiesDialogDimThreshold' : 100, Index: lams_central/web/includes/javascript/authoring/authoringHandler.js =================================================================== diff -u -rdcb7977d20f0d29b809b2139a6814bc113c4485c -rd3a385feec7bc1de8bb274dd23d7e99c4e431e92 --- lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision dcb7977d20f0d29b809b2139a6814bc113c4485c) +++ lams_central/web/includes/javascript/authoring/authoringHandler.js (.../authoringHandler.js) (revision d3a385feec7bc1de8bb274dd23d7e99c4e431e92) @@ -26,16 +26,19 @@ * Start dragging an activity or a transition. */ dragItemsStartHandler : function(items, draggedElement, mouseupHandler, event, startX, startY) { - // clear "clicked" flag, just in case - items.clicked = false; - - // if there is already a function waiting to be started, clear it - if (items.dragStarter) { - // prevent confusion when double clicking - clearTimeout(items.dragStarter); - items.dragStarter = null; - return; + // if user clicks or drags very shortly, do not take it into account + var dragCancel = function(){ + canvas.off('mouseup'); + // if there is already a function waiting to be started, clear it + if (items.dragStarter) { + // prevent confusion when double clicking + clearTimeout(items.dragStarter); + items.dragStarter = null; + return; + } } + dragCancel(); + canvas.mouseup(dragCancel); if (layout.drawMode || (event.originalEvent ? event.originalEvent.defaultPrevented : event.defaultPrevented)){ @@ -45,13 +48,8 @@ // run only if "click" event was not generated, i.e. user really wants to drag items.dragStarter = setTimeout(function(){ items.dragStarter = null; - // "clicked" flag is set by mouseup event - // and it means that user does not want to drag, but to click - if (items.clicked) { - items.clicked = false; - return; - } + // show that we are in the middle of something HandlerLib.resetCanvasMode(); items.isDragged = true; items.attr('cursor', 'move'); @@ -81,17 +79,19 @@ // finish dragging - restore various elements' default state items.isDragged = false; items.unmouseup(); + HandlerLib.resetCanvasMode(true); layout.bin.attr('fill', 'transparent'); // do whetver needs to be done with the dragged elements mouseupHandler(mouseupEvent); - HandlerLib.resetCanvasMode(true); }; - // if user moves mouse very quickly, mouseup event can be triggered - // for canvas, not the dragged elements + /* The event is passed from items to canvas, so it is OK to assign it only to canvas. + Ufortunately, this does not apply to the icon. + Also, if mousedown was on items and mouseup on canvas (very quick move), + items will not accept mouseup until click. + */ canvas.mouseup(mouseup); - items.mouseup(mouseup); GeneralLib.setModified(true); }, layout.conf.dragStartThreshold); @@ -165,8 +165,6 @@ } var parentObject = this.data('parentObject'); - // inform that user wants to select, not drag the activity - parentObject.items.clicked = true; // if it's "import part" allow multiple selection of activities if (activitiesOnlySelectable) { @@ -221,8 +219,6 @@ */ activityDblclickHandler : function(event) { var activity = this.data('parentObject'); - // inform that user wants to open, not drag the activity - activity.items.clicked = true; ActivityLib.openActivityAuthoring(activity); },