Enlightenment CVS committal

Author  : monkeyiq
Project : misc
Module  : gevas2

Dir     : misc/gevas2/src


Modified Files:
        gevas.c gevas.h gevasedje.c gevasedje.h gevasevh_drag.c 
        gevasevh_to_gtk_signals.c 


Log Message:
better edje support. some cleanups for gtk warnings.


===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevas.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- gevas.c     27 Apr 2005 14:34:16 -0000      1.11
+++ gevas.c     29 Apr 2005 05:19:15 -0000      1.12
@@ -60,7 +60,10 @@
 
 #include "Evas_Engine_Software_X11.h"
 
-#define EVAS_FREE_HAS_BUGS
+#include <Ecore_X.h>
+#include <Ecore_Evas.h>
+
+//#define EVAS_FREE_HAS_BUGS
 
 
 /* Always disable NLS, since we have no config.h; 
@@ -234,7 +237,7 @@
 }
 
 /* FIXME: find a better iterator for glist. */
-#define __HANDLE_EVENT_DISPATCH( func_to_call ) { \
+#define __HANDLE_EVENT_DISPATCH( func_to_call ) if( _data ) { \
                GSList* hans;  \
                int i=0,size=0; \
                hans = gevasobj_get_evhandlers( GTK_GEVASOBJ(_data) ); \
@@ -282,7 +285,36 @@
     int _x = ev->output.x;
     int _y = ev->output.y;
 
-    printf("__gevas_mouse_down() _b:%d\n",_b);
+    // _data lags one click for some reason.
+    Evas_Object* topobj = evas_object_top_at_xy_get( _e, _x, _y, 0, 0 );
+    _data = EVASO_TO_GTKO(topobj);
+    
+/*     { */
+/*         GSList* hans; */
+/*             int i=0,size=0; */
+/*             hans = gevasobj_get_evhandlers( GTK_GEVASOBJ(_data) ); */
+/*             size = g_slist_length( hans ); */
+/*         printf("__gevas_mouse_down() _b:%d sz:%d\n",_b,size); */
+/*         if( size ) */
+/*         { */
+/*             gpointer hdata = g_slist_nth_data( hans, 0 ); */
+/*             GtkgEvasEvHClass* k = 
(GtkgEvasEvHClass*)GTK_OBJECT_GET_CLASS(hdata); */
+/*             printf("__gevas_mouse_down() _b:%d sz:%d evh:%x\n",_b,size,k); 
*/
+/*         } */
+/*         Evas_Object* topobj = evas_object_top_at_xy_get( _e, _x, _y, 0, 0 
); */
+/*         printf("__gevas_mouse_down(2) _b:%d sz:%d 
top:%x\n",_b,size,topobj); */
+/*             hans = gevasobj_get_evhandlers( 
GTK_GEVASOBJ(EVASO_TO_GTKO(topobj)) ); */
+/*             size = g_slist_length( hans ); */
+/*         if( size ) */
+/*         { */
+/*             gpointer hdata = g_slist_nth_data( hans, 0 ); */
+/*             GtkgEvasEvHClass* k = 
(GtkgEvasEvHClass*)GTK_OBJECT_GET_CLASS(hdata); */
+/*             printf("__gevas_mouse_down(2) _b:%d sz:%d evh:%x\n",_b,size,k); 
*/
+/*         } */
+        
+        
+/*     } */
+    
     
        __HANDLE_EVENT_DISPATCH(handler_mouse_down)
 }
@@ -294,6 +326,10 @@
     int _x = ev->output.x;
     int _y = ev->output.y;
 
+    // _data lags one click for some reason.
+    Evas_Object* topobj = evas_object_top_at_xy_get( _e, _x, _y, 0, 0 );
+    _data = EVASO_TO_GTKO(topobj);
+    
        __HANDLE_EVENT_DISPATCH(handler_mouse_up)
 }
 void
@@ -304,7 +340,10 @@
     int _x = ev->cur.output.x;
     int _y = ev->cur.output.y;
 
-    printf("__gevas_mouse_move() _b:%d\n",_b);
+/*     printf("__gevas_mouse_move() _b:%d\n",_b); */
+    // _data lags one click for some reason.
+    Evas_Object* topobj = evas_object_top_at_xy_get( _e, _x, _y, 0, 0 );
+    _data = EVASO_TO_GTKO(topobj);
     
        __HANDLE_EVENT_DISPATCH(handler_mouse_move)
 }
@@ -522,6 +561,7 @@
        GTK_WIDGET_SET_FLAGS(GTK_WIDGET(ev), GTK_CAN_FOCUS);
 /*     printf("gevas_init() 1\n"); */
 
+    ev->ecore_timer_id  = 0;
     ev->scrolledwindow  = 0;
        ev->evas            = evas_new();
     ev->show_checked_bg = 0;
@@ -570,6 +610,9 @@
 
 //     printf("gevas_destroy() 2\n"); 
 
+    if( ev->ecore_timer_id )
+        g_source_remove( ev->ecore_timer_id );
+        
     /* Chain up */
        if (GTK_OBJECT_GET_CLASS(parent_class)->destroy)
                (*GTK_OBJECT_GET_CLASS(parent_class)->destroy) (object);
@@ -876,6 +919,37 @@
        GTK_WIDGET_SET_FLAGS(widget, GTK_REALIZED);
 
 #if 0
+    /* We can't go this way because it's not easy to
+       convert a Window into a gdk_window
+    */
+    Ecore_X_Window parent_ewin = 
GDK_WINDOW_XID(gtk_widget_get_parent_window(widget));
+    Ecore_Evas* ee = ecore_evas_software_x11_new(
+        0, parent_ewin, 
+        widget->allocation.x, widget->allocation.y,
+        widget->allocation.width, widget->allocation.height );
+//    ecore_evas_show(ee);
+    evas = ecore_evas_get( ee );
+    ev->evas = evas;
+    
+    Ecore_X_Window ewin = ecore_evas_software_x11_window_get( ee );
+    GdkWindow* gwin = gdk_window_foreign_new( ewin );
+    printf("ecore_evas:%lx evas:%lx ewin:%lx gwin:%lx\n",ee,evas,ewin,gwin);
+    widget->window = gwin;
+       gdk_window_set_user_data(widget->window, widget);
+       evas = ev->evas;
+
+       widget->style = gtk_style_attach(widget->style, widget->window);
+       gtk_style_set_background(widget->style, widget->window, 
GTK_STATE_NORMAL);
+
+/*     gdk_window_set_back_pixmap(widget->window, NULL, FALSE); */
+
+/*     // FIXME: Maybe we can do something better than single buffering? */
+/*     gtk_widget_set_double_buffered( widget, 0); */
+    return;
+#endif
+    
+    
+#if 0
        Visual *vis;
        Colormap cmap;
        GdkVisual *gdk_vis;
@@ -920,11 +994,12 @@
 
        attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
 
-       widget->window = gdk_window_new(gtk_widget_get_parent_window(widget),
+       widget->window = gdk_window_new(gtk_widget_get_parent_window(widget),
                                                                        
&attributes, attributes_mask);
        gdk_window_set_user_data(widget->window, widget);
        evas = ev->evas;
 
+    
   /** ** **/
 
        /* Style */
@@ -956,7 +1031,7 @@
         
         einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
 
-//        fprintf(stderr,"gevas_realize() drawable:%lx\n", 
GDK_WINDOW_XWINDOW(widget->window));
+        fprintf(stderr,"gevas_realize() drawable:%lx\n", 
GDK_WINDOW_XWINDOW(widget->window));
         
         /* the following is specific to the engine */
         einfo->info.display  = GDK_WINDOW_XDISPLAY(widget->window);
@@ -1292,7 +1367,7 @@
     
 //    fprintf(stderr,"gevas_view_redraw_cb! gevas:%p\n", gevas);
 
-    evas_obscured_clear(ev->evas);
+//    evas_obscured_clear(ev->evas);
     evas_render(ev->evas);
 
     
@@ -1324,7 +1399,33 @@
        return FALSE;
 }
 
+gint gevas_edje_animate_timer_cb( gpointer data )
+{
+    if (!GTK_WIDGET_MAPPED(GTK_WIDGET(data)))
+        return 1;
+
+    ecore_main_loop_iterate();
+    gevas_queue_redraw( GTK_GEVAS(data) );
+    return 1; // call again
+}
+
+void gevas_setup_ecore(GtkgEvas * gevas)
+{
+    GtkgEvas * ev = gevas;
+
+    if( ev->ecore_timer_id )
+        g_source_remove( ev->ecore_timer_id );
 
+    int fps = 15;
+    if( ecore_animator_frametime_get() )
+    {
+        fps = 1.0/ecore_animator_frametime_get();
+    }
+    
+    ev->ecore_timer_id  = g_timeout_add( 1000.0 / fps,
+                                         gevas_edje_animate_timer_cb,
+                                         gevas );
+}
 
 void gevas_queue_redraw(GtkgEvas * gevas)
 {
@@ -1337,10 +1438,13 @@
     /* This call seems to be much slower to use.*/
     /*gtk_widget_queue_draw( gevas );*/
 
-       if (gevas->current_idle)
-               gtk_idle_remove(gevas->current_idle);
+       if (!gevas->current_idle)
+        gevas->current_idle = gtk_idle_add(gevas_view_redraw_cb, gevas);
+    
+/*     if (gevas->current_idle) */
+/*             gtk_idle_remove(gevas->current_idle); */
 
-       gevas->current_idle = gtk_idle_add(gevas_view_redraw_cb, gevas);
+/*     gevas->current_idle = gtk_idle_add(gevas_view_redraw_cb, gevas); */
 
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevas.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- gevas.h     15 Aug 2002 02:38:06 -0000      1.1
+++ gevas.h     29 Apr 2005 05:19:15 -0000      1.2
@@ -33,6 +33,8 @@
 
 #include <gtk/gtkwidget.h>
 #include <Evas.h>
+#include <Ecore.h>
+#include <Ecore_X.h>
 
 
 
@@ -147,7 +149,9 @@
 
     // Place to find images
     GList* image_prefix_list;
-    
+
+    // for using edjies
+    guint ecore_timer_id;
        };
 
 struct _GtkgEvasClass {
@@ -193,6 +197,7 @@
        guint gevas_get_type(void);
        GtkWidget *gevas_new(void);
 
+       void gevas_setup_ecore(GtkgEvas * gevas);
        void gevas_queue_redraw(GtkgEvas * gevas);
 
        GdkEvent *gevas_get_current_event(GtkgEvas * gevas);
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasedje.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- gevasedje.c 19 Nov 2004 15:14:15 -0000      1.1
+++ gevasedje.c 29 Apr 2005 05:19:15 -0000      1.2
@@ -139,15 +139,39 @@
     ev->m_edje = 0;
 }
 
-GtkgEvasEdje *gevasedje_new(void)
+GtkgEvasEdje *
+gevasedje_new(void)
 {
        GtkgEvasEdje *ev;
 
        ev = gtk_type_new(gevasedje_get_type());
+    ev->m_edje = 0;
 
        return GTK_GEVASEDJE(ev);
 }
 
+GtkgEvasEdje *
+gevasedje_new_with_canvas( gpointer gevas )
+{
+       GtkgEvasEdje *ev;
+
+       ev = gtk_type_new(gevasedje_get_type());
+    gevasobj_set_gevas( ev, gevas );
+    Evas* evas = gevas_get_evas(GTK_GEVAS(gevas));
+    Evas_Object* edje = edje_object_add( evas );
+    ev->m_edje = edje;
+    _gevas_set_obj( GTK_OBJECT(ev), ev->m_edje );
+
+    return GTK_GEVASEDJE(ev);
+}
+
+void gevasedje_set_file( GtkgEvasEdje* gedje, const char* filename, const 
char* part )
+{
+    edje_object_file_set(gedje->m_edje, filename, part );
+}
+
+
+
 /* GtkObject functions */
 
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasedje.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- gevasedje.h 19 Nov 2004 15:14:15 -0000      1.1
+++ gevasedje.h 29 Apr 2005 05:19:15 -0000      1.2
@@ -33,8 +33,9 @@
 #define INC_GTK_GEVASEDJE_H
 
 #include <gtk/gtkobject.h>
-#include "gevasobj.h"
-#include "gevas.h"
+#include <gevasobj.h>
+#include <gevas.h>
+#include <Edje.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -72,6 +73,9 @@
 
        guint gevasedje_get_type(void);
        GtkgEvasEdje *gevasedje_new(void);
+       GtkgEvasEdje *gevasedje_new_with_canvas( gpointer gevas );
+    void gevasedje_set_file( GtkgEvasEdje* gedje, const char* filename, const 
char* part );
+    
     void gevasedje_set_edje( GtkgEvasEdje* ev, Evas_Object* e );
     Evas_Object* gevasedje_get_edje( GtkgEvasEdje* ev );
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_drag.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- gevasevh_drag.c     27 Apr 2005 13:22:22 -0000      1.3
+++ gevasevh_drag.c     29 Apr 2005 05:19:15 -0000      1.4
@@ -92,14 +92,14 @@
                                                 GEVASEV_HANDLER_RET_NEXT);
        ev = GTK_GEVASEVH_DRAG(object);
 
-    printf("gevasev_drag_mouse_down() b:%d\n", _b );
-    
-       if (_b == 1) {
+    printf("gevasev_drag_mouse_down()\n");
+    if (_b == 1) {
                Evas_Coord x = 0, y = 0, w = 0, h = 0;
                gevasobj_get_geometry(GTK_GEVASOBJ(gevasobj), &x, &y, &w, &h);
                ev->dragging = 1;
                ev->click_x_offset = _x - x;
                ev->click_y_offset = _y - y;
+        printf("Starting to drag\n");
     }
        return GEVASEV_HANDLER_RET_NEXT;
 }
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_to_gtk_signals.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- gevasevh_to_gtk_signals.c   15 Aug 2002 02:38:06 -0000      1.1
+++ gevasevh_to_gtk_signals.c   29 Apr 2005 05:19:15 -0000      1.2
@@ -109,6 +109,8 @@
 gevasev_to_gtk_signal_mouse_down(GtkObject * object, GtkObject * gevasobj,
                                                                 int _b, int 
_x, int _y)
 {
+    printf("gevasev_to_gtk_signal_mouse_down()\n");
+    
        gboolean return_val;
        return_val = FALSE;
        gtk_signal_emit(GTK_OBJECT(object),




-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to