From ffee9dcc5997215c8d11cbd85bee07891fc00dde Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 13 Sep 2018 11:29:07 +0800 Subject: [PATCH] MDL-62319 assignfeedback_editpdf: Disable touch scrolling Assignment editpdf canvas provides it's own scroll tool and the native browser one breaks the rest of the tools for the canvas. Turn it off. --- mod/assign/feedback/editpdf/styles.css | 1 + ...dle-assignfeedback_editpdf-editor-debug.js | 71 +++++++----------- ...oodle-assignfeedback_editpdf-editor-min.js | 8 +-- .../moodle-assignfeedback_editpdf-editor.js | 71 +++++++----------- .../editpdf/yui/src/editor/js/editor.js | 72 +++++++------------ 5 files changed, 83 insertions(+), 140 deletions(-) diff --git a/mod/assign/feedback/editpdf/styles.css b/mod/assign/feedback/editpdf/styles.css index 7e54731ce2a..89bee81a67c 100644 --- a/mod/assign/feedback/editpdf/styles.css +++ b/mod/assign/feedback/editpdf/styles.css @@ -398,6 +398,7 @@ ul.assignfeedback_editpdf_menu { position: relative; margin-bottom: 1em; top: 0; + max-height: 312px; } .assignfeedback_editpdf_widget .pageheader { diff --git a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js index 1716dfe3b1e..abc2f1e43ca 100644 --- a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js +++ b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js @@ -3500,14 +3500,6 @@ EDITOR.prototype = { */ collapsecomments: true, - /** - * Check if passive option is supported - * @property isPassiveSupported - * @type Boolean - * @public - */ - isPassiveSupported : false, - /** * Called during the initialisation process of the object. * @method initializer @@ -4035,8 +4027,7 @@ EDITOR.prototype = { if (this.get('readonly')) { return; } - // Check if passive option is supported for event listener - this.check_passive_supported(); + this.disable_touch_scroll(); // Setup the tool buttons. Y.each(TOOLSELECTOR, function(selector, tool) { @@ -4132,15 +4123,6 @@ EDITOR.prototype = { this.lastannotationtool = tool; } - var useragent = navigator.userAgent; - if (useragent.includes("Safari")) { - if (tool === "drag") { - this.enable_touch_scroll(); - } else { - this.disable_touch_scroll(); - } - } - this.refresh_button_state(); }, @@ -4688,51 +4670,49 @@ EDITOR.prototype = { }, /** - * Check if Passive option is support + * Test the browser support for options objects on event listeners. + * @return Boolean */ - check_passive_supported : function() { + event_listener_options_supported: function() { + var passivesupported = false, + options, + testeventname = "testpassiveeventoptions"; + + // Options support testing example from: + // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener + try { - var options = Object.defineProperty && Object.defineProperty({}, 'passive', { + options = Object.defineProperty({}, "passive", { get: function() { - this.isPassiveSupported = true; - }.bind(this) + passivesupported = true; + } }); - document.addEventListener('touchmove', options, options); - document.removeEventListener('touchmove', options, options); - - } catch (err) { - this.isPassiveSupported = false; + // We use an event name that is not likely to conflict with any real event. + document.addEventListener(testeventname, options, options); + // We remove the event listener as we have tested the options already. + document.removeEventListener(testeventname, options, options); + } catch(err) { + // It's already false. + passivesupported = false; } + return passivesupported; }, /** * Disable Touch Move scrolling */ - disable_touch_scroll : function() { - var drawingregion = this.get_dialogue_element(SELECTOR.DRAWINGREGION); - drawingregion.setStyle('overflow', 'hidden'); - if (this.isPassiveSupported) { + disable_touch_scroll: function() { + if (this.event_listener_options_supported()) { document.addEventListener('touchmove', this.stop_touch_scroll, {passive: false}); } }, - /** - * Enable Touch Move scrolling - */ - enable_touch_scroll : function() { - var drawingregion = this.get_dialogue_element(SELECTOR.DRAWINGREGION); - drawingregion.setStyle('overflow', 'auto'); - if (this.isPassiveSupported) { - document.removeEventListener('touchmove', this.stop_touch_scroll, {passive: false}); - } - }, - /** * Stop Touch Scrolling * @param {Object} e */ - stop_touch_scroll : function(e) { + stop_touch_scroll: function(e) { e.stopPropagation(); e.preventDefault(); } @@ -4803,6 +4783,7 @@ M.assignfeedback_editpdf.editor.init = M.assignfeedback_editpdf.editor.init || f return M.assignfeedback_editpdf.instance; }; + }, '@VERSION@', { "requires": [ "base", diff --git a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js index 96dab18a425..64e39bc5cc3 100644 --- a/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js +++ b/mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js @@ -3,7 +3,7 @@ YUI.add("moodle-assignfeedback_editpdf-editor",function(e,t){var n=M.cfg.wwwroot M.assignfeedback_editpdf.drawable(this.editor),r,i,s;return i=new M.assignfeedback_editpdf.rect,i.bound([new M.assignfeedback_editpdf.point(t.start.x,t.start.y),new M.assignfeedback_editpdf.point(t.end.x,t.end.y)]),i.has_min_width()||i.set_min_width(),s=l[t.annotationcolour],s=s.replace("rgb","rgba"),s=s.replace(")",",0.5)"),r=this.editor.graphic.addShape({type:e.Rect,width:i.width,height:16,stroke:!1,fill:{color:s},x:i.x,y:t.start.y}),n.shapes.push(r),n},init_from_edit:function(e){var t=new M.assignfeedback_editpdf.rect;return t.bound([e.start,e.end]),this.gradeid=this.editor.get("gradeid"),this.pageno=this.editor.currentpage,this.x=t.x,this.y=e.start.y,this.endx=t.x+t.width,this.endy=e.start.y+16,this.colour=e.annotationcolour,this.page="",t.has_min_width()}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.annotationhighlight=x;var T=function(e){T.superclass.constructor.apply(this,[e])};T.NAME="annotationstamp",T.ATTRS={},e.extend(T,M.assignfeedback_editpdf.annotation,{draw:function(){var t=new M.assignfeedback_editpdf.drawable(this.editor),n=this.editor.get_dialogue_element(s.DRAWINGREGION),r,i;return i=this.editor.get_window_coordinates(new M.assignfeedback_editpdf.point(this.x,this.y)),r=e.Node.create("
"),r.setStyles({position:"absolute",display:"inline-block",backgroundImage:"url("+this.editor.get_stamp_image_url(this.path)+")",width:this.endx-this.x,height:this.endy-this.y,backgroundSize:"100% 100%",zIndex:50}),n.append(r),r.setX(i.x),r.setY(i.y),t.store_position(r,i.x,i.y),this.editor.get("readonly")||(r.on("gesturemovestart",this.editor.edit_start,null,this.editor),r.on("gesturemove",this.editor.edit_move,null,this.editor),r.on("gesturemoveend",this.editor.edit_end,null,this.editor)),t.nodes.push(r),this.drawable=t,T.superclass.draw.apply(this)},draw_current_edit:function(t){var n=new M.assignfeedback_editpdf.rect,r=new M.assignfeedback_editpdf.drawable(this.editor),i=this.editor.get_dialogue_element(s.DRAWINGREGION),o,u;return n.bound([t.start,t.end]),u=this.editor.get_window_coordinates(new M.assignfeedback_editpdf.point(n.x,n.y)),o=e.Node.create("
"),o.setStyles({position:"absolute",display:"inline-block",backgroundImage:"url("+this.editor.get_stamp_image_url(t.stamp)+")",width:n.width,height:n.height,backgroundSize:"100% 100%",zIndex:50}),i.append(o),o.setX(u.x),o.setY(u.y),r.store_position(o,u.x,u.y),r.nodes.push(o),r},init_from_edit:function(e){var t=new M.assignfeedback_editpdf.rect;return t.bound([e.start,e.end]),t.width<40&&(t.width=40),t.height<40&&(t.height=40),this.gradeid=this.editor.get("gradeid"),this.pageno=this.editor.currentpage,this.x=t.x,this.y=t.y,this.endx=t.x+t.width,this.endy=t.y+t.height,this.colour=e.annotationcolour,this.path=e.stamp,!0},move:function(e,t){var n=e-this.x,r=t-this.y;this.x+=n,this.y+=r,this.endx+=n,this.endy+=r,this.drawable&&this.drawable.erase(),this.editor.drawables.push(this.draw())}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.annotationstamp=T;var N="Dropdown menu",C;C=function(e){e.draggable=!1,e.centered=!1,e.width="auto",e.visible=!1,e.footerContent="",C.superclass.constructor.apply(this,[e])},e.extend(C,M.core.dialogue,{initializer:function(t){var n,r,i,s;C.superclass.initializer.call(this,t),s=this.get("boundingBox"),s.addClass("assignfeedback_editpdf_dropdown"),n=this.get("buttonNode"),r=this.bodyNode,i=e.Node.create("

"),i.addClass("accesshide"),i.setHTML(this.get("headerText")),r.prepend(i),r.on("clickoutside",function(e){this.get("visible")&&e.target.get("id")!==n.get("id")&&e.target.ancestor().get("id")!==n.get("id")&&(e.preventDefault(),this.hide())},this),n.on("click",function(e){e.preventDefault(),this.show()},this),n.on("key",this.show,"enter,space",this)},show:function(){var t=this.get("buttonNode"),n=C.superclass.show.call(this);return this.align(t,[e.WidgetPositionAlign.TL,e.WidgetPositionAlign.BL]),n}},{NAME:N,ATTRS:{headerText:{value:""},buttonNode:{value:null}}}),e.Base.modifyAttrs(C,{modal:{getter:function(){return!1}}}),M.assignfeedback_editpdf=M.assignfeedback_editpdf||{},M.assignfeedback_editpdf.dropdown=C;var k="Colourpicker",L;L=function(e){L.superclass.constructor.apply(this,[e])},e.extend(L,M.assignfeedback_editpdf.dropdown,{initializer:function(t){var n=e.Node.create('