From 7c7bfd770d4fa0d83324619110b4056b4434fe80 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Tue, 31 Jul 2007 18:33:57 +0200 Subject: Accept in addition to for the restart action. --- openbox/actions/restart.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'openbox/actions') diff --git a/openbox/actions/restart.c b/openbox/actions/restart.c index f7f1dfc0..fff0a87f 100644 --- a/openbox/actions/restart.c +++ b/openbox/actions/restart.c @@ -25,7 +25,9 @@ static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) o = g_new0(Options, 1); - if ((n = parse_find_node("execute", node))) { + if ((n = parse_find_node("command", node)) || + (n = parse_find_node("execute", node))) + { gchar *s = parse_string(doc, n); o->cmd = parse_expand_tilde(s); g_free(s); -- cgit v1.2.3 From 3b4b52921adba74472904b37ec13d9c8d8686a10 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 3 Aug 2007 20:40:13 -0400 Subject: show a popup notification when switching desktops (also make all the config options export time in milliseconds not half milli half micro) --- openbox/actions/desktop.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'openbox/actions') diff --git a/openbox/actions/desktop.c b/openbox/actions/desktop.c index d3a0d0c3..75949be2 100644 --- a/openbox/actions/desktop.c +++ b/openbox/actions/desktop.c @@ -132,10 +132,8 @@ static gboolean run_func(ObActionsData *data, gpointer options) d = o->abs.desktop; break; case RELATIVE: - d = screen_cycle_desktop(o->rel.dir, - o->rel.wrap, - o->rel.linear, - FALSE, TRUE, FALSE); + d = screen_find_desktop(screen_desktop, + o->rel.dir, o->rel.wrap, o->rel.linear); break; } -- cgit v1.2.3 From 0cfd92ab9e56d8f790c92b83436e981fa46efe20 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 4 Aug 2007 13:29:13 -0400 Subject: don't make omnipresent windows lose focus when changing desktops. this is done by allowing focus_fallback to specify if focus has been lost or not. usually if you're call it, focus is lost, but not always. --- openbox/actions/unfocus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'openbox/actions') diff --git a/openbox/actions/unfocus.c b/openbox/actions/unfocus.c index 70384f4d..0527d2a0 100644 --- a/openbox/actions/unfocus.c +++ b/openbox/actions/unfocus.c @@ -12,6 +12,6 @@ void action_unfocus_startup() static gboolean run_func(ObActionsData *data, gpointer options) { if (data->client && data->client == focus_client) - focus_fallback(FALSE, FALSE, TRUE); + focus_fallback(FALSE, FALSE, TRUE, FALSE); return FALSE; } -- cgit v1.2.3 From fba55d8d9f49f0714054bf84a604e70ac15ead3c Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 4 Aug 2007 14:04:22 -0400 Subject: make growtoedge shrink if it cyan grow any more --- openbox/actions/growtoedge.c | 100 ++++++++++++++++++++++++++++++++----------- 1 file changed, 75 insertions(+), 25 deletions(-) (limited to 'openbox/actions') diff --git a/openbox/actions/growtoedge.c b/openbox/actions/growtoedge.c index 501c64de..2e2b7011 100644 --- a/openbox/actions/growtoedge.c +++ b/openbox/actions/growtoedge.c @@ -57,39 +57,89 @@ static void free_func(gpointer options) g_free(o); } +static gboolean do_grow(ObActionsData *data, gint x, gint y, gint w, gint h) +{ + gint realw, realh, lw, lh; + + realw = w; + realh = h; + client_try_configure(data->client, &x, &y, &realw, &realh, + &lw, &lh, TRUE); + /* if it's going to be resized smaller than it intended, don't + move the window over */ + if (x != data->client->area.x) x += w - realw; + if (y != data->client->area.y) y += h - realh; + + if (x != data->client->area.x || y != data->client->area.y || + realw != data->client->area.width || + realh != data->client->area.height) + { + actions_client_move(data, TRUE); + client_move_resize(data->client, x, y, realw, realh); + actions_client_move(data, FALSE); + return TRUE; + } + return FALSE; +} + /* Always return FALSE because its not interactive */ static gboolean run_func(ObActionsData *data, gpointer options) { Options *o = options; + gint x, y, w, h; + ObDirection opp; + gint half; - if (data->client) { - gint x, y, w, h, realw, realh, lw, lh; - + if (!data->client || /* don't allow vertical resize if shaded */ - if (o->dir != OB_DIRECTION_NORTH || o->dir != OB_DIRECTION_SOUTH || - !data->client->shaded) - { - client_find_resize_directional(data->client, o->dir, TRUE, - &x, &y, &w, &h); - realw = w; - realh = h; - client_try_configure(data->client, &x, &y, &realw, &realh, - &lw, &lh, TRUE); - /* if it's going to be resized smaller than it intended, don't - move the window over */ - if (x != data->client->area.x) x += w - realw; - if (y != data->client->area.y) y += h - realh; - - if (x != data->client->area.x || y != data->client->area.y || - w != data->client->area.width || - h != data->client->area.height) - { - actions_client_move(data, TRUE); - client_move_resize(data->client, x, y, realw, realh); - actions_client_move(data, FALSE); - } + ((o->dir == OB_DIRECTION_NORTH || o->dir == OB_DIRECTION_SOUTH) && + data->client->shaded)) + { + 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; + + /* we couldn't grow, so try shrink! */ + opp = (o->dir == OB_DIRECTION_NORTH ? OB_DIRECTION_SOUTH : + (o->dir == OB_DIRECTION_SOUTH ? OB_DIRECTION_NORTH : + (o->dir == OB_DIRECTION_EAST ? OB_DIRECTION_WEST : + OB_DIRECTION_EAST))); + client_find_resize_directional(data->client, opp, FALSE, + &x, &y, &w, &h); + switch (opp) { + case OB_DIRECTION_NORTH: + half = data->client->area.y + data->client->area.height / 2; + if (y > half) { + h += y - half; + y = half; + } + break; + case OB_DIRECTION_SOUTH: + half = data->client->area.height / 2; + if (h < half) + h = half; + break; + case OB_DIRECTION_WEST: + half = data->client->area.x + data->client->area.width / 2; + if (x > half) { + w += x - half; + x = half; } + break; + case OB_DIRECTION_EAST: + half = data->client->area.width / 2; + if (w < half) + w = half; + break; + default: g_assert_not_reached(); } + if (do_grow(data, x, y, w, h)) + return FALSE; return FALSE; } -- cgit v1.2.3