Enlightenment CVS committal

Author  : ningerso
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/bin/tests/pointer


Modified Files:
        ewl_pointer.c 


Log Message:
API break on the embed to add a cursor field.
Fancier pointer test.

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/bin/tests/pointer/ewl_pointer.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- ewl_pointer.c       23 Oct 2006 14:55:10 -0000      1.1
+++ ewl_pointer.c       26 Oct 2006 05:37:11 -0000      1.2
@@ -4,10 +4,15 @@
 #include <stdlib.h>
 
 static int create_test(Ewl_Container *win);
-static void cb_configure(Ewl_Widget *w, void *ev, void *data);
+static void cb_render(Ewl_Widget *w, void *ev, void *data);
+static void cb_destroy(Ewl_Widget *w, void *ev, void *data);
+static int timer_cb_in(void *data);
+static int timer_cb_out(void *data);
 
 #define WIN_NAME "buffer_engine_window"
 
+static Ecore_Timer *cur_timer;
+
 void 
 test_info(Ewl_Test *test)
 {
@@ -39,37 +44,75 @@
        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_VALUE_CHANGED,
-                       cb_configure, o);
+                       cb_render, o);
+       ewl_callback_append(pointer_win, EWL_CALLBACK_DESTROY,
+                       cb_destroy, o);
+       ewl_widget_appearance_set(pointer_win, "none");
        ewl_widget_show(pointer_win);
 
        o = ewl_button_new();
        ewl_container_child_append(EWL_CONTAINER(pointer_win), o);
        ewl_widget_show(o);
 
+       cur_timer = ecore_timer_add(2.0, timer_cb_in, o);
+
        return 1;
 }
 
+static int
+timer_cb_in(void *data)
+{
+       Ewl_Widget *button = EWL_WIDGET(data);
+
+       ewl_callback_call(button, EWL_CALLBACK_MOUSE_IN);
+
+       cur_timer = ecore_timer_add(2.0, timer_cb_out, data);
+
+       return 0;
+}
+
+static int
+timer_cb_out(void *data)
+{
+       Ewl_Widget *button = EWL_WIDGET(data);
+
+       ewl_callback_call(button, EWL_CALLBACK_MOUSE_OUT);
+
+       cur_timer = ecore_timer_add(2.0, timer_cb_in, data);
+
+       return 0;
+}
+
 static void
-cb_configure(Ewl_Widget *w, void *ev, void *data)
+cb_render(Ewl_Widget *w, void *ev, void *data)
 {
-       int handle;
+       int old, handle;
        int width, height;
        Ewl_Embed *parent;
        Ewl_Embed *emb = EWL_EMBED(w);
        Ewl_Widget *entry = EWL_WIDGET(data);
 
+       parent = ewl_embed_widget_find(entry);
+
        width = ewl_object_current_w_get(EWL_OBJECT(emb));
        height = ewl_object_current_h_get(EWL_OBJECT(emb));
 
-       parent = ewl_embed_widget_find(entry);
-
-       handle = (int)ewl_attach_get(entry, EWL_ATTACH_TYPE_MOUSE_CURSOR);
-       if (handle >= EWL_MOUSE_CURSOR_MAX)
-               ewl_engine_pointer_free(parent, handle);
+       old = (int)ewl_attach_get(entry, EWL_ATTACH_TYPE_MOUSE_CURSOR);
+       if (old >= EWL_MOUSE_CURSOR_MAX)
+               ewl_engine_pointer_free(parent, old);
 
        handle = ewl_engine_pointer_data_new(parent, emb->evas_window, width,
                        height);
 
-       printf("Setting cursor %d\n", handle);
        ewl_attach_mouse_cursor_set(entry, handle);
+       if (parent->cursor == old)
+               ewl_embed_mouse_cursor_set(entry);
+}
+
+static void
+cb_destroy(Ewl_Widget *w, void *ev, void *data)
+{
+       if (cur_timer)
+               ecore_timer_del(cur_timer);
+       cur_timer = NULL;
 }



-------------------------------------------------------------------------
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