diff --git a/addons/web/static/src/views/list/list_arch_parser.js b/addons/web/static/src/views/list/list_arch_parser.js
index df3f7347e21..d697c0649fb 100644
--- a/addons/web/static/src/views/list/list_arch_parser.js
+++ b/addons/web/static/src/views/list/list_arch_parser.js
@@ -125,11 +125,21 @@ export class ListArchParser extends XMLParser {
}))
.filter((button) => button.modifiers.invisible !== true);
return false;
- } else if (node.tagName === "create") {
- creates.push({
- context: node.getAttribute("context"),
- description: node.getAttribute("string"),
- });
+ } else if (node.tagName === "control") {
+ for (const childNode of node.children) {
+ if (childNode.tagName === "button") {
+ creates.push({
+ type: "button",
+ ...processButton(childNode),
+ });
+ } else if (childNode.tagName === "create") {
+ creates.push({
+ type: "create",
+ context: childNode.getAttribute("context"),
+ string: childNode.getAttribute("string"),
+ });
+ }
+ }
return false;
} else if (["tree", "list"].includes(node.tagName)) {
const activeActions = {
diff --git a/addons/web/static/src/views/list/list_controller.scss b/addons/web/static/src/views/list/list_controller.scss
index f097bcede66..a146ae94b17 100644
--- a/addons/web/static/src/views/list/list_controller.scss
+++ b/addons/web/static/src/views/list/list_controller.scss
@@ -330,10 +330,16 @@
}
.o_field_x2many_list_row_add, .o_group_field_row_add {
- a:focus, a:active {
+ a:focus, a:active, button:focus, button:active {
color: $link-hover-color;
outline: none;
}
+
+ button {
+ font-weight: 400;
+ padding: 0;
+ vertical-align: baseline;
+ }
}
}
diff --git a/addons/web/static/src/views/list/list_renderer.js b/addons/web/static/src/views/list/list_renderer.js
index 4b096089137..34586292319 100644
--- a/addons/web/static/src/views/list/list_renderer.js
+++ b/addons/web/static/src/views/list/list_renderer.js
@@ -78,7 +78,7 @@ export class ListRenderer extends Component {
this.creates = this.props.archInfo.creates.length
? this.props.archInfo.creates
- : [{ description: this.env._t("Add a line") }];
+ : [{ type: "create", string: this.env._t("Add a line") }];
this.cellToFocus = null;
this.activeRowId = null;
diff --git a/addons/web/static/src/views/list/list_renderer.xml b/addons/web/static/src/views/list/list_renderer.xml
index b791eb54623..6cadfaa080d 100644
--- a/addons/web/static/src/views/list/list_renderer.xml
+++ b/addons/web/static/src/views/list/list_renderer.xml
@@ -81,14 +81,25 @@
>