From 16c375d374c5675265b5d8c5cd06c7170d0e8b58 Mon Sep 17 00:00:00 2001 From: Scott González Date: Fri, 31 May 2013 15:00:50 -0400 Subject: Dialog: Use proper position data after drag and resize. Fixes #9351 - Dialog: Incorrect value for position option after resize. --- ui/jquery.ui.dialog.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'ui') diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index 16095292c..b94757505 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -454,10 +454,15 @@ $.widget( "ui.dialog", { that._trigger( "drag", event, filteredUi( ui ) ); }, stop: function( event, ui ) { - options.position = [ - ui.position.left - that.document.scrollLeft(), - ui.position.top - that.document.scrollTop() - ]; + var left = ui.offset.left - that.document.scrollLeft(), + top = ui.offset.top - that.document.scrollTop(); + + options.position = { + my: "left top", + at: "left" + (left >= 0 ? "+" : "") + left + " " + + "top" + (top >= 0 ? "+" : "") + top, + of: that.window + }; $( this ).removeClass("ui-dialog-dragging"); that._unblockFrames(); that._trigger( "dragStop", event, filteredUi( ui ) ); @@ -503,8 +508,18 @@ $.widget( "ui.dialog", { that._trigger( "resize", event, filteredUi( ui ) ); }, stop: function( event, ui ) { - options.height = $( this ).height(); - options.width = $( this ).width(); + var offset = that.uiDialog.offset(), + left = offset.left - that.document.scrollLeft(), + top = offset.top - that.document.scrollTop(); + + options.height = that.uiDialog.height(); + options.width = that.uiDialog.width(); + options.position = { + my: "left top", + at: "left" + (left >= 0 ? "+" : "") + left + " " + + "top" + (top >= 0 ? "+" : "") + top, + of: that.window + }; $( this ).removeClass("ui-dialog-resizing"); that._unblockFrames(); that._trigger( "resizeStop", event, filteredUi( ui ) ); -- cgit v1.2.3 From 2ba75e2c93638d89e89de52347da0013a7a841b8 Mon Sep 17 00:00:00 2001 From: Scott González Date: Mon, 3 Jun 2013 15:14:08 -0400 Subject: Slider: Remove range div when changing range option to false. Fixes #9355 - Slider: Changing range option to false does not remove range div. --- tests/unit/slider/slider_options.js | 17 ++++++++++++++++- ui/jquery.ui.slider.js | 9 +++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'ui') diff --git a/tests/unit/slider/slider_options.js b/tests/unit/slider/slider_options.js index 3a6f55390..b89981115 100644 --- a/tests/unit/slider/slider_options.js +++ b/tests/unit/slider/slider_options.js @@ -200,7 +200,7 @@ test( "values", function() { }); test( "range", function() { - expect( 27 ); + expect( 33 ); var range; // min @@ -300,6 +300,21 @@ test( "range", function() { equal( element.slider( "option", "values" ), null, "values" ); deepEqual( element.slider( "values" ), [] , "values" ); element.slider( "destroy" ); + + // Change range from true to false + element = $( "
" ).slider({ + range: true, + min: 1, + max: 10, + step: 1 + }).slider( "option", "range", false ); + equal( element.find( ".ui-slider-handle" ).length, 2, "range switch from true to false, both handles remain" ); + equal( element.find( ".ui-slider-range" ).length, 0, "range switch from true to false" ); + equal( element.slider( "option", "value" ), 0 , "option value" ); + equal( element.slider( "value" ), 1 , "value" ); + deepEqual( element.slider( "option", "values" ), [1, 1], "option values" ); + deepEqual( element.slider( "values" ), [1, 1], "values" ); + element.slider( "destroy" ); }); })( jQuery ); diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js index ee7b3538f..e4f1cf7c9 100644 --- a/ui/jquery.ui.slider.js +++ b/ui/jquery.ui.slider.js @@ -131,7 +131,10 @@ $.widget( "ui.slider", $.ui.mouse, { this.range.addClass( classes + ( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) ); } else { - this.range = $([]); + if ( this.range ) { + this.range.remove(); + } + this.range = null; } }, @@ -145,7 +148,9 @@ $.widget( "ui.slider", $.ui.mouse, { _destroy: function() { this.handles.remove(); - this.range.remove(); + if ( this.range ) { + this.range.remove(); + } this.element .removeClass( "ui-slider" + -- cgit v1.2.3