X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fdesktop.c;h=142fec513108f6a64abb3a6360ee39300436af4e;hb=f1c7a1c34386f3dddf1a8ef2e76e6ed7a7ab8f10;hp=0e9ad7399d192fd0b8dce391e6a4be7dac6145e5;hpb=2464e593300f677ed5dc953a36f25b84edfd07ae;p=chaz%2Fopenbox diff --git a/openbox/actions/desktop.c b/openbox/actions/desktop.c index 0e9ad739..142fec51 100644 --- a/openbox/actions/desktop.c +++ b/openbox/actions/desktop.c @@ -32,7 +32,7 @@ static gpointer setup_send_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); static gboolean run_func(ObActionsData *data, gpointer options); -void action_desktop_startup() +void action_desktop_startup(void) { actions_register("GoToDesktop", setup_go_func, g_free, run_func, NULL, NULL); @@ -55,8 +55,7 @@ static gpointer setup_go_func(ObParseInst *i, xmlDocPtr doc, if ((n = parse_find_node("to", node))) { gchar *s = parse_string(doc, n); - if (!g_ascii_strcasecmp(s, "last") || - !g_ascii_strcasecmp(s, "previous")) + if (!g_ascii_strcasecmp(s, "last")) o->type = LAST; else if (!g_ascii_strcasecmp(s, "next")) { o->type = RELATIVE; @@ -90,7 +89,7 @@ static gpointer setup_go_func(ObParseInst *i, xmlDocPtr doc, } else { o->type = ABSOLUTE; - o->abs.desktop = parse_int(doc, n) - 1; + o->abs.desktop = atoi(s) - 1; } g_free(s); } @@ -123,7 +122,7 @@ static gboolean run_func(ObActionsData *data, gpointer options) Options *o = options; guint d; - + switch (o->type) { case LAST: @@ -133,22 +132,22 @@ 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; } if (d < screen_num_desktops && d != screen_desktop) { gboolean go = TRUE; + actions_client_move(data, TRUE); if (o->send && data->client && client_normal(data->client)) { client_set_desktop(data->client, d, o->follow, FALSE); go = o->follow; } if (go) screen_set_desktop(d, TRUE); + actions_client_move(data, FALSE); } return FALSE; }