diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-03-17 01:47:20 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-03-17 01:47:20 +0000 |
| commit | 432ac0983e058133e03885171f266dc4ba07f488 (patch) | |
| tree | 960e5f90cc78632b24712c0f0be7b18dc402d331 /openbox | |
| parent | 9a3459e983a11d74ec9f5dc415ce0af551c4b74e (diff) | |
give engines mouse event notifications. make the openbox engine display pressed buttons
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/engine.c | 4 | ||||
| -rw-r--r-- | openbox/engine.h | 5 | ||||
| -rw-r--r-- | openbox/event.c | 13 |
3 files changed, 22 insertions, 0 deletions
diff --git a/openbox/engine.c b/openbox/engine.c index 3457da18..f9fd2cf1 100644 --- a/openbox/engine.c +++ b/openbox/engine.c @@ -52,6 +52,10 @@ static gboolean load(char *name) LOADSYM(frame_show, engine_frame_show); LOADSYM(frame_hide, engine_frame_hide); LOADSYM(get_context, engine_get_context); + LOADSYM(frame_mouse_enter, engine_mouse_enter); + LOADSYM(frame_mouse_leave, engine_mouse_leave); + LOADSYM(frame_mouse_press, engine_mouse_press); + LOADSYM(frame_mouse_release, engine_mouse_release); if (!estartup()) return FALSE; diff --git a/openbox/engine.h b/openbox/engine.h index 067f02fb..d29cf804 100644 --- a/openbox/engine.h +++ b/openbox/engine.h @@ -24,4 +24,9 @@ EngineFrameHide *engine_frame_hide; EngineGetContext *engine_get_context; +EngineMouseEnter *engine_mouse_enter; +EngineMouseLeave *engine_mouse_leave; +EngineMousePress *engine_mouse_press; +EngineMouseRelease *engine_mouse_release; + #endif diff --git a/openbox/event.c b/openbox/event.c index 00b2857c..f6a198cc 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -12,6 +12,7 @@ #include "hooks.h" #include "extensions.h" #include "timer.h" +#include "engine.h" #include <X11/Xlib.h> #include <X11/keysym.h> @@ -286,13 +287,25 @@ void event_process(XEvent *e) /* dispatch Crossing, Pointer and Key events to the hooks */ switch(e->type) { case EnterNotify: + if (client != NULL) engine_mouse_enter(client->frame, window); HOOKFIRECLIENT(pointerenter, client); break; case LeaveNotify: + if (client != NULL) engine_mouse_leave(client->frame, window); HOOKFIRECLIENT(pointerleave, client); break; case ButtonPress: + if (client != NULL) + engine_mouse_press(client->frame, window, + e->xbutton.x, e->xbutton.y); + pointer_event(e, client); + break; case ButtonRelease: + if (client != NULL) + engine_mouse_release(client->frame, window, + e->xbutton.x, e->xbutton.y); + pointer_event(e, client); + break; case MotionNotify: pointer_event(e, client); break; |
