[FIX] do not call hashchange event when pushing state
authorChristophe Simonis <chs@openerp.com>
Tue, 13 Dec 2011 10:32:32 +0000 (11:32 +0100)
committerChristophe Simonis <chs@openerp.com>
Tue, 13 Dec 2011 10:32:32 +0000 (11:32 +0100)
bzr revid: chs@openerp.com-20111213103232-bhjrog6eaiaqrilu

addons/web/static/src/js/chrome.js

index 62c9d31..af2fc11 100644 (file)
@@ -1016,9 +1016,7 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
         this.menu = new openerp.web.Menu(this, "oe_menu", "oe_secondary_menu");
         this.menu.on_action.add(this.on_menu_action);
 
-        this.url_internal_hashchange = false;
-        this.url_external_hashchange = false;
-        jQuery(window).bind('hashchange', this.on_url_hashchange);
+        this._current_state = null;
 
     },
     start: function() {
@@ -1081,7 +1079,10 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
 
     on_hashchange: function(event) {
         var state = event.getState(true);
-        this.action_manager.do_load_state(state);
+        if (!_.isEqual(this._current_state, state)) {
+            this.action_manager.do_load_state(state);
+        }
+        this._current_state = state;
     },
 
     do_push_state: function(state, overwrite) {
@@ -1090,6 +1091,7 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie
             state = _.extend({}, hash, state);
         }
         var url = '#' + $.param(state);
+        this._current_state = _.clone(state);
         $.bbq.pushState(url);
     },