From 2a4cd4f6bd9f6b5a43ea6a825e964fb1f4dccd80 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 11 Jul 2007 20:01:47 +0000 Subject: renaming movetofromedge->movetoedge and moveto->moveresizeto --- openbox/actions/moveresizeto.c | 156 +++++++++++++++++++++++++++++++++++++++ openbox/actions/moveto.c | 156 --------------------------------------- openbox/actions/movetoedge.c | 77 +++++++++++++++++++ openbox/actions/movetofromedge.c | 77 ------------------- 4 files changed, 233 insertions(+), 233 deletions(-) create mode 100644 openbox/actions/moveresizeto.c delete mode 100644 openbox/actions/moveto.c create mode 100644 openbox/actions/movetoedge.c delete mode 100644 openbox/actions/movetofromedge.c (limited to 'openbox/actions') diff --git a/openbox/actions/moveresizeto.c b/openbox/actions/moveresizeto.c new file mode 100644 index 00000000..4d23be45 --- /dev/null +++ b/openbox/actions/moveresizeto.c @@ -0,0 +1,156 @@ +#include "openbox/actions.h" +#include "openbox/client.h" +#include "openbox/screen.h" +#include "openbox/frame.h" +#include /* for atoi */ + +typedef struct { + gboolean xcenter; + gboolean ycenter; + gboolean xopposite; + gboolean yopposite; + gint x; + gint y; + gint w; + gint h; + gint monitor; +} Options; + +static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); +static void free_func(gpointer options); +static gboolean run_func(ObActionsData *data, gpointer options); + +void action_moveto_startup() +{ + actions_register("MoveTo", + setup_func, + free_func, + run_func, + NULL, NULL); +} + +static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) +{ + xmlNodePtr n; + Options *o; + + o = g_new0(Options, 1); + o->x = G_MININT; + o->y = G_MININT; + 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("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("width", node))) + o->w = parse_int(doc, n) - 1; + if ((n = parse_find_node("height", node))) + o->h = parse_int(doc, n) - 1; + + if ((n = parse_find_node("monitor", node))) + o->monitor = parse_int(doc, n) - 1; + + return o; +} + +static void free_func(gpointer options) +{ + Options *o = options; + + g_free(o); +} + +/* Always return FALSE because its not interactive */ +static gboolean run_func(ObActionsData *data, gpointer options) +{ + Options *o = options; + + if (data->client) { + Rect *area, *carea; + ObClient *c; + gint mon, cmon; + gint x, y, lw, lh, w, h; + + c = data->client; + mon = o->monitor; + cmon = client_monitor(c); + if (mon < 0) mon = cmon; + area = screen_area(c->desktop, mon, NULL); + carea = screen_area(c->desktop, cmon, NULL); + + w = o->w; + if (w == G_MININT) w = c->area.width; + + h = o->h; + if (h == G_MININT) h = c->area.height; + + /* it might not be able to resize how they requested, so find out what + it will actually be resized to */ + x = c->area.x; + y = c->area.y; + client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE); + + /* get the frame's size */ + w += c->frame->size.left + c->frame->size.right; + h += c->frame->size.top + c->frame->size.bottom; + + x = o->x; + if (o->xcenter) x = (area->width - w) / 2; + else if (x == G_MININT) x = c->frame->area.x - carea->x; + else if (o->xopposite) x = area->width - w; + x += area->x; + + y = o->y; + if (o->ycenter) y = (area->height - h) / 2; + else if (y == G_MININT) y = c->frame->area.y - carea->y; + else if (o->yopposite) y = area->height - h; + y += area->y; + + /* get the client's size back */ + w -= c->frame->size.left + c->frame->size.right; + h -= c->frame->size.top + c->frame->size.bottom; + + frame_frame_gravity(c->frame, &x, &y); /* get the client coords */ + client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE); + /* force it on screen if its moving to another monitor */ + client_find_onscreen(c, &x, &y, w, h, mon != cmon); + + actions_client_move(data, TRUE); + client_configure(c, x, y, w, h, TRUE, TRUE, FALSE); + actions_client_move(data, FALSE); + + g_free(area); + g_free(carea); + } + + return FALSE; +} diff --git a/openbox/actions/moveto.c b/openbox/actions/moveto.c deleted file mode 100644 index 4d23be45..00000000 --- a/openbox/actions/moveto.c +++ /dev/null @@ -1,156 +0,0 @@ -#include "openbox/actions.h" -#include "openbox/client.h" -#include "openbox/screen.h" -#include "openbox/frame.h" -#include /* for atoi */ - -typedef struct { - gboolean xcenter; - gboolean ycenter; - gboolean xopposite; - gboolean yopposite; - gint x; - gint y; - gint w; - gint h; - gint monitor; -} Options; - -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); -static void free_func(gpointer options); -static gboolean run_func(ObActionsData *data, gpointer options); - -void action_moveto_startup() -{ - actions_register("MoveTo", - setup_func, - free_func, - run_func, - NULL, NULL); -} - -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) -{ - xmlNodePtr n; - Options *o; - - o = g_new0(Options, 1); - o->x = G_MININT; - o->y = G_MININT; - 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("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("width", node))) - o->w = parse_int(doc, n) - 1; - if ((n = parse_find_node("height", node))) - o->h = parse_int(doc, n) - 1; - - if ((n = parse_find_node("monitor", node))) - o->monitor = parse_int(doc, n) - 1; - - return o; -} - -static void free_func(gpointer options) -{ - Options *o = options; - - g_free(o); -} - -/* Always return FALSE because its not interactive */ -static gboolean run_func(ObActionsData *data, gpointer options) -{ - Options *o = options; - - if (data->client) { - Rect *area, *carea; - ObClient *c; - gint mon, cmon; - gint x, y, lw, lh, w, h; - - c = data->client; - mon = o->monitor; - cmon = client_monitor(c); - if (mon < 0) mon = cmon; - area = screen_area(c->desktop, mon, NULL); - carea = screen_area(c->desktop, cmon, NULL); - - w = o->w; - if (w == G_MININT) w = c->area.width; - - h = o->h; - if (h == G_MININT) h = c->area.height; - - /* it might not be able to resize how they requested, so find out what - it will actually be resized to */ - x = c->area.x; - y = c->area.y; - client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE); - - /* get the frame's size */ - w += c->frame->size.left + c->frame->size.right; - h += c->frame->size.top + c->frame->size.bottom; - - x = o->x; - if (o->xcenter) x = (area->width - w) / 2; - else if (x == G_MININT) x = c->frame->area.x - carea->x; - else if (o->xopposite) x = area->width - w; - x += area->x; - - y = o->y; - if (o->ycenter) y = (area->height - h) / 2; - else if (y == G_MININT) y = c->frame->area.y - carea->y; - else if (o->yopposite) y = area->height - h; - y += area->y; - - /* get the client's size back */ - w -= c->frame->size.left + c->frame->size.right; - h -= c->frame->size.top + c->frame->size.bottom; - - frame_frame_gravity(c->frame, &x, &y); /* get the client coords */ - client_try_configure(c, &x, &y, &w, &h, &lw, &lh, TRUE); - /* force it on screen if its moving to another monitor */ - client_find_onscreen(c, &x, &y, w, h, mon != cmon); - - actions_client_move(data, TRUE); - client_configure(c, x, y, w, h, TRUE, TRUE, FALSE); - actions_client_move(data, FALSE); - - g_free(area); - g_free(carea); - } - - return FALSE; -} diff --git a/openbox/actions/movetoedge.c b/openbox/actions/movetoedge.c new file mode 100644 index 00000000..8a4044be --- /dev/null +++ b/openbox/actions/movetoedge.c @@ -0,0 +1,77 @@ +#include "openbox/actions.h" +#include "openbox/misc.h" +#include "openbox/client.h" +#include "openbox/frame.h" +#include "openbox/geom.h" +#include + +typedef struct { + ObDirection dir; +} Options; + +static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); +static void free_func(gpointer options); +static gboolean run_func(ObActionsData *data, gpointer options); + +void action_movetofromedge_startup() +{ + actions_register("MoveToEdge", + setup_func, + free_func, + run_func, + NULL, NULL); +} + +static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) +{ + xmlNodePtr n; + Options *o; + + o = g_new0(Options, 1); + o->dir = OB_DIRECTION_NORTH; + + if ((n = parse_find_node("direction", node))) { + gchar *s = parse_string(doc, n); + if (!g_ascii_strcasecmp(s, "north") || + !g_ascii_strcasecmp(s, "up")) + o->dir = OB_DIRECTION_NORTH; + else if (!g_ascii_strcasecmp(s, "south") || + !g_ascii_strcasecmp(s, "down")) + o->dir = OB_DIRECTION_SOUTH; + else if (!g_ascii_strcasecmp(s, "west") || + !g_ascii_strcasecmp(s, "left")) + o->dir = OB_DIRECTION_WEST; + else if (!g_ascii_strcasecmp(s, "east") || + !g_ascii_strcasecmp(s, "right")) + o->dir = OB_DIRECTION_EAST; + g_free(s); + } + + return o; +} + +static void free_func(gpointer options) +{ + Options *o = options; + + g_free(o); +} + +/* Always return FALSE because its not interactive */ +static gboolean run_func(ObActionsData *data, gpointer options) +{ + Options *o = options; + + if (data->client) { + gint x, y; + + client_find_move_directional(data->client, o->dir, &x, &y); + if (x != data->client->area.x || y != data->client->area.y) { + actions_client_move(data, FALSE); + client_move(data->client, x, y); + actions_client_move(data, TRUE); + } + } + + return FALSE; +} diff --git a/openbox/actions/movetofromedge.c b/openbox/actions/movetofromedge.c deleted file mode 100644 index 8a4044be..00000000 --- a/openbox/actions/movetofromedge.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "openbox/actions.h" -#include "openbox/misc.h" -#include "openbox/client.h" -#include "openbox/frame.h" -#include "openbox/geom.h" -#include - -typedef struct { - ObDirection dir; -} Options; - -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); -static void free_func(gpointer options); -static gboolean run_func(ObActionsData *data, gpointer options); - -void action_movetofromedge_startup() -{ - actions_register("MoveToEdge", - setup_func, - free_func, - run_func, - NULL, NULL); -} - -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) -{ - xmlNodePtr n; - Options *o; - - o = g_new0(Options, 1); - o->dir = OB_DIRECTION_NORTH; - - if ((n = parse_find_node("direction", node))) { - gchar *s = parse_string(doc, n); - if (!g_ascii_strcasecmp(s, "north") || - !g_ascii_strcasecmp(s, "up")) - o->dir = OB_DIRECTION_NORTH; - else if (!g_ascii_strcasecmp(s, "south") || - !g_ascii_strcasecmp(s, "down")) - o->dir = OB_DIRECTION_SOUTH; - else if (!g_ascii_strcasecmp(s, "west") || - !g_ascii_strcasecmp(s, "left")) - o->dir = OB_DIRECTION_WEST; - else if (!g_ascii_strcasecmp(s, "east") || - !g_ascii_strcasecmp(s, "right")) - o->dir = OB_DIRECTION_EAST; - g_free(s); - } - - return o; -} - -static void free_func(gpointer options) -{ - Options *o = options; - - g_free(o); -} - -/* Always return FALSE because its not interactive */ -static gboolean run_func(ObActionsData *data, gpointer options) -{ - Options *o = options; - - if (data->client) { - gint x, y; - - client_find_move_directional(data->client, o->dir, &x, &y); - if (x != data->client->area.x || y != data->client->area.y) { - actions_client_move(data, FALSE); - client_move(data->client, x, y); - actions_client_move(data, TRUE); - } - } - - return FALSE; -} -- cgit v1.2.3