diff --git a/tests/unit/draggable/draggable.html b/tests/unit/draggable/draggable.html index 53468a3a998..2e741310727 100644 --- a/tests/unit/draggable/draggable.html +++ b/tests/unit/draggable/draggable.html @@ -5,7 +5,7 @@ jQuery UI Draggable Test Suite - + #main { diff --git a/tests/unit/draggable/options.js b/tests/unit/draggable/options.js index 656df621f0f..34d38979487 100644 --- a/tests/unit/draggable/options.js +++ b/tests/unit/draggable/options.js @@ -802,17 +802,20 @@ QUnit.test( "cursorAt, switching after initialization", function( assert ) { } ); QUnit.test( "disabled", function( assert ) { - assert.expect( 6 ); + assert.expect( 9 ); var element = $( "#draggable1" ).draggable(); testHelper.shouldMove( assert, element, "disabled: default" ); + assert.equal( element.css( "touch-action" ), "none", "touch-action: default" ); element.draggable( "option", "disabled", true ); testHelper.shouldNotDrag( assert, element, "option: disabled true" ); + assert.equal( element.css( "touch-action" ), "auto", "touch-action: disabled true" ); element.draggable( "option", "disabled", false ); testHelper.shouldMove( assert, element, "option: disabled false" ); + assert.equal( element.css( "touch-action" ), "none", "touch-action: disabled false" ); } ); QUnit.test( "{ grid: [50, 50] }, relative", function( assert ) { diff --git a/themes/base/draggable.css b/themes/base/draggable.css index f2000c45656..88f09ec52fc 100644 --- a/themes/base/draggable.css +++ b/themes/base/draggable.css @@ -6,7 +6,7 @@ * Released under the MIT license. * http://jquery.org/license */ -.ui-draggable-handle { +.ui-draggable-handle-enabled { -ms-touch-action: none; touch-action: none; } diff --git a/ui/widgets/draggable.js b/ui/widgets/draggable.js index 9e46c81bb00..88d62745172 100644 --- a/ui/widgets/draggable.js +++ b/ui/widgets/draggable.js @@ -79,6 +79,9 @@ $.widget( "ui.draggable", $.ui.mouse, { this._addClass( "ui-draggable" ); } this._setHandleClassName(); + if ( !this.options.disabled ) { + this._addClass( this.handleElement, "ui-draggable-handle-enabled" ); + } this._mouseInit(); }, @@ -91,6 +94,16 @@ $.widget( "ui.draggable", $.ui.mouse, { } }, + _setOptionDisabled: function( value ) { + + // Remove touch-action for disabled draggables + if ( value ) { + this._removeClass( this.handleElement, "ui-draggable-handle-enabled" ); + } else { + this._addClass( this.handleElement, "ui-draggable-handle-enabled" ); + } + }, + _destroy: function() { if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) { this.destroyOnClear = true;