all repos — openbox @ 9586ad246dae1f1de89f2070722cfa0c0c41c477

openbox fork - make it a bit more like ryudo

Add complementing ShrinkToEdge action.
Mikael Magnusson mikachu@comhem.se
commit

9586ad246dae1f1de89f2070722cfa0c0c41c477

parent

f55ae9e56945892825928cfb021b5e739d0d5224

1 files changed, 26 insertions(+), 5 deletions(-)

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

@@ -7,9 +7,11 @@ #include <glib.h>

typedef struct { ObDirection dir; + gboolean shrink; } Options; static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); +static gpointer setup_shrink_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); static void free_func(gpointer options); static gboolean run_func(ObActionsData *data, gpointer options);

@@ -17,6 +19,12 @@ void action_growtoedge_startup()

{ actions_register("GrowToEdge", setup_func, + free_func, + run_func, + NULL, NULL); + + actions_register("ShrinkToEdge", + setup_shrink_func, free_func, run_func, NULL, NULL);

@@ -29,6 +37,7 @@ Options *o;

o = g_new0(Options, 1); o->dir = OB_DIRECTION_NORTH; + o->shrink = FALSE; if ((n = parse_find_node("direction", node))) { gchar *s = parse_string(doc, n);

@@ -50,6 +59,16 @@

return o; } +static gpointer setup_shrink_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) +{ + Options *o; + + o = setup_func(i, doc, node); + o->shrink = TRUE; + + return o; +} + static void free_func(gpointer options) { Options *o = options;

@@ -98,11 +117,13 @@ {

return FALSE; } - /* try grow */ - client_find_resize_directional(data->client, o->dir, TRUE, - &x, &y, &w, &h); - if (do_grow(data, x, y, w, h)) - return FALSE; + if (!o->shrink) { + /* try grow */ + client_find_resize_directional(data->client, o->dir, TRUE, + &x, &y, &w, &h); + if (do_grow(data, x, y, w, h)) + return FALSE; + } /* we couldn't grow, so try shrink! */ opp = (o->dir == OB_DIRECTION_NORTH ? OB_DIRECTION_SOUTH :