all repos — openbox @ b02f558c1eaec7b97a805f399f3fe189d9748418

openbox fork - make it a bit more like ryudo

clever code by mika-kun
Dana Jansens danakj@orodu.net
commit

b02f558c1eaec7b97a805f399f3fe189d9748418

parent

92bf35e33029d18b5030a803aabb7ce2ca00cf52

1 files changed, 21 insertions(+), 28 deletions(-)

jump to
M openbox/actions/moveresizeto.copenbox/actions/moveresizeto.c

@@ -29,6 +29,23 @@ run_func,

NULL, NULL); } +static void parse_coord(xmlDocPtr doc, xmlNodePtr n, gint *pos, + gboolean *opposite, gboolean *center) +{ + gchar *s = parse_string(doc, n); + if (!g_ascii_strcasecmp(s, "center")) + *center = TRUE; + else { + if (s[0] == '-') + *opposite = TRUE; + if (s[0] == '-' || s[0] == '+') + *pos = atoi(s+1); + else + *pos = atoi(s); + } + g_free(s); +} + static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) { xmlNodePtr n;

@@ -41,35 +58,11 @@ o->w = G_MININT;

o->h = G_MININT; o->monitor = -1; - if ((n = parse_find_node("x", node))) { - gchar *s = parse_string(doc, n); - if (!g_ascii_strcasecmp(s, "center")) - o->xcenter = TRUE; - else { - if (s[0] == '-') - o->xopposite = TRUE; - if (s[0] == '-' || s[0] == '+') - o->x = atoi(s+1); - else - o->x = atoi(s); - } - g_free(s); - } + if ((n = parse_find_node("x", node))) + parse_coord(doc, n, &o->x, &o->xopposite, &o->xcenter); - if ((n = parse_find_node("y", node))) { - gchar *s = parse_string(doc, n); - if (!g_ascii_strcasecmp(s, "center")) - o->ycenter = TRUE; - else { - if (s[0] == '-') - o->yopposite = TRUE; - if (s[0] == '-' || s[0] == '+') - o->y = atoi(s+1); - else - o->y = atoi(s); - } - g_free(s); - } + if ((n = parse_find_node("y", node))) + parse_coord(doc, n, &o->y, &o->yopposite, &o->ycenter); if ((n = parse_find_node("width", node))) o->w = parse_int(doc, n) - 1;