X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fresize.c;h=fbcdf24a6b3a7d32c16798c58b946e977bdf7504;hb=b06b684589a618a2481ccc2745d5e03abb6bd5e0;hp=81901bddb55b9f9649fa43258d2750fb21414e40;hpb=556eb7b7fb20b3b0db03b6d92259ad3bb16dccde;p=chaz%2Fopenbox diff --git a/openbox/actions/resize.c b/openbox/actions/resize.c index 81901bdd..fbcdf24a 100644 --- a/openbox/actions/resize.c +++ b/openbox/actions/resize.c @@ -1,15 +1,15 @@ #include "openbox/actions.h" -#include "openbox/prop.h" #include "openbox/moveresize.h" #include "openbox/client.h" #include "openbox/frame.h" +#include "obt/prop.h" typedef struct { + gboolean corner_specified; guint32 corner; } Options; -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node); -static void free_func(gpointer options); +static gpointer setup_func(xmlNodePtr node); static gboolean run_func(ObActionsData *data, gpointer options); static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch, @@ -17,50 +17,44 @@ static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch, void action_resize_startup(void) { - actions_register("Resize", - setup_func, - free_func, - run_func, - NULL, NULL); + actions_register("Resize", setup_func, g_free, run_func); } -static gpointer setup_func(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) +static gpointer setup_func(xmlNodePtr node) { xmlNodePtr n; Options *o; o = g_new0(Options, 1); - if ((n = parse_find_node("edge", node))) { - gchar *s = parse_string(doc, n); + if ((n = obt_xml_find_node(node, "edge"))) { + gchar *s = obt_xml_node_string(n); + + o->corner_specified = TRUE; if (!g_ascii_strcasecmp(s, "top")) - o->corner = prop_atoms.net_wm_moveresize_size_top; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOP); else if (!g_ascii_strcasecmp(s, "bottom")) - o->corner = prop_atoms.net_wm_moveresize_size_bottom; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOM); else if (!g_ascii_strcasecmp(s, "left")) - o->corner = prop_atoms.net_wm_moveresize_size_left; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_LEFT); else if (!g_ascii_strcasecmp(s, "right")) - o->corner = prop_atoms.net_wm_moveresize_size_right; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_RIGHT); else if (!g_ascii_strcasecmp(s, "topleft")) - o->corner = prop_atoms.net_wm_moveresize_size_topleft; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPLEFT); else if (!g_ascii_strcasecmp(s, "topright")) - o->corner = prop_atoms.net_wm_moveresize_size_topright; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPRIGHT); else if (!g_ascii_strcasecmp(s, "bottomleft")) - o->corner = prop_atoms.net_wm_moveresize_size_bottomleft; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT); else if (!g_ascii_strcasecmp(s, "bottomright")) - o->corner = prop_atoms.net_wm_moveresize_size_bottomright; + o->corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT); + else + o->corner_specified = FALSE; + g_free(s); } return o; } -static void free_func(gpointer options) -{ - Options *o = options; - - g_free(o); -} - /* Always return FALSE because its not interactive */ static gboolean run_func(ObActionsData *data, gpointer options) { @@ -71,8 +65,8 @@ static gboolean run_func(ObActionsData *data, gpointer options) guint32 corner; if (!data->button) - corner = prop_atoms.net_wm_moveresize_size_keyboard; - else if (o->corner) + corner = OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_KEYBOARD); + else if (o->corner_specified) corner = o->corner; /* it was specified in the binding */ else corner = pick_corner(data->x, data->y, @@ -157,30 +151,30 @@ static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch, if (shaded) { /* for shaded windows, you can only resize west/east and move */ if (b) - return prop_atoms.net_wm_moveresize_size_left; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_LEFT); if (c) - return prop_atoms.net_wm_moveresize_size_right; - return prop_atoms.net_wm_moveresize_move; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_RIGHT); + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_MOVE); } if (y < A && y >= C) - return prop_atoms.net_wm_moveresize_size_topleft; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPLEFT); else if (y >= A && y >= B && a) - return prop_atoms.net_wm_moveresize_size_top; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOP); else if (y < B && y >= D) - return prop_atoms.net_wm_moveresize_size_topright; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_TOPRIGHT); else if (y < C && y >= E && b) - return prop_atoms.net_wm_moveresize_size_left; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_LEFT); else if (y < D && y >= F && c) - return prop_atoms.net_wm_moveresize_size_right; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_RIGHT); else if (y < E && y >= G) - return prop_atoms.net_wm_moveresize_size_bottomleft; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT); else if (y < G && y < H && d) - return prop_atoms.net_wm_moveresize_size_bottom; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOM); else if (y >= H && y < F) - return prop_atoms.net_wm_moveresize_size_bottomright; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT); else - return prop_atoms.net_wm_moveresize_move; + return OBT_PROP_ATOM(NET_WM_MOVERESIZE_MOVE); #undef X #undef A