X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Faction.c;h=4e3b83ba9cec36724437b106bffd4ac79f48f964;hb=a098c2437e96d58c647559b46278bc92954e9bbe;hp=9c2ded309ec66164b1c5e3814efbc585816452af;hpb=e531f6900672fc278481b7ebf664fe2221517909;p=chaz%2Fopenbox diff --git a/openbox/action.c b/openbox/action.c index 9c2ded30..4e3b83ba 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -314,6 +314,11 @@ ActionString actionstrings[] = action_directional_focus, setup_action_directional_focus_northwest }, + { + "activate", + action_activate, + NULL, + }, { "focus", action_focus, @@ -329,6 +334,11 @@ ActionString actionstrings[] = action_iconify, NULL }, + { + "raiselower", + action_raiselower, + NULL + }, { "raise", action_raise, @@ -711,6 +721,9 @@ ObAction *action_parse(xmlDocPtr doc, xmlNodePtr node) } else if (act->func == action_send_to_desktop_dir) { if ((n = parse_find_node("wrap", node->xmlChildrenNode))) act->data.sendtodir.wrap = parse_bool(doc, n); + } else if (act->func == action_activate) { + if ((n = parse_find_node("here", node->xmlChildrenNode))) + act->data.activate.here = parse_bool(doc, n); } } g_free(actname); @@ -735,6 +748,12 @@ void action_execute(union ActionData *data) } } +void action_activate(union ActionData *data) +{ + if (data->activate.c) + client_activate(data->activate.c, data->activate.here); +} + void action_focus(union ActionData *data) { if (data->client.c) @@ -753,6 +772,16 @@ void action_iconify(union ActionData *data) client_iconify(data->client.c, TRUE, TRUE); } +void action_raiselower(union ActionData *data) +{ + if (data->client.c) { + if (data->client.c->frame->obscured) + stacking_raise(CLIENT_AS_WINDOW(data->client.c)); + else + stacking_lower(CLIENT_AS_WINDOW(data->client.c)); + } +} + void action_raise(union ActionData *data) { if (data->client.c) @@ -1208,7 +1237,7 @@ void action_directional_focus(union ActionData *data) return; if ((nf = client_find_directional(data->diraction.c, data->diraction.direction))) - client_activate(nf); + client_activate(nf, FALSE); } void action_movetoedge(union ActionData *data)