wheel patches

SVN revision: 6935
This commit is contained in:
Carsten Haitzler 2003-05-25 09:43:53 +00:00
parent f726ca9c6c
commit 7f234266a9
4 changed files with 103 additions and 20 deletions

View File

@ -11,6 +11,7 @@ enum _Evas_Callback_Type
EVAS_CALLBACK_MOUSE_DOWN, /**< Mouse Button Down Event */
EVAS_CALLBACK_MOUSE_UP, /**< Mouse Button Up Event */
EVAS_CALLBACK_MOUSE_MOVE, /**< Mouse Move Event */
EVAS_CALLBACK_MOUSE_WHEEL, /**< Mouse Wheel Event */
EVAS_CALLBACK_FREE, /**< Object Being Freed */
EVAS_CALLBACK_KEY_DOWN, /**< Key Press Event */
EVAS_CALLBACK_KEY_UP, /**< Key Release Event */
@ -63,6 +64,7 @@ typedef struct _Evas_Event_Mouse_Up Evas_Event_Mouse_Up; /**< Event structure
typedef struct _Evas_Event_Mouse_In Evas_Event_Mouse_In; /**< Event structure for #EVAS_CALLBACK_MOUSE_IN event callbacks */
typedef struct _Evas_Event_Mouse_Out Evas_Event_Mouse_Out; /**< Event structure for #EVAS_CALLBACK_MOUSE_OUT event callbacks */
typedef struct _Evas_Event_Mouse_Move Evas_Event_Mouse_Move; /**< Event structure for #EVAS_CALLBACK_MOUSE_MOVE event callbacks */
typedef struct _Evas_Event_Mouse_Wheel Evas_Event_Mouse_Wheel; /**< Event structure for #EVAS_CALLBACK_MOUSE_WHEEL event callbacks */
typedef struct _Evas_Event_Key_Down Evas_Event_Key_Down; /**< Event structure for #EVAS_CALLBACK_KEY_DOWN event callbacks */
typedef struct _Evas_Event_Key_Up Evas_Event_Key_Up; /**< Event structure for #EVAS_CALLBACK_KEY_UP event callbacks */
@ -155,6 +157,24 @@ struct _Evas_Event_Mouse_Move /** Mouse button down event */
Evas_Lock *locks;
};
struct _Evas_Event_Mouse_Wheel /** Wheel event */
{
int direction; /* 0 = default up/down wheel FIXME: more wheel types */
int z; /* ...,-2,-1 = down, 1,2,... = up */
struct {
int x, y;
} output;
struct {
double x, y;
} canvas;
void *data;
Evas_Modifier *modifiers;
Evas_Lock *locks;
};
struct _Evas_Event_Key_Down /** Key press event */
{
char *keyname; /**< The string name of the key pressed */
@ -381,6 +401,7 @@ extern "C" {
void evas_event_feed_mouse_move_data (Evas *e, int x, int y, const void *data);
void evas_event_feed_mouse_in_data (Evas *e, const void *data);
void evas_event_feed_mouse_out_data (Evas *e, const void *data);
void evas_event_feed_mouse_wheel_data (Evas *e, int direction, int z, const void *data);
void evas_event_feed_key_down_data (Evas *e, const char *keyname, const void *data);
void evas_event_feed_key_up_data (Evas *e, const char *keyname, const void *data);
void evas_event_feed_mouse_down (Evas *e, int b);
@ -388,6 +409,7 @@ extern "C" {
void evas_event_feed_mouse_move (Evas *e, int x, int y);
void evas_event_feed_mouse_in (Evas *e);
void evas_event_feed_mouse_out (Evas *e);
void evas_event_feed_mouse_wheel (Evas *e, int direction, int z);
void evas_event_feed_key_down (Evas *e, const char *keyname);
void evas_event_feed_key_up (Evas *e, const char *keyname);

View File

@ -131,6 +131,9 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
break;
case EVAS_CALLBACK_MOUSE_MOVE:
l_mod = &(obj->callbacks->move);
break;
case EVAS_CALLBACK_MOUSE_WHEEL:
l_mod = &(obj->callbacks->wheel);
break;
case EVAS_CALLBACK_FREE:
l_mod = &(obj->callbacks->free);
@ -212,11 +215,11 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
*
* The event type @p type to trigger the function mys be one of
* EVAS_CALLBACK_MOUSE_IN, EVAS_CALLBACK_MOUSE_OUT, EVAS_CALLBACK_MOUSE_DOWN,
* EVAS_CALLBACK_MOUSE_UP, EVAS_CALLBACK_MOUSE_MOVE, EVAS_CALLBACK_FREE,
* EVAS_CALLBACK_KEY_DOWN, EVAS_CALLBACK_KEY_UP, EVAS_CALLBACK_FOCUS_IN,
* EVAS_CALLBACK_FOCUS_OUT, EVAS_CALLBACK_SHOW, EVAS_CALLBACK_HIDE,
* EVAS_CALLBACK_MOVE, EVAS_CALLBACK_RESIZE or EVAS_CALLBACK_RESTACK. This
* determines the kind of event that will trigger the callback to be called.
* EVAS_CALLBACK_MOUSE_UP, EVAS_CALLBACK_MOUSE_MOVE, EVAS_CALLBACK_MOUSE_WHEEL,
* EVAS_CALLBACK_FREE, EVAS_CALLBACK_KEY_DOWN, EVAS_CALLBACK_KEY_UP,
* EVAS_CALLBACK_FOCUS_IN, EVAS_CALLBACK_FOCUS_OUT, EVAS_CALLBACK_SHOW,
* EVAS_CALLBACK_HIDE, EVAS_CALLBACK_MOVE, EVAS_CALLBACK_RESIZE or EVAS_CALLBACK_RESTACK.
* This determines the kind of event that will trigger the callback to be called.
* The @p event_info pointer passed to the callback will be one of the
* following, depending on the event tiggering it:
*
@ -261,7 +264,12 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
*
* This event is triggered by the mouse pointer moving while over an object or
* passively grabbed to an object.
*
*
* EVAS_CALLBACK_MOUSE_WHEEL: event_info = pointer to Evas_Event_Mouse_Wheel
*
* This event is triggered by the mouse wheel being rolled while over an object
* or passively grabbed to an object.
*
* EVAS_CALLBACK_FREE: event_info = NULL
*
* This event is triggered just before Evas is about to free all memory used
@ -375,6 +383,9 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void (
break;
case EVAS_CALLBACK_MOUSE_MOVE:
l_mod = &(obj->callbacks->move);
break;
case EVAS_CALLBACK_MOUSE_WHEEL:
l_mod = &(obj->callbacks->wheel);
break;
case EVAS_CALLBACK_FREE:
l_mod = &(obj->callbacks->free);
@ -467,6 +478,9 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void (
break;
case EVAS_CALLBACK_MOUSE_MOVE:
l_mod = &(obj->callbacks->move);
break;
case EVAS_CALLBACK_MOUSE_WHEEL:
l_mod = &(obj->callbacks->wheel);
break;
case EVAS_CALLBACK_FREE:
l_mod = &(obj->callbacks->free);

View File

@ -141,6 +141,39 @@ evas_event_feed_mouse_down_data(Evas *e, int b, const void *data)
if (copy) copy = evas_list_free(copy);
}
void
evas_event_feed_mouse_wheel_data(Evas *e, int direction, int z, const void *data)
{
Evas_List *l, *copy;
Evas_Object *obj;
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
copy = evas_event_list_copy(e->pointer.object.in);
for (l = copy; l; l = l->next)
{
Evas_Event_Mouse_Wheel ev;
Evas_Object *obj = l->data;
ev.direction = direction;
ev.z = z;
ev.output.x = e->pointer.x;
ev.output.y = e->pointer.y;
ev.canvas.x = e->pointer.canvas_x;
ev.canvas.y = e->pointer.canvas_y;
ev.data = (void *) data;
ev.modifiers = &(e->modifiers);
ev.locks = &(e->locks);
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
}
return;
}
/**
* To be documented.
*
@ -626,6 +659,18 @@ evas_event_feed_mouse_out(Evas *e)
evas_event_feed_mouse_out_data(e, NULL);
}
/**
* To be documented.
*
* FIXME: To be fixed.
*
*/
void
evas_event_feed_mouse_wheel(Evas *e, int direction, int z)
{
evas_event_feed_mouse_wheel_data(e, direction, z, NULL);
}
/**
* To be documented.
*

View File

@ -20,20 +20,21 @@
typedef enum _Evas_Callback_Type
{
EVAS_CALLBACK_MOUSE_IN,
EVAS_CALLBACK_MOUSE_OUT,
EVAS_CALLBACK_MOUSE_DOWN,
EVAS_CALLBACK_MOUSE_UP,
EVAS_CALLBACK_MOUSE_MOVE,
EVAS_CALLBACK_FREE,
EVAS_CALLBACK_KEY_DOWN,
EVAS_CALLBACK_KEY_UP,
EVAS_CALLBACK_FOCUS_IN,
EVAS_CALLBACK_FOCUS_OUT,
EVAS_CALLBACK_SHOW,
EVAS_CALLBACK_HIDE,
EVAS_CALLBACK_MOVE,
EVAS_CALLBACK_RESIZE,
EVAS_CALLBACK_RESTACK
EVAS_CALLBACK_MOUSE_OUT,
EVAS_CALLBACK_MOUSE_DOWN,
EVAS_CALLBACK_MOUSE_UP,
EVAS_CALLBACK_MOUSE_MOVE,
EVAS_CALLBACK_MOUSE_WHEEL,
EVAS_CALLBACK_FREE,
EVAS_CALLBACK_KEY_DOWN,
EVAS_CALLBACK_KEY_UP,
EVAS_CALLBACK_FOCUS_IN,
EVAS_CALLBACK_FOCUS_OUT,
EVAS_CALLBACK_SHOW,
EVAS_CALLBACK_HIDE,
EVAS_CALLBACK_MOVE,
EVAS_CALLBACK_RESIZE,
EVAS_CALLBACK_RESTACK
} Evas_Callback_Type;
typedef struct _Evas_Rectangle Evas_Rectangle;
@ -227,6 +228,7 @@ struct _Evas_Callbacks
Evas_Object_List *move;
Evas_Object_List *in;
Evas_Object_List *out;
Evas_Object_List *wheel;
Evas_Object_List *key_down;
Evas_Object_List *key_up;
Evas_Object_List *free;