X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fmoverelative.c;h=189b4dd0d7c4bc59497ac7584fa8b2a106d6fe64;hb=b7ddaa5728b5449449e3ea14cf84252285bbc794;hp=f3a306482acef6cb7b33211a03d0cb45c9b98bba;hpb=597c9c9321b6f96250da0891be98d41c7ac2c109;p=chaz%2Fopenbox diff --git a/openbox/actions/moverelative.c b/openbox/actions/moverelative.c index f3a30648..189b4dd0 100644 --- a/openbox/actions/moverelative.c +++ b/openbox/actions/moverelative.c @@ -9,39 +9,33 @@ typedef struct { gint y; } Options; -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); -static void free_func(gpointer options); +static gpointer setup_func(xmlNodePtr node); +static void free_func(gpointer o); static gboolean run_func(ObActionsData *data, gpointer options); -void action_moverelative_startup() +void action_moverelative_startup(void) { - actions_register("MoveRelative", - setup_func, - free_func, - run_func, - NULL, NULL); + actions_register("MoveRelative", setup_func, free_func, run_func); } -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) +static gpointer setup_func(xmlNodePtr node) { xmlNodePtr n; Options *o; - o = g_new0(Options, 1); + o = g_slice_new0(Options); - if ((n = parse_find_node("x", node))) - o->x = parse_int(doc, n); - if ((n = parse_find_node("y", node))) - o->y = parse_int(doc, n); + if ((n = obt_xml_find_node(node, "x"))) + o->x = obt_xml_node_int(n); + if ((n = obt_xml_find_node(node, "y"))) + o->y = obt_xml_node_int(n); return o; } -static void free_func(gpointer options) +static void free_func(gpointer o) { - Options *o = options; - - g_free(o); + g_slice_free(Options, o); } /* Always return FALSE because its not interactive */ @@ -54,14 +48,16 @@ static gboolean run_func(ObActionsData *data, gpointer options) gint x, y, lw, lh, w, h; c = data->client; - x = data->client->area.x + o->x; - y = data->client->area.y + o->y; - w = data->client->area.width; - h = data->client->area.height; - client_try_configure(data->client, &x, &y, &w, &h, &lw, &lh, TRUE); - client_find_onscreen(data->client, &x, &y, w, h, FALSE); + x = c->area.x + o->x; + y = c->area.y + o->y; + w = c->area.width; + h = c->area.height; + client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE); + client_find_onscreen(c, &x, &y, w, h, FALSE); - client_configure(data->client, x, y, w, h, TRUE, TRUE, FALSE); + actions_client_move(data, TRUE); + client_configure(c, x, y, w, h, TRUE, TRUE, FALSE); + actions_client_move(data, FALSE); } return FALSE;