diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js
index 954e2024965..a4a3b73cc77 100644
--- a/addons/base/static/src/js/chrome.js
+++ b/addons/base/static/src/js/chrome.js
@@ -590,22 +590,27 @@ openerp.base.Header = openerp.base.Widget.extend({
sc.binding = {};
$(sc.binding).bind({
'add': function (e, attrs) {
- var $shortcut = $('
', {
+ shortcuts_ds.create(attrs, function (out) {
+ $('', {
+ 'data-shortcut-id':out.result,
'data-id': attrs.res_id
}).text(attrs.name)
- .appendTo(self.$element.find('.oe-shortcuts ul'));
- shortcuts_ds.create(attrs, function (out) {
- $shortcut.data('shortcut-id', out.result);
+ .appendTo(self.$element.find('.oe-shortcuts ul'));
+ attrs.id = out.result;
+ sc.push(attrs);
});
},
'remove-current': function () {
var menu_id = self.session.active_id;
var $shortcut = self.$element
- .find('.oe-shortcuts li[data-id=' + menu_id + ']');
+ .find('.oe-shortcuts li[data-id=' + menu_id + ']');
var shortcut_id = $shortcut.data('shortcut-id');
$shortcut.remove();
shortcuts_ds.unlink([shortcut_id]);
- }
+ var sc_new = _.reject(sc, function(shortcut){ return shortcut_id === shortcut.id});
+ sc.splice(0, sc.length);
+ sc.push.apply(sc, sc_new);
+ }
});
}
return this.rpc('/base/session/sc_list', {}, function(shortcuts) {
@@ -615,6 +620,7 @@ openerp.base.Header = openerp.base.Widget.extend({
self.$element.find('.oe-shortcuts')
.html(QWeb.render('Shortcuts', {'shortcuts': shortcuts}))
.undelegate('li', 'click')
+
.delegate('li', 'click', function(e) {
e.stopPropagation();
var id = $(this).data('id');
diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index 9e981e7c3e2..bd05856f55a 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -350,20 +350,22 @@ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({
shortcut_add_remove: function() {
var self = this;
var $shortcut_toggle = this.$element.find('.oe-shortcut-toggle');
- $shortcut_toggle.click(function() {
- if ($shortcut_toggle.hasClass("oe-shortcut-remove")) {
- $(self.session.shortcuts.binding).trigger('remove-current');
- $shortcut_toggle.removeClass("oe-shortcut-remove");
- } else {
- $(self.session.shortcuts.binding).trigger('add', {
- 'user_id': self.session.uid,
- 'res_id': self.session.active_id,
- 'resource': 'ir.ui.menu',
- 'name': self.action.name
- });
- $shortcut_toggle.addClass("oe-shortcut-remove");
- }
- });
+ $shortcut_toggle
+ .unbind("click")
+ .click(function() {
+ if ($shortcut_toggle.hasClass("oe-shortcut-remove")) {
+ $(self.session.shortcuts.binding).trigger('remove-current');
+ $shortcut_toggle.removeClass("oe-shortcut-remove");
+ } else {
+ $(self.session.shortcuts.binding).trigger('add', {
+ 'user_id': self.session.uid,
+ 'res_id': self.session.active_id,
+ 'resource': 'ir.ui.menu',
+ 'name': self.action.name
+ });
+ $shortcut_toggle.addClass("oe-shortcut-remove");
+ }
+ });
}
});