X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=openbox%2Fdispatch.c;h=291e9580803c878603585d8921b670d86b67dba8;hb=f6ad401dabc52f9841323f93b89b2169afbdaacc;hp=d6f91a2f6b66c42fa57e46467a7021a4b458fc0e;hpb=c2cbef62bb5d7e0c3f8c00e95bc885dc1f9ab1da;p=chaz%2Fopenbox diff --git a/openbox/dispatch.c b/openbox/dispatch.c index d6f91a2f..291e9580 100644 --- a/openbox/dispatch.c +++ b/openbox/dispatch.c @@ -1,5 +1,6 @@ #include "dispatch.h" #include "extensions.h" +#include "client.h" #include @@ -22,10 +23,7 @@ void dispatch_startup() j >>= 1; ++i; } - funcs = g_new(GSList*, i); - - for (i = 0, j = 1; j < EVENT_RANGE; ++i, j <<= 1) - funcs[i] = NULL; + funcs = g_new0(GSList*, i); } void dispatch_shutdown() @@ -87,7 +85,7 @@ void dispatch_register(EventMask mask, EventHandler h, void *data) } } -void dispatch_x(XEvent *xe, Client *c) +void dispatch_x(XEvent *xe, ObClient *c) { EventType e; guint i; @@ -144,7 +142,7 @@ void dispatch_x(XEvent *xe, Client *c) } } -void dispatch_client(EventType e, Client *c, int num0, int num1) +void dispatch_client(EventType e, ObClient *c, int num0, int num1) { guint i; GSList *it; @@ -156,6 +154,7 @@ void dispatch_client(EventType e, Client *c, int num0, int num1) obe.data.c.client = c; obe.data.c.num[0] = num0; obe.data.c.num[1] = num1; + obe.data.c.num[2] = 0; i = 0; while (e > 1) { @@ -213,11 +212,11 @@ void dispatch_signal(int signal) } } -void dispatch_move(Client *c, int *x, int *y) +void dispatch_move(ObClient *c, int *x, int *y) { guint i; - EventType e = Event_Client_Moving; GSList *it; + EventType e = Event_Client_Moving; ObEvent obe; obe.type = e; @@ -239,3 +238,31 @@ void dispatch_move(Client *c, int *x, int *y) *x = obe.data.c.num[0]; *y = obe.data.c.num[1]; } + +void dispatch_resize(ObClient *c, int *w, int *h, ObCorner corner) +{ + guint i; + GSList *it; + EventType e = Event_Client_Resizing; + ObEvent obe; + + obe.type = e; + obe.data.c.client = c; + obe.data.c.num[0] = *w; + obe.data.c.num[1] = *h; + obe.data.c.num[2] = corner; + + i = 0; + while (e > 1) { + e >>= 1; + ++i; + } + + for (it = funcs[i]; it != NULL; it = it->next) { + Func *f = it->data; + f->h(&obe, f->data); + } + + *w = obe.data.c.num[0]; + *h = obe.data.c.num[1]; +}