diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index 7ea01bf3bee..6e5c6117023 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -2179,15 +2179,18 @@
.openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page {
display: none;
}
-.openerp .oe_list_buttons .oe_list_save {
+.openerp .oe_list_buttons .oe_list_save, .openerp .oe_list_buttons .oe_list_discard {
display: none;
}
-.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_alternative {
+.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_list_button_import {
display: none;
}
.openerp .oe_list_buttons.oe_editing .oe_list_save {
display: inline-block;
}
+.openerp .oe_list_buttons.oe_editing .oe_list_discard {
+ display: inline;
+}
.openerp .oe_list {
position: relative;
}
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index 0472aa34710..83153cc11d5 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -1723,13 +1723,15 @@ $sheet-max-width: 860px
// }}}
// ListView {{{
.oe_list_buttons
- .oe_list_save
+ .oe_list_save, .oe_list_discard
display: none
&.oe_editing
- .oe_list_add, .oe_alternative
+ .oe_list_add, .oe_list_button_import
display: none
.oe_list_save
display: inline-block
+ .oe_list_discard
+ display: inline
.oe_list
position: relative
diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js
index a78b0fbef97..93b7d38e3bb 100644
--- a/addons/web/static/src/js/view_list_editable.js
+++ b/addons/web/static/src/js/view_list_editable.js
@@ -102,8 +102,13 @@ openerp.web.list_editable = function (instance) {
if (this.options.editable) {
// FIXME: any hook available to ensure this is only done once?
this.$buttons
- .off('click', 'button.oe_list_save')
- .on('click', 'button.oe_list_save', this.proxy('saveEdition'));
+ .off('click', '.oe_list_save')
+ .on('click', '.oe_list_save', this.proxy('saveEdition'))
+ .off('click', '.oe_list_discard')
+ .on('click', '.oe_list_discard', function (e) {
+ e.preventDefault();
+ self.cancelEdition();
+ });
this.$element
.off('click', 'tbody td:not(.oe_list_field_cell)')
.on('click', 'tbody td:not(.oe_list_field_cell)', function () {
diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml
index a85e8817ad8..a9c8e15bcd7 100644
--- a/addons/web/static/src/xml/base.xml
+++ b/addons/web/static/src/xml/base.xml
@@ -671,6 +671,9 @@
+
+ discard
+