From 3b92410ff31f1b5a47de62037f43bc15479c9eaf Mon Sep 17 00:00:00 2001 From: scottjehl Date: Fri, 14 Jan 2011 15:16:03 -0500 Subject: [PATCH 1/3] some additional changes to make scrolling from a select button work ok. --- js/jquery.mobile.forms.select.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/js/jquery.mobile.forms.select.js b/js/jquery.mobile.forms.select.js index a28382e4..9fccfa77 100644 --- a/js/jquery.mobile.forms.select.js +++ b/js/jquery.mobile.forms.select.js @@ -160,17 +160,30 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { //button events button - .bind( $.support.touch ? "touchend" : "click" , function( event ){ + .bind( "touchstart" ,function( event ){ + //set startTouches to cached copy of + $( this ).data( "startTouches", $.extend({}, event.originalEvent.touches[ 0 ]) ); + }) + .bind( $.support.touch ? "touchend" : "mouseup" , function( event ){ + //if it's a scroll, don't open if( $( this ).data( "moved" ) ){ $( this ).removeData( "moved" ); } else{ self.open(); - event.preventDefault(); } + event.preventDefault(); }) - .bind( "touchmove", function(event){ - $( this ).data( "moved", true ); + .bind( "touchmove", function( event ){ + //if touch moved enough, set data moved and don't open menu + var thisTouches = event.originalEvent.touches[ 0 ], + startTouches = $( this ).data( "startTouches" ), + deltaX = Math.abs(thisTouches.pageX - startTouches.pageX), + deltaY = Math.abs(thisTouches.pageY - startTouches.pageY); + + if( deltaX > 10 || deltaY > 10 ){ + $( this ).data( "moved", true ); + } }); //events for list items From 7cf5aea8e3539391eb8067d9baa02eb09ff893d1 Mon Sep 17 00:00:00 2001 From: scottjehl Date: Fri, 14 Jan 2011 15:49:21 -0500 Subject: [PATCH 2/3] fixed up those busted select menu headers. Fixes #810 --- js/jquery.mobile.forms.select.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/js/jquery.mobile.forms.select.js b/js/jquery.mobile.forms.select.js index 9fccfa77..7a152060 100644 --- a/js/jquery.mobile.forms.select.js +++ b/js/jquery.mobile.forms.select.js @@ -94,21 +94,24 @@ $.widget( "mobile.selectmenu", $.mobile.widget, { .appendTo( listbox ), header = $( "
", { - "data-role": "header", - "data-backbtn": false + "class": "ui-header ui-bar-" + theme }) .prependTo( listbox ), - headerTitle = $( "

" ) + headerTitle = $( "

", { + "class": "ui-title" + }) .appendTo( header ), headerClose = $( "", { "data-iconpos": "notext", "data-icon": "delete", "text": o.closeText, - "href": "#" + "href": "#", + "class": "ui-btn-left" }) - .appendTo( header ), + .appendTo( header ) + .buttonMarkup(), menuType; From b6ec29a7e5603aa1862050b0c30e3e9d49c47c78 Mon Sep 17 00:00:00 2001 From: maggiewachs Date: Fri, 14 Jan 2011 16:05:48 -0500 Subject: [PATCH 3/3] Fixed bug 676 where the switch toggle (slider) wasn't updating on select change: https://github.com/jquery/jquery-mobile/issues/labels/5%20-%20Critical#issue/676 --- js/jquery.mobile.forms.slider.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/js/jquery.mobile.forms.slider.js b/js/jquery.mobile.forms.slider.js index 58843f1b..6943acc4 100644 --- a/js/jquery.mobile.forms.slider.js +++ b/js/jquery.mobile.forms.slider.js @@ -33,7 +33,6 @@ $.widget( "mobile.slider", $.mobile.widget, { min = (cType == 'input') ? parseFloat(control.attr('min')) : 0, max = (cType == 'input') ? parseFloat(control.attr('max')) : control.find('option').length-1, step = window.parseFloat(control.attr('data-step') || 1), - slider = $('
'), handle = $('
') .appendTo(slider) @@ -74,8 +73,11 @@ $.widget( "mobile.slider", $.mobile.widget, { control .addClass((cType == 'input') ? 'ui-slider-input' : 'ui-slider-switch') - .keyup(function(){ - self.refresh( $(this).val() ); + .change(function(){ + self.refresh( ((cType == 'input') ? parseFloat(control.val()) : control[0].selectedIndex), true ); + }) + .keyup(function(){ // necessary? + self.refresh( ((cType == 'input') ? parseFloat(control.val()) : control[0].selectedIndex), true ); }); $(document).bind($.support.touch ? "touchmove" : "mousemove", function(event){ @@ -191,7 +193,7 @@ $.widget( "mobile.slider", $.mobile.widget, { this.refresh(); }, - refresh: function(val){ + refresh: function(val, isfromControl){ if ( this.options.disabled ) { return; } var control = this.element, percent, @@ -211,7 +213,7 @@ $.widget( "mobile.slider", $.mobile.widget, { percent = Math.round( ((data.pageX - this.slider.offset().left) / this.slider.width() ) * 100 ); } else { if ( val == null ) { - val = (cType === "input") ? parseFloat(control.val()) : control[ 0 ].selectedIndex; + val = (cType === "input") ? parseFloat(control.val()) : control[0].selectedIndex; } percent = (parseFloat(val) - min) / (max - min) * 100; } @@ -252,7 +254,7 @@ $.widget( "mobile.slider", $.mobile.widget, { } else { control[ 0 ].selectedIndex = newval; } - control.trigger("change"); + if (!isfromControl) { control.trigger("change"); } }, enable: function(){