summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-17 01:47:20 +0000
committerDana Jansens <danakj@orodu.net>2003-03-17 01:47:20 +0000
commit432ac0983e058133e03885171f266dc4ba07f488 (patch)
tree960e5f90cc78632b24712c0f0be7b18dc402d331 /openbox
parent9a3459e983a11d74ec9f5dc415ce0af551c4b74e (diff)
give engines mouse event notifications. make the openbox engine display pressed buttons
Diffstat (limited to 'openbox')
-rw-r--r--openbox/engine.c4
-rw-r--r--openbox/engine.h5
-rw-r--r--openbox/event.c13
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;