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

Reply via email to