@@ -74,7 +74,9 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
7474 . appendTo ( $ . mobile . pageContainer )
7575 . page ( ) ,
7676
77- menuPageContent = menuPage . find ( ".ui-content" ) ,
77+ menuPageContent = menuPage . find ( ".ui-content" ) ,
78+
79+ menuPageClose = menuPage . find ( ".ui-header a" ) ,
7880
7981 screen = $ ( "<div>" , { "class" : "ui-selectmenu-screen ui-screen-hidden" } )
8082 . appendTo ( thisPage ) ,
@@ -196,9 +198,15 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
196198 } ) ;
197199
198200 //events on "screen" overlay + close button
199- screen . add ( headerClose ) . click ( function ( event ) {
201+ screen . add ( headerClose ) . add ( menuPageClose ) . click ( function ( event ) {
200202 self . close ( ) ;
201203 event . preventDefault ( ) ;
204+
205+ // if the dialog's close icon was clicked, prevent the dialog's close
206+ // handler from firing. selectmenu's should take precedence
207+ if ( $ . contains ( menuPageClose [ 0 ] , event . target ) ) {
208+ event . stopImmediatePropagation ( ) ;
209+ }
202210 } ) ;
203211 } ,
204212
@@ -393,19 +401,17 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
393401 function focusButton ( ) {
394402 setTimeout ( function ( ) {
395403 self . button . focus ( ) ;
404+
396405 //remove active class from button
397406 self . button . removeClass ( $ . mobile . activeBtnClass ) ;
398407 } , 40 ) ;
399408
400409 self . listbox . removeAttr ( 'style' ) . append ( self . list ) ;
401410 }
402411
403- if ( self . menuType == "page" ) {
412+ if ( self . menuType == "page" ) {
404413 $ . mobile . changePage ( [ self . menuPage , self . thisPage ] , 'pop' , true , false ) ;
405- self . menuPage . one ( "pagehide" , function ( ) {
406- focusButton ( ) ;
407- //return false;
408- } ) ;
414+ self . menuPage . one ( "pagehide" , focusButton ) ;
409415 }
410416 else {
411417 self . screen . addClass ( "ui-screen-hidden" ) ;
0 commit comments