diff --git a/odoo/addons/base/static/src/js/res_config_settings.js b/odoo/addons/base/static/src/js/res_config_settings.js
index 67e2979c308..ab09eaa7c27 100644
--- a/odoo/addons/base/static/src/js/res_config_settings.js
+++ b/odoo/addons/base/static/src/js/res_config_settings.js
@@ -297,7 +297,7 @@ var BaseSettingController = FormController.extend({
var recordID = ev.data.recordID;
var _super = this._super;
var args = arguments;
- this._discardChanges(recordID).then(function () {
+ this._discardChanges(recordID, { noAbandon: true }).then(function () {
_super.apply(self, args);
});
} else {
diff --git a/odoo/addons/base/static/tests/base_settings_tests.js b/odoo/addons/base/static/tests/base_settings_tests.js
index fa9b92c49e2..ec08e7ee17f 100644
--- a/odoo/addons/base/static/tests/base_settings_tests.js
+++ b/odoo/addons/base/static/tests/base_settings_tests.js
@@ -359,5 +359,70 @@ QUnit.module('base_settings_tests', {
form.destroy();
});
+ QUnit.test('execute action from settings view with several actions in the breadcrumb', async function (assert) {
+ // This commit fixes a race condition, that's why we artificially slow down a read rpc
+ assert.expect(4);
+
+ const actions = [{
+ id: 1,
+ name: 'First action',
+ res_model: 'project',
+ type: 'ir.actions.act_window',
+ views: [[1, 'list']],
+ }, {
+ id: 2,
+ name: 'Settings view',
+ res_model: 'project',
+ type: 'ir.actions.act_window',
+ views: [[2, 'form']],
+ }, {
+ id: 3,
+ name: 'Other action',
+ res_model: 'project',
+ type: 'ir.actions.act_window',
+ views: [[3, 'list']],
+ }];
+ const archs = {
+ 'project,1,list': '