Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[navigation] Do not change hash nor add history entry when displaying…

… a dialog at a history entry that already has dialogHashKey -- Fixes: #2656
  • Loading branch information...
commit 358f7de7d7429fca11b7050e281954bbdbe08559 1 parent 851fad0
Gabriel "_|Nix|_" Schulhof gabrielschulhof authored
Showing with 15 additions and 1 deletion.
  1. +15 −1 js/jquery.mobile.navigation.js
16 js/jquery.mobile.navigation.js
View
@@ -1044,6 +1044,9 @@ define( [
}
} catch(e) {}
+ // Record whether we are at a place in history where a dialog used to be - if so, do not add a new history entry and do not change the hash either
+ var alreadyThere = false;
+
// If we're displaying the page as a dialog, we don't want the url
// for the dialog content to be used in the hash. Instead, we want
// to append the dialogHashKey to the url of the current page.
@@ -1052,6 +1055,17 @@ define( [
// be an empty string. Moving the undefined -> empty string back into
// urlHistory.addNew seemed imprudent given undefined better represents
// the url state
+
+ // If we are at a place in history that once belonged to a dialog, reuse
+ // this state without adding to urlHistory and without modifying the hash.
+ // However, if a dialog is already displayed at this point, and we're
+ // about to display another dialog, then we must add another hash and
+ // history entry on top so that one may navigate back to the original dialog
+ if ( active.url.indexOf( dialogHashKey ) > -1 && !$.mobile.activePage.is( ".ui-dialog" ) ) {
+ settings.changeHash = false;
+ alreadyThere = true;
+ }
+
url = ( active.url || "" ) + dialogHashKey;
}
@@ -1079,7 +1093,7 @@ define( [
|| ( isDialog ? $.mobile.defaultDialogTransition : $.mobile.defaultPageTransition );
//add page to history stack if it's not back or forward
- if( !historyDir ) {
+ if( !historyDir && !alreadyThere ) {
urlHistory.addNew( url, settings.transition, pageTitle, pageUrl, settings.role );
}
Please sign in to comment.
Something went wrong with that request. Please try again.