/* get_context */
typedef GQuark EngineGetContext(Client *client, Window win);
+/* frame_mouse_enter */
+typedef void EngineMouseEnter(Frame *self, Window win);
+/* frame_mouse_leave */
+typedef void EngineMouseLeave(Frame *self, Window win);
+/* frame_mouse_press */
+typedef void EngineMousePress(Frame *self, Window win, int x, int y);
+/* frame_mouse_release */
+typedef void EngineMouseRelease(Frame *self, Window win, int x, int y);
+
#endif
return g_quark_try_string("none");
}
+
+void frame_mouse_enter(ObFrame *self, Window win)
+{
+}
+
+void frame_mouse_leave(ObFrame *self, Window win)
+{
+}
+
+void frame_mouse_press(ObFrame *self, Window win, int x, int y)
+{
+ if (win == self->max) {
+ self->max_press = TRUE;
+ render_max(self);
+ }
+ else if (win == self->close) {
+ self->close_press = TRUE;
+ render_close(self);
+ }
+ else if (win == self->iconify) {
+ self->iconify_press = TRUE;
+ render_iconify(self);
+ }
+ else if (win == self->desk) {
+ self->desk_press = TRUE;
+ render_desk(self);
+ }
+}
+
+void frame_mouse_release(ObFrame *self, Window win, int x, int y)
+{
+ if (win == self->max) {
+ self->max_press = FALSE;
+ render_max(self);
+ }
+ else if (win == self->close) {
+ self->close_press = FALSE;
+ render_close(self);
+ }
+ else if (win == self->iconify) {
+ self->iconify_press = FALSE;
+ render_iconify(self);
+ }
+ else if (win == self->desk) {
+ self->desk_press = FALSE;
+ render_desk(self);
+ }
+}
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;
EngineGetContext *engine_get_context;
+EngineMouseEnter *engine_mouse_enter;
+EngineMouseLeave *engine_mouse_leave;
+EngineMousePress *engine_mouse_press;
+EngineMouseRelease *engine_mouse_release;
+
#endif
#include "hooks.h"
#include "extensions.h"
#include "timer.h"
+#include "engine.h"
#include <X11/Xlib.h>
#include <X11/keysym.h>
/* 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;