X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=a9eb0fa5fdd1ae03d686510afb942a98ea5d99e0;hb=20ba24b7415609cbd57927c44f079bab3c911839;hp=02ead5b2615d9137e037f71f9d949af09deb47fe;hpb=bd6d80f16848d107810a56d9ac1c295c1ea778be;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 02ead5b2..a9eb0fa5 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1,4 +1,5 @@ #include "openbox.h" +#include "slit.h" #include "client.h" #include "xerror.h" #include "prop.h" @@ -23,6 +24,8 @@ static void event_process(XEvent *e); static void event_handle_root(XEvent *e); +static void event_handle_slit(Slit *s, XEvent *e); +static void event_handle_slitapp(SlitApp *app, XEvent *e); static void event_handle_client(Client *c, XEvent *e); static void event_handle_menu(Menu *menu, XEvent *e); @@ -373,12 +376,16 @@ static gboolean event_ignore(XEvent *e, Client *client) static void event_process(XEvent *e) { Window window; - Client *client; + Client *client = NULL; + Slit *slit = NULL; + SlitApp *slitapp = NULL; Menu *menu = NULL; window = event_get_window(e); if (!(client = g_hash_table_lookup(client_map, &window))) - menu = g_hash_table_lookup(menu_map, &window); + if (!(slitapp = g_hash_table_lookup(slit_app_map, &window))) + if (!(slit = g_hash_table_lookup(slit_map, &window))) + menu = g_hash_table_lookup(menu_map, &window); event_set_lasttime(e); event_hack_mods(e); @@ -391,6 +398,10 @@ static void event_process(XEvent *e) return; } else if (client) event_handle_client(client, e); + else if (slitapp) + event_handle_slitapp(slitapp, e); + else if (slit) + event_handle_slit(slit, e); else if (window == ob_root) event_handle_root(e); else if (e->type == MapRequest) @@ -901,3 +912,37 @@ static void event_handle_menu(Menu *menu, XEvent *e) } } } + +static void event_handle_slit(Slit *s, XEvent *e) +{ + switch (e->type) { + case EnterNotify: + slit_hide(s, FALSE); + break; + case LeaveNotify: + slit_hide(s, TRUE); + break; + } +} + +static void event_handle_slitapp(SlitApp *app, XEvent *e) +{ + switch (e->type) { + case UnmapNotify: + if (app->ignore_unmaps) { + app->ignore_unmaps--; + break; + } + slit_remove(app, TRUE); + break; + case DestroyNotify: + slit_remove(app, FALSE); + break; + case ReparentNotify: + slit_remove(app, FALSE); + break; + case ConfigureNotify: + slit_app_configure(app, e->xconfigure.width, e->xconfigure.height); + break; + } +}