rcxml: rewrite <margin> parser

This commit is contained in:
tokyo4j 2025-04-12 01:27:49 +09:00 committed by Johan Malm
parent be31df097c
commit 8ae2d72cef

View file

@ -241,32 +241,29 @@ err:
} }
static void static void
fill_usable_area_override(char *nodename, char *content, struct parser_state *state) fill_usable_area_override(xmlNode *node)
{ {
if (!strcasecmp(nodename, "margin")) { struct usable_area_override *usable_area_override =
state->current_usable_area_override = znew(*state->current_usable_area_override); znew(*usable_area_override);
wl_list_append(&rc.usable_area_overrides, wl_list_append(&rc.usable_area_overrides, &usable_area_override->link);
&state->current_usable_area_override->link);
return; xmlNode *child;
} char *key, *content;
string_truncate_at_pattern(nodename, ".margin"); LAB_XML_FOR_EACH(node, child, key, content) {
if (!content) { if (!strcmp(key, "output")) {
/* nop */ xstrdup_replace(usable_area_override->output, content);
} else if (!state->current_usable_area_override) { } else if (!strcmp(key, "left")) {
wlr_log(WLR_ERROR, "no usable-area-override object"); usable_area_override->margin.left = atoi(content);
} else if (!strcmp(nodename, "output")) { } else if (!strcmp(key, "right")) {
xstrdup_replace(state->current_usable_area_override->output, content); usable_area_override->margin.right = atoi(content);
} else if (!strcmp(nodename, "left")) { } else if (!strcmp(key, "top")) {
state->current_usable_area_override->margin.left = atoi(content); usable_area_override->margin.top = atoi(content);
} else if (!strcmp(nodename, "right")) { } else if (!strcmp(key, "bottom")) {
state->current_usable_area_override->margin.right = atoi(content); usable_area_override->margin.bottom = atoi(content);
} else if (!strcmp(nodename, "top")) { } else {
state->current_usable_area_override->margin.top = atoi(content); wlr_log(WLR_ERROR, "Unexpected data usable-area-override "
} else if (!strcmp(nodename, "bottom")) { "parser: %s=\"%s\"", key, content);
state->current_usable_area_override->margin.bottom = atoi(content); }
} else {
wlr_log(WLR_ERROR, "Unexpected data usable-area-override parser: %s=\"%s\"",
nodename, content);
} }
} }
@ -1051,8 +1048,9 @@ entry(xmlNode *node, char *nodename, char *content, struct parser_state *state)
printf("%s: %s\n", nodename, content); printf("%s: %s\n", nodename, content);
} }
if (state->in_usable_area_override) { if (!strcasecmp(nodename, "margin")) {
fill_usable_area_override(nodename, content, state); fill_usable_area_override(node);
return;
} }
if (!strcasecmp(nodename, "keybind.keyboard")) { if (!strcasecmp(nodename, "keybind.keyboard")) {
fill_keybind(node); fill_keybind(node);