]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
add the "if" action
[chaz/openbox] / openbox / action.c
index 8b2cfe857fe63efc03d9bd885b2f30aef40da253..3786feb363cdb0b649b188c9d9370ccbda426f35 100644 (file)
    See the COPYING file for a copy of the GNU General Public License.
 */
 
-#include "debug.h"
-#include "client.h"
-#include "focus.h"
-#include "focus_cycle.h"
-#include "moveresize.h"
-#include "menu.h"
-#include "prop.h"
-#include "stacking.h"
-#include "screen.h"
-#include "action.h"
-#include "openbox.h"
-#include "grab.h"
-#include "keyboard.h"
-#include "event.h"
-#include "dock.h"
-#include "config.h"
-#include "mainloop.h"
-#include "startupnotify.h"
-#include "gettext.h"
-
-#include <glib.h>
-
-
-
-typedef struct
-{
-    const gchar *name;
-    void (*func)(union ActionData *);
-    void (*setup)(ObAction **, ObUserAction uact);
-} ActionString;
-
-static ObAction *action_new(void (*func)(union ActionData *data))
-{
-    ObAction *a = g_new0(ObAction, 1);
-    a->ref = 1;
-    a->func = func;
-
-    return a;
-}
-
-void action_ref(ObAction *a)
-{
-    ++a->ref;
-}
-
-void action_unref(ObAction *a)
-{
-    if (a == NULL) return;
-
-    if (--a->ref > 0) return;
-
-    /* deal with pointers */
-    if (a->func == action_execute || a->func == action_restart)
-        g_free(a->data.execute.path);
-    else if (a->func == action_debug)
-        g_free(a->data.debug.string);
-    else if (a->func == action_showmenu)
-        g_free(a->data.showmenu.name);
-
-    g_free(a);
-}
-
-ObAction* action_copy(const ObAction *src)
-{
-    ObAction *a = action_new(src->func);
-
-    a->data = src->data;
-
-    /* deal with pointers */
-    if (a->func == action_execute || a->func == action_restart)
-        a->data.execute.path = g_strdup(a->data.execute.path);
-    else if (a->func == action_debug)
-        a->data.debug.string = g_strdup(a->data.debug.string);
-    else if (a->func == action_showmenu)
-        a->data.showmenu.name = g_strdup(a->data.showmenu.name);
-
-    return a;
-}
-
-void setup_action_send_to_desktop_prev(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.sendtodir.inter.any.interactive = TRUE;
-    (*a)->data.sendtodir.dir = OB_DIRECTION_WEST;
-    (*a)->data.sendtodir.linear = TRUE;
-    (*a)->data.sendtodir.wrap = TRUE;
-    (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_next(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.sendtodir.inter.any.interactive = TRUE;
-    (*a)->data.sendtodir.dir = OB_DIRECTION_EAST;
-    (*a)->data.sendtodir.linear = TRUE;
-    (*a)->data.sendtodir.wrap = TRUE;
-    (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_left(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.sendtodir.inter.any.interactive = TRUE;
-    (*a)->data.sendtodir.dir = OB_DIRECTION_WEST;
-    (*a)->data.sendtodir.linear = FALSE;
-    (*a)->data.sendtodir.wrap = TRUE;
-    (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_right(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.sendtodir.inter.any.interactive = TRUE;
-    (*a)->data.sendtodir.dir = OB_DIRECTION_EAST;
-    (*a)->data.sendtodir.linear = FALSE;
-    (*a)->data.sendtodir.wrap = TRUE;
-    (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_up(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.sendtodir.inter.any.interactive = TRUE;
-    (*a)->data.sendtodir.dir = OB_DIRECTION_NORTH;
-    (*a)->data.sendtodir.linear = FALSE;
-    (*a)->data.sendtodir.wrap = TRUE;
-    (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_down(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.sendtodir.inter.any.interactive = TRUE;
-    (*a)->data.sendtodir.dir = OB_DIRECTION_SOUTH;
-    (*a)->data.sendtodir.linear = FALSE;
-    (*a)->data.sendtodir.wrap = TRUE;
-    (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_desktop_prev(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.desktopdir.inter.any.interactive = TRUE;
-    (*a)->data.desktopdir.dir = OB_DIRECTION_WEST;
-    (*a)->data.desktopdir.linear = TRUE;
-    (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_next(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.desktopdir.inter.any.interactive = TRUE;
-    (*a)->data.desktopdir.dir = OB_DIRECTION_EAST;
-    (*a)->data.desktopdir.linear = TRUE;
-    (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_left(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.desktopdir.inter.any.interactive = TRUE;
-    (*a)->data.desktopdir.dir = OB_DIRECTION_WEST;
-    (*a)->data.desktopdir.linear = FALSE;
-    (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_right(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.desktopdir.inter.any.interactive = TRUE;
-    (*a)->data.desktopdir.dir = OB_DIRECTION_EAST;
-    (*a)->data.desktopdir.linear = FALSE;
-    (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_up(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.desktopdir.inter.any.interactive = TRUE;
-    (*a)->data.desktopdir.dir = OB_DIRECTION_NORTH;
-    (*a)->data.desktopdir.linear = FALSE;
-    (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_down(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.desktopdir.inter.any.interactive = TRUE;
-    (*a)->data.desktopdir.dir = OB_DIRECTION_SOUTH;
-    (*a)->data.desktopdir.linear = FALSE;
-    (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_movefromedge_north(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_NORTH;
-    (*a)->data.diraction.hang = TRUE;
-}
-
-void setup_action_movefromedge_south(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_SOUTH;
-    (*a)->data.diraction.hang = TRUE;
-}
-
-void setup_action_movefromedge_east(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_EAST;
-    (*a)->data.diraction.hang = TRUE;
-}
-
-void setup_action_movefromedge_west(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_WEST;
-    (*a)->data.diraction.hang = TRUE;
-}
-
-void setup_action_movetoedge_north(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_NORTH;
-    (*a)->data.diraction.hang = FALSE;
-}
-
-void setup_action_movetoedge_south(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_SOUTH;
-    (*a)->data.diraction.hang = FALSE;
-}
-
-void setup_action_movetoedge_east(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_EAST;
-    (*a)->data.diraction.hang = FALSE;
-}
-
-void setup_action_movetoedge_west(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_WEST;
-    (*a)->data.diraction.hang = FALSE;
-}
-
-void setup_action_growtoedge_north(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_NORTH;
-}
-
-void setup_action_growtoedge_south(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_SOUTH;
-}
-
-void setup_action_growtoedge_east(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_EAST;
-}
-
-void setup_action_growtoedge_west(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.diraction.direction = OB_DIRECTION_WEST;
-}
-
-void setup_action_top_layer(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.layer.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.layer.layer = 1;
-}
-
-void setup_action_normal_layer(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.layer.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.layer.layer = 0;
-}
-
-void setup_action_bottom_layer(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.layer.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-    (*a)->data.layer.layer = -1;
-}
-
-void setup_client_action(ObAction **a, ObUserAction uact)
-{
-    (*a)->data.any.client_action = OB_CLIENT_ACTION_ALWAYS;
-}
-
 ActionString actionstrings[] =
 {
     {
@@ -319,126 +29,6 @@ ActionString actionstrings[] =
         action_unshaderaise,
         setup_client_action
     },
-    {
-        "sendtodesktopnext",
-        action_send_to_desktop_dir,
-        setup_action_send_to_desktop_next
-    },
-    {
-        "sendtodesktopprevious",
-        action_send_to_desktop_dir,
-        setup_action_send_to_desktop_prev
-    },
-    {
-        "sendtodesktopright",
-        action_send_to_desktop_dir,
-        setup_action_send_to_desktop_right
-    },
-    {
-        "sendtodesktopleft",
-        action_send_to_desktop_dir,
-        setup_action_send_to_desktop_left
-    },
-    {
-        "sendtodesktopup",
-        action_send_to_desktop_dir,
-        setup_action_send_to_desktop_up
-    },
-    {
-        "sendtodesktopdown",
-        action_send_to_desktop_dir,
-        setup_action_send_to_desktop_down
-    },
-    {
-        "toggledockautohide",
-        action_toggle_dockautohide,
-        NULL
-    },
-    {
-        "sendtotoplayer",
-        action_send_to_layer,
-        setup_action_top_layer
-    },
-    {
-        "togglealwaysontop",
-        action_toggle_layer,
-        setup_action_top_layer
-    },
-    {
-        "sendtonormallayer",
-        action_send_to_layer,
-        setup_action_normal_layer
-    },
-    {
-        "sendtobottomlayer",
-        action_send_to_layer,
-        setup_action_bottom_layer
-    },
-    {
-        "togglealwaysonbottom",
-        action_toggle_layer,
-        setup_action_bottom_layer
-    },
-    {
-        "movefromedgenorth",
-        action_movetoedge,
-        setup_action_movefromedge_north
-    },
-    {
-        "movefromedgesouth",
-        action_movetoedge,
-        setup_action_movefromedge_south
-    },
-    {
-        "movefromedgewest",
-        action_movetoedge,
-        setup_action_movefromedge_west
-    },
-    {
-        "movefromedgeeast",
-        action_movetoedge,
-        setup_action_movefromedge_east
-    },
-    {
-        "movetoedgenorth",
-        action_movetoedge,
-        setup_action_movetoedge_north
-    },
-    {
-        "movetoedgesouth",
-        action_movetoedge,
-        setup_action_movetoedge_south
-    },
-    {
-        "movetoedgewest",
-        action_movetoedge,
-        setup_action_movetoedge_west
-    },
-    {
-        "movetoedgeeast",
-        action_movetoedge,
-        setup_action_movetoedge_east
-    },
-    {
-        "growtoedgenorth",
-        action_growtoedge,
-        setup_action_growtoedge_north
-    },
-    {
-        "growtoedgesouth",
-        action_growtoedge,
-        setup_action_growtoedge_south
-    },
-    {
-        "growtoedgewest",
-        action_growtoedge,
-        setup_action_growtoedge_west
-    },
-    {
-        "growtoedgeeast",
-        action_growtoedge,
-        setup_action_growtoedge_east
-    },
     {
         NULL,
         NULL,
@@ -461,136 +51,3 @@ void action_shadelower(union ActionData *data)
     else
         action_shade(data);
 }
-
-void action_movetoedge(union ActionData *data)
-{
-    gint x, y;
-    ObClient *c = data->diraction.any.c;
-
-    x = c->frame->area.x;
-    y = c->frame->area.y;
-    
-    switch(data->diraction.direction) {
-    case OB_DIRECTION_NORTH:
-        y = client_directional_edge_search(c, OB_DIRECTION_NORTH,
-                                           data->diraction.hang)
-            - (data->diraction.hang ? c->frame->area.height : 0);
-        break;
-    case OB_DIRECTION_WEST:
-        x = client_directional_edge_search(c, OB_DIRECTION_WEST,
-                                           data->diraction.hang)
-            - (data->diraction.hang ? c->frame->area.width : 0);
-        break;
-    case OB_DIRECTION_SOUTH:
-        y = client_directional_edge_search(c, OB_DIRECTION_SOUTH,
-                                           data->diraction.hang)
-            - (data->diraction.hang ? 0 : c->frame->area.height);
-        break;
-    case OB_DIRECTION_EAST:
-        x = client_directional_edge_search(c, OB_DIRECTION_EAST,
-                                           data->diraction.hang)
-            - (data->diraction.hang ? 0 : c->frame->area.width);
-        break;
-    default:
-        g_assert_not_reached();
-    }
-    frame_frame_gravity(c->frame, &x, &y, c->area.width, c->area.height);
-    client_action_start(data);
-    client_move(c, x, y);
-    client_action_end(data, FALSE);
-}
-
-void action_growtoedge(union ActionData *data)
-{
-    gint x, y, width, height, dest;
-    ObClient *c = data->diraction.any.c;
-    Rect *a;
-
-    a = screen_area(c->desktop, SCREEN_AREA_ALL_MONITORS, &c->frame->area);
-    x = c->frame->area.x;
-    y = c->frame->area.y;
-    /* get the unshaded frame's dimensions..if it is shaded */
-    width = c->area.width + c->frame->size.left + c->frame->size.right;
-    height = c->area.height + c->frame->size.top + c->frame->size.bottom;
-
-    switch(data->diraction.direction) {
-    case OB_DIRECTION_NORTH:
-        if (c->shaded) break; /* don't allow vertical resize if shaded */
-
-        dest = client_directional_edge_search(c, OB_DIRECTION_NORTH, FALSE);
-        if (a->y == y)
-            height = height / 2;
-        else {
-            height = c->frame->area.y + height - dest;
-            y = dest;
-        }
-        break;
-    case OB_DIRECTION_WEST:
-        dest = client_directional_edge_search(c, OB_DIRECTION_WEST, FALSE);
-        if (a->x == x)
-            width = width / 2;
-        else {
-            width = c->frame->area.x + width - dest;
-            x = dest;
-        }
-        break;
-    case OB_DIRECTION_SOUTH:
-        if (c->shaded) break; /* don't allow vertical resize if shaded */
-
-        dest = client_directional_edge_search(c, OB_DIRECTION_SOUTH, FALSE);
-        if (a->y + a->height == y + c->frame->area.height) {
-            height = c->frame->area.height / 2;
-            y = a->y + a->height - height;
-        } else
-            height = dest - c->frame->area.y;
-        y += (height - c->frame->area.height) % c->size_inc.height;
-        height -= (height - c->frame->area.height) % c->size_inc.height;
-        break;
-    case OB_DIRECTION_EAST:
-        dest = client_directional_edge_search(c, OB_DIRECTION_EAST, FALSE);
-        if (a->x + a->width == x + c->frame->area.width) {
-            width = c->frame->area.width / 2;
-            x = a->x + a->width - width;
-        } else
-            width = dest - c->frame->area.x;
-        x += (width - c->frame->area.width) % c->size_inc.width;
-        width -= (width - c->frame->area.width) % c->size_inc.width;
-        break;
-    default:
-        g_assert_not_reached();
-    }
-    width -= c->frame->size.left + c->frame->size.right;
-    height -= c->frame->size.top + c->frame->size.bottom;
-    frame_frame_gravity(c->frame, &x, &y, width, height);
-    client_action_start(data);
-    client_move_resize(c, x, y, width, height);
-    client_action_end(data, FALSE);
-    g_free(a);
-}
-
-void action_send_to_layer(union ActionData *data)
-{
-    client_set_layer(data->layer.any.c, data->layer.layer);
-}
-
-void action_toggle_layer(union ActionData *data)
-{
-    ObClient *c = data->layer.any.c;
-
-    client_action_start(data);
-    if (data->layer.layer < 0)
-        client_set_layer(c, c->below ? 0 : -1);
-    else if (data->layer.layer > 0)
-        client_set_layer(c, c->above ? 0 : 1);
-    client_action_end(data, config_focus_under_mouse);
-}
-
-void action_toggle_dockautohide(union ActionData *data)
-{
-    config_dock_hide = !config_dock_hide;
-    dock_configure();
-}
-
-void action_remove_desktop(union ActionData *data)
-{
-}
This page took 0.034433 seconds and 4 git commands to generate.