Enlightenment CVS committal Author : ningerso Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/bin/tests/engine Modified Files: ewl_engine.c Log Message: Fix the engine test to render an image of the buffer engine window. Setting a label on the button causes a segv that appears to be in evas font handling code, need to track this down. =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/bin/tests/engine/ewl_engine.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_engine.c 18 Oct 2006 16:28:07 -0000 1.2 +++ ewl_engine.c 20 Oct 2006 06:27:05 -0000 1.3 @@ -29,6 +29,11 @@ static int create_test(Ewl_Container *win); static void cb_configure(Ewl_Widget *w, void *ev, void *data); +static void cb_mouse_down(Ewl_Widget *w, void *ev, void *data); +static void cb_mouse_up(Ewl_Widget *w, void *ev, void *data); +static void cb_mouse_move(Ewl_Widget *w, void *ev, void *data); + +#define WIN_NAME "buffer_engine_window" void test_info(Ewl_Test *test) @@ -47,18 +52,35 @@ Ewl_Widget *img; Ewl_Widget *o; + o = ewl_entry_new(); + ewl_text_text_set(EWL_TEXT(o), "The image below is copied from an\n" + "evas buffer engine, and reacts because of events\n" + "fed to it from the image widget"); + ewl_entry_editable_set(EWL_ENTRY(o), FALSE); + ewl_object_fill_policy_set(EWL_OBJECT(o), EWL_FLAG_FILL_HFILL); + ewl_container_child_append(EWL_CONTAINER(box), o); + ewl_widget_show(o); + img = ewl_image_new(); ewl_container_child_append(EWL_CONTAINER(box), img); + ewl_object_fill_policy_set(EWL_OBJECT(img), EWL_FLAG_FILL_ALL); + ewl_callback_append(img, EWL_CALLBACK_MOUSE_DOWN, cb_mouse_down, NULL); + ewl_callback_append(img, EWL_CALLBACK_MOUSE_UP, cb_mouse_up, NULL); + ewl_callback_append(img, EWL_CALLBACK_MOUSE_MOVE, cb_mouse_move, NULL); ewl_widget_show(img); pointer_win = ewl_window_new(); + ewl_widget_name_set(pointer_win, WIN_NAME); + ewl_object_fill_policy_set(EWL_OBJECT(pointer_win), EWL_FLAG_FILL_ALL); + ewl_object_size_request(EWL_OBJECT(pointer_win), 64, 64); ewl_embed_engine_name_set(EWL_EMBED(pointer_win), "evas_buffer"); ewl_callback_append(pointer_win, EWL_CALLBACK_CONFIGURE, cb_configure, img); + ewl_callback_append(pointer_win, EWL_CALLBACK_VALUE_CHANGED, + cb_configure, img); ewl_widget_show(pointer_win); o = ewl_button_new(); - ewl_button_label_set(EWL_BUTTON(o), "Buffer"); ewl_container_child_append(EWL_CONTAINER(pointer_win), o); ewl_widget_show(o); @@ -69,13 +91,68 @@ cb_configure(Ewl_Widget *w, void *ev, void *data) { Evas_Object *eimg; + int width, height; Ewl_Embed *emb = EWL_EMBED(w); Ewl_Image *img = EWL_IMAGE(data); eimg = img->image; - evas_object_image_size_set(eimg, CURRENT_W(emb), CURRENT_H(emb)); + width = ewl_object_current_w_get(EWL_OBJECT(emb)); + height = ewl_object_current_h_get(EWL_OBJECT(emb)); + evas_object_image_size_set(eimg, width, height); evas_object_image_data_set(eimg, emb->evas_window); - ewl_object_preferred_inner_size_set(EWL_OBJECT(img), CURRENT_W(emb), - CURRENT_H(emb)); + evas_object_image_data_update_add(eimg, 0, 0, width, height); + ewl_object_preferred_inner_size_set(EWL_OBJECT(img), width, height); +} + +static void +cb_mouse_down(Ewl_Widget *w, void *ev, void *data) +{ + int x, y; + Ewl_Widget *pointer_win; + Ewl_Event_Mouse_Down *event = ev; + + pointer_win = ewl_widget_name_find(WIN_NAME); + + x = (int)((double)(event->x - CURRENT_X(w)) * + ((double)CURRENT_W(pointer_win) / (double)CURRENT_W(w))); + y = (int)((double)(event->y - CURRENT_Y(w)) * + ((double)CURRENT_H(pointer_win) / (double)CURRENT_H(w))); + + ewl_embed_mouse_down_feed(EWL_EMBED(pointer_win), event->button, + event->clicks, x, y, event->modifiers); +} + +static void +cb_mouse_up(Ewl_Widget *w, void *ev, void *data) +{ + int x, y; + Ewl_Widget *pointer_win; + Ewl_Event_Mouse_Up *event = ev; + + pointer_win = ewl_widget_name_find(WIN_NAME); + + x = (int)((double)(event->x - CURRENT_X(w)) * + ((double)CURRENT_W(pointer_win) / (double)CURRENT_W(w))); + y = (int)((double)(event->y - CURRENT_Y(w)) * + ((double)CURRENT_H(pointer_win) / (double)CURRENT_H(w))); + + ewl_embed_mouse_up_feed(EWL_EMBED(pointer_win), event->button, x, y, + event->modifiers); } +static void +cb_mouse_move(Ewl_Widget *w, void *ev, void *data) +{ + int x, y; + Ewl_Widget *pointer_win; + Ewl_Event_Mouse_Move *event = ev; + + pointer_win = ewl_widget_name_find(WIN_NAME); + + x = (int)((double)(event->x - CURRENT_X(w)) * + ((double)CURRENT_W(pointer_win) / (double)CURRENT_W(w))); + y = (int)((double)(event->y - CURRENT_Y(w)) * + ((double)CURRENT_H(pointer_win) / (double)CURRENT_H(w))); + + ewl_embed_mouse_move_feed(EWL_EMBED(pointer_win), x, y, event->modifiers); +} ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs