Enlightenment CVS committal

Author  : monkeyiq
Project : misc
Module  : gevas2

Dir     : misc/gevas2/src


Modified Files:
        .cvsignore gevas.c gevas.h gevas_obj_collection.c gevas_util.c 
        gevasedje.c gevasevh_drag.c gevasevh_group_selector.c 
        gevasevh_group_selector.h gevasevh_popup.c 
        gevasevh_selectable.c gevasimage.h gevasobj.c gevasobj.h 
        gevastwin.c gevastwin.h project.c 


Log Message:
A flurry of updates. Syned to work with latest evas event _feed_() functions
amoung other misc changes.

===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/.cvsignore,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- .cvsignore  29 Apr 2005 05:27:54 -0000      1.2
+++ .cvsignore  4 Aug 2005 04:12:15 -0000       1.3
@@ -6,3 +6,4 @@
 *.o
 Makefile
 Makefile.in
+*.flc
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevas.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- gevas.c     4 May 2005 02:28:44 -0000       1.15
+++ gevas.c     4 Aug 2005 04:12:15 -0000       1.16
@@ -63,7 +63,6 @@
 #include <Ecore_X.h>
 #include <Ecore_Evas.h>
 
-//#define EVAS_FREE_HAS_BUGS
 
 
 /* Always disable NLS, since we have no config.h; 
@@ -203,8 +202,8 @@
 
 void gevas_add_fontpath(GtkgEvas * ev, const gchar * path)
 {
+//    fprintf(stderr,"gevas_add_fontpath() ev:%p evas:%p\n",ev,EVAS(ev));
     evas_font_path_append(EVAS(ev), (char*)path);
-//    fprintf(stderr," GEVAS add font path: %s\n", path);
 }
 
 
@@ -255,26 +254,64 @@
 
 /* == ((GtkgEvasEvHClass*)(((GtkObject*) (hdata))->klass))->  */
 
+/************************************************************/
+/************************************************************/
+
+#define __HANDLE_EVENT_DISPATCH_GLOBAL( func_to_call ) if( _data ) { \
+    { \
+        int i = 0; \
+        GtkgEvas *gevas = gevasobj_get_gevas(_data); \
+        GSList* l = gevas->m_global_event_handlers; \
+        int size = g_slist_length( l ); \
+               for( i=0; i < size; i++ ) \
+        { \
+                       gpointer hdata = g_slist_nth_data( l, i ); \
+            GtkgEvasEvHClass* k = 
(GtkgEvasEvHClass*)GTK_OBJECT_GET_CLASS(hdata); \
+            ret = k->func_to_call(GTK_OBJECT(hdata), GTK_OBJECT(_data), _b, 
_x, _y ); \
+            if( ret == GEVASEV_HANDLER_RET_CHOMP ) break;               \
+        } \
+    }     \
+    }     \
+    
+
+
+/************************************************************/
+/************************************************************/
+/************************************************************/
+/************************************************************/
+/************************************************************/
 
 void
 __gevas_mouse_in(void *_data, Evas* _e, Evas_Object* _o, void *event_info )
 {
     Evas_Event_Mouse_In* ev = (Evas_Event_Mouse_In*)event_info;
+/*     fprintf(stderr,"__gevas_mouse_in() x:%d y:%d\n", */
+/*             ev->output.x, */
+/*             ev->output.y ); */
     int _b = ev->buttons;
     int _x = ev->output.x;
     int _y = ev->output.y;
 
-       __HANDLE_EVENT_DISPATCH(handler_mouse_in)
+    GEVASEV_HANDLER_RET ret = GEVASEV_HANDLER_RET_NEXT;
+    __HANDLE_EVENT_DISPATCH_GLOBAL(handler_mouse_in);
+    if( ret != GEVASEV_HANDLER_RET_CHOMP ) 
+        __HANDLE_EVENT_DISPATCH(handler_mouse_in);
 }
 void
 __gevas_mouse_out(void *_data, Evas* _e, Evas_Object* _o, void *event_info )
 {
     Evas_Event_Mouse_Out* ev = (Evas_Event_Mouse_Out*)event_info;
+/*     fprintf(stderr,"__gevas_mouse_out() x:%d y:%d\n", */
+/*             ev->output.x, */
+/*             ev->output.y ); */
     int _b = ev->buttons;
     int _x = ev->output.x;
     int _y = ev->output.y;
 
-    __HANDLE_EVENT_DISPATCH(handler_mouse_out)
+    GEVASEV_HANDLER_RET ret = GEVASEV_HANDLER_RET_NEXT;
+    __HANDLE_EVENT_DISPATCH_GLOBAL(handler_mouse_out);
+    if( ret != GEVASEV_HANDLER_RET_CHOMP ) 
+        __HANDLE_EVENT_DISPATCH(handler_mouse_out);
 }
 void
 __gevas_mouse_down(void *_data, Evas* _e, Evas_Object* _o, void *event_info )
@@ -288,34 +325,10 @@
     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)
+    GEVASEV_HANDLER_RET ret = GEVASEV_HANDLER_RET_NEXT;
+    __HANDLE_EVENT_DISPATCH_GLOBAL(handler_mouse_down);
+    if( ret != GEVASEV_HANDLER_RET_CHOMP ) 
+        __HANDLE_EVENT_DISPATCH(handler_mouse_down);
 }
 void
 __gevas_mouse_up(void *_data, Evas* _e, Evas_Object* _o, void *event_info )
@@ -329,8 +342,12 @@
     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)
+    GEVASEV_HANDLER_RET ret = GEVASEV_HANDLER_RET_NEXT;
+    __HANDLE_EVENT_DISPATCH_GLOBAL(handler_mouse_up);
+    if( ret != GEVASEV_HANDLER_RET_CHOMP ) 
+        __HANDLE_EVENT_DISPATCH(handler_mouse_up);
 }
+
 void
 __gevas_mouse_move(void *_data, Evas* _e, Evas_Object* _o, void *event_info )
 {
@@ -339,15 +356,32 @@
     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 _x:%d _y:%d\n",_b,_x,_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_move)
+
+    GEVASEV_HANDLER_RET ret = GEVASEV_HANDLER_RET_NEXT;
+    __HANDLE_EVENT_DISPATCH_GLOBAL(handler_mouse_move);
+    if( ret != GEVASEV_HANDLER_RET_CHOMP ) 
+        __HANDLE_EVENT_DISPATCH(handler_mouse_move);
+}
+
+void
+gevas_add_global_event_watcher( GtkgEvas* gevas, GtkObject * h )
+{
+    gevas_remove_global_event_watcher( gevas, h );
+    gevas->m_global_event_handlers = g_slist_append( 
gevas->m_global_event_handlers, h );
+}
+
+void
+gevas_remove_global_event_watcher( GtkgEvas* gevas, GtkObject * h )
+{
+    gevas->m_global_event_handlers = g_slist_remove( 
gevas->m_global_event_handlers, h );
 }
 
 
+
 #if 0
 static void
 gevas_drag_data_get (GtkWidget *widget,
@@ -482,7 +516,7 @@
     parent_class = gtk_type_class(gtk_widget_get_type());
 
     
-//     object_class->destroy         = gevas_destroy;
+       object_class->destroy         = gevas_destroy;
 //     go->finalize                  = gevas_finalize;
     widget_class->realize         = gevas_realize;
        widget_class->unrealize       = gevas_unrealize;
@@ -575,7 +609,8 @@
        ev->middleb_scrolls_xplane      = 0;
        ev->gevasobjs = g_hash_table_new(NULL, NULL);
        ev->gevasobjlist = NULL;
-
+    ev->m_global_event_handlers = 0;
+    
     evas_output_method_set( ev->evas, 
evas_render_method_lookup("software_x11"));
 
 /*     printf("gevas_init() end\n"); */
@@ -603,20 +638,19 @@
 {
        GtkgEvas *ev;
 
-//     printf("gevas_destroy() 1\n"); 
+//    fprintf(stderr,"gevas_destroy() 1 p:%p\n",object); 
 
        g_return_if_fail(object != NULL);
        g_return_if_fail(GTK_IS_GEVAS(object));
        ev = GTK_GEVAS(object);
 
-//     printf("gevas_destroy() 2\n"); 
+//     fprintf(stderr,"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);
+    GTK_OBJECT_CLASS (parent_class)->destroy (object);
 }
 
 static void gevas_finalize(GObject* object)
@@ -626,9 +660,10 @@
        g_return_if_fail(GTK_IS_GEVAS(object));
        ev = GTK_GEVAS(object);
 
+//     fprintf(stderr,"gevas_finalize() 2\n"); 
+    
     /* Chain up */
-       if (G_OBJECT_CLASS(parent_class)->finalize)
-               (*G_OBJECT_CLASS(parent_class)->finalize) (object);
+    G_OBJECT_CLASS (parent_class)->finalize (object);
 
 }
 
@@ -665,6 +700,8 @@
 
        ev = GTK_GEVAS(widget);
 
+    
+    
 /*      printf("gevas_event() ev:%p type:%d\n",ev,event->type);  */
     
     
@@ -674,14 +711,18 @@
 
     case GDK_ENTER_NOTIFY:
     {
-        evas_event_feed_mouse_in( ev->evas, 0 );
+        time_t tt = time( 0 );
+/*         fprintf(stderr,"GDK_ENTER_NOTIFY feeding mouse in\n"); */
+        evas_event_feed_mouse_in( ev->evas, tt, 0 );
         break;
     }
     
     case GDK_LEAVE_NOTIFY:
     {
+        time_t tt = time( 0 );
+/*         fprintf(stderr,"GDK_LEAVE_NOTIFY feeding mouse out\n"); */
 /*         GdkEventCrossing* e = (GdkEventCrossing*)event; */
-        evas_event_feed_mouse_out( ev->evas, 0 );
+        evas_event_feed_mouse_out( ev->evas, tt, 0 );
         break;
     }
     
@@ -689,7 +730,10 @@
     
                case GDK_MOTION_NOTIFY:
                        {
-                               gint x = 0, y = 0;
+                GdkEventMotion* mev = (GdkEventMotion*)ev;
+                time_t tt = mev->time;
+                
+                gint x = 0, y = 0;
 
 /*                             x=(int)event->motion.x;
                                y=(int)event->motion.y; */
@@ -735,7 +779,7 @@
                                        }
 
                                } else {
-                    evas_event_feed_mouse_move(ev->evas, x, y, 0);
+                    evas_event_feed_mouse_move(ev->evas, x, y, tt, 0);
 
 
 /*                     printf("evas_event_move() x:%d y:%d \n",x,y); */
@@ -782,6 +826,9 @@
                case GDK_2BUTTON_PRESS:
                case GDK_3BUTTON_PRESS:
                        {
+                GdkEventButton* mev = (GdkEventButton*)ev;
+                time_t tt = mev->time;
+                
                                int x = 0, y = 0, b = 0;
 
                                x = (int) event->button.x;
@@ -800,30 +847,33 @@
 
                                        if( ev->middleb_scrolls_pgate_event )
                                        {
-                        evas_event_feed_mouse_move( ev->evas, x, y, 0 );
-                        evas_event_feed_mouse_down( ev->evas, b, 
EVAS_BUTTON_NONE, 0 );
+//                        evas_event_feed_mouse_move( ev->evas, x, y, 0 );
+                        evas_event_feed_mouse_down( ev->evas, b, 
EVAS_BUTTON_NONE, tt, 0 );
                                        }
                                }
                                else 
                                {
-                    printf("GDK_BUTTON_PRESS: x:%d y:%d b:%d frez:%d \n",x,y,b,
-                           evas_event_freeze_get( ev->evas )
-                        );
-                    evas_event_feed_mouse_move( ev->evas, x, y, 0 );
-                    evas_event_feed_mouse_down( ev->evas, b, EVAS_BUTTON_NONE, 
0  );
+/*                     printf("GDK_BUTTON_PRESS: x:%d y:%d b:%d frez:%d 
\n",x,y,b, */
+/*                            evas_event_freeze_get( ev->evas ) */
+/*                         ); */
+//                    evas_event_feed_mouse_move( ev->evas, x, y, 0 );
+                    evas_event_feed_mouse_down( ev->evas, b, EVAS_BUTTON_NONE, 
tt, 0  );
                                }
                        }
                        break;
             
                case GDK_BUTTON_RELEASE:
                        {
+                GdkEventButton* mev = (GdkEventButton*)ev;
+                time_t tt = mev->time;
+
                                int x = 0, y = 0, b = 0;
 
                                x = (int) event->button.x;
                                y = (int) event->button.y;
                                b = (int) event->button.button;
 
-/*                printf("GDK_BUTTON_RELEASE: x:%d y:%d\n",x,y); */
+//                printf("GDK_BUTTON_RELEASE: b:%d x:%d y:%d\n",b,x,y);
                 
                 
 /*                             gdk_pointer_ungrab( GDK_CURRENT_TIME );
@@ -833,14 +883,14 @@
                                        ev->scrolling = 0;
                                        if( ev->middleb_scrolls_pgate_event )
                                        {
-                        evas_event_feed_mouse_move(ev->evas, x, y, 0 );
-                                               
evas_event_feed_mouse_up(ev->evas, b, EVAS_BUTTON_NONE, 0 );
+//                        evas_event_feed_mouse_move(ev->evas, x, y, 0 );
+                                               
evas_event_feed_mouse_up(ev->evas, b, EVAS_BUTTON_NONE, tt, 0 );
                                        }
                                }
                                else 
                                {
-                    evas_event_feed_mouse_move(ev->evas, x, y, 0 );
-                    evas_event_feed_mouse_up(ev->evas, b, EVAS_BUTTON_NONE, 0 
);
+//                    evas_event_feed_mouse_move(ev->evas, x, y, 0 );
+                    evas_event_feed_mouse_up(ev->evas, b, EVAS_BUTTON_NONE, 
tt, 0 );
                                }
                        break;
                        }
@@ -936,7 +986,7 @@
 /*     evas_get_optimal_colormap(ev->evas, */
 /*                                                               
GDK_WINDOW_XDISPLAY(GDK_ROOT_PARENT())); */
        gdk_vis  = gdkx_visual_get(XVisualIDFromVisual(vis));
-       gdk_cmap = gdkx_colormap_get(cmap);
+       gdk_cmap = (GdkColormap *)gdkx_colormap_get(cmap);
 
     attributes.visual   = gdk_vis;     /*gtk_widget_get_visual (widget); */
        attributes.colormap = gdk_cmap; /*gtk_widget_get_colormap (widget); */
@@ -955,6 +1005,7 @@
        attributes.wclass      = GDK_INPUT_OUTPUT;
        attributes.event_mask  = gtk_widget_get_events(widget) | 
GDK_EXPOSURE_MASK;
        attributes.event_mask |= GDK_EXPOSURE_MASK
+        | GDK_FOCUS_CHANGE_MASK
         | GDK_BUTTON_PRESS_MASK
                | GDK_BUTTON_RELEASE_MASK
         | GDK_ENTER_NOTIFY_MASK
@@ -992,7 +1043,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);
@@ -1021,6 +1072,7 @@
 {
        GtkgEvas *ev;
 
+//     fprintf(stderr,"gevas_unrealize() 1\n"); 
     
 //     printf("gevas_unrealize() start\n");
        g_return_if_fail(widget != NULL);
@@ -1070,9 +1122,10 @@
     
        if (ev->evas)
     {
-#ifndef EVAS_FREE_HAS_BUGS
+        if (ev->current_idle)
+            g_source_remove( ev->current_idle );
+        ev->current_idle = 0;
         evas_free(ev->evas);
-#endif
                ev->evas = NULL;
        }
     
@@ -1083,11 +1136,9 @@
        GTK_WIDGET_UNSET_FLAGS(widget, GTK_MAPPED);
 
 
-       /* This destroys widget->window and unsets the realized flag
-        */
        if (GTK_WIDGET_CLASS(parent_class)->unrealize)
                (*GTK_WIDGET_CLASS(parent_class)->unrealize) (widget);
-//    printf("gevas_unrealize() end\n");
+//    fprintf(stderr,"gevas_unrealize() end\n");
 }
 
 static void gevas_size_request(GtkWidget * widget, GtkRequisition * 
requisition)
@@ -1371,8 +1422,16 @@
     if (!GTK_WIDGET_MAPPED(GTK_WIDGET(data)))
         return 1;
 
-    ecore_main_loop_iterate();
-    gevas_queue_redraw( GTK_GEVAS(data) );
+       GtkgEvas *ev;
+    g_return_if_fail(data != NULL);
+       g_return_if_fail(GTK_IS_GEVAS(data));
+    ev = GTK_GEVAS(data);
+    
+    if( ev->evas )
+    {
+        ecore_main_loop_iterate();
+        gevas_queue_redraw( GTK_GEVAS(data) );
+    }
     return 1; // call again
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevas.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- gevas.h     4 May 2005 02:28:44 -0000       1.3
+++ gevas.h     4 Aug 2005 04:12:16 -0000       1.4
@@ -155,6 +155,11 @@
 
     // how many evas_render()s were called
     long evas_render_call_count;
+
+    // handlers that don't care which canvas object is in focus
+    // they want to know all events.
+    GSList *m_global_event_handlers;
+
 };
 
 struct _GtkgEvasClass {
@@ -227,6 +232,9 @@
 
     GList* gevas_get_metadata_prefix_list( GtkgEvas *ev );
     GList* gevas_get_image_prefix_list   ( GtkgEvas *ev );
+
+    void gevas_add_global_event_watcher( GtkgEvas* gevas, GtkObject * h );
+    void gevas_remove_global_event_watcher( GtkgEvas* gevas, GtkObject * h );
     
     
        void __gevas_mouse_in(  void *_data, Evas* _e, Evas_Object* _o, void 
*event_info );
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevas_obj_collection.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- gevas_obj_collection.c      15 Nov 2004 16:41:22 -0000      1.3
+++ gevas_obj_collection.c      4 Aug 2005 04:12:16 -0000       1.4
@@ -605,7 +605,23 @@
     for( li=ev->selected_objs; li; li = li->next)
         if(li->data)
         {
-            gevasobj_move_relative( li->data, dx, dy );
+//            gevasobj_move_relative( li->data, (double)dx, (double)dy );
+
+            double ddx = 0;
+            double ddy = 0;
+            ddx += dx;
+            ddy += dy;
+            
+            if( li->data )
+            {
+                Evas_Coord x=0,y=0;
+//                gevasobj_get_location( GTK_GEVASOBJ(li->data), &x, &y );
+                char buffer[1024];
+                snprintf(buffer,200,"FIXME FIXME FIXME() size:%d getloc.x:%d 
getlox.y:%d %f \n",
+                       sizeof(Evas_Coord), x, y, 0.0 );
+            }
+
+            gevasobj_move_relative( li->data, ddx, ddy );
         }
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevas_util.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- gevas_util.c        17 Aug 2002 15:26:38 -0000      1.2
+++ gevas_util.c        4 Aug 2005 04:12:16 -0000       1.3
@@ -26,6 +26,7 @@
 
 
 #include <gevas_util.h>
+#include <string.h>
 
 
 /**
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasedje.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- gevasedje.c 29 Apr 2005 05:19:15 -0000      1.2
+++ gevasedje.c 4 Aug 2005 04:12:16 -0000       1.3
@@ -184,7 +184,7 @@
 
        ev = GTK_GEVASEDJE(object);
 
-    
+
 
        /* Chain up */
        if (GTK_OBJECT_CLASS(parent_class)->destroy)
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_drag.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- gevasevh_drag.c     29 Apr 2005 05:19:15 -0000      1.4
+++ gevasevh_drag.c     4 Aug 2005 04:12:16 -0000       1.5
@@ -92,14 +92,19 @@
                                                 GEVASEV_HANDLER_RET_NEXT);
        ev = GTK_GEVASEVH_DRAG(object);
 
-    printf("gevasev_drag_mouse_down()\n");
+//    printf("gevasev_drag_mouse_down() _x:%d _y:%d\n",_x,_y);
     if (_b == 1) {
                Evas_Coord x = 0, y = 0, w = 0, h = 0;
                gevasobj_get_geometry(GTK_GEVASOBJ(gevasobj), &x, &y, &w, &h);
+//        printf("gevasev_drag_mouse_down(2) _x:%d _y:%d\n",_x,_y);
                ev->dragging = 1;
                ev->click_x_offset = _x - x;
                ev->click_y_offset = _y - y;
-        printf("Starting to drag\n");
+/*         printf("gevasev_drag_mouse_down(3) _x:%d _y:%d\n",_x,_y); */
+/*         printf("Starting to drag coffx:%f coffy:%f _x:%d _y:%d x:%d 
y:%d\n", */
+/*                ev->click_x_offset, ev->click_y_offset, */
+/*                _x, _y, x, y  */
+/*             ); */
     }
        return GEVASEV_HANDLER_RET_NEXT;
 }
@@ -139,10 +144,15 @@
         if( x < 0 ) x = 0;
         if( y < 0 ) y = 0;
         
-
         gevasobj_move(GTK_GEVASOBJ(gevasobj), x, y );
-/*             gevasobj_queue_redraw(GTK_GEVASOBJ(gevasobj));*/
-       }
+        
+/*         { */
+/*             Evas_Coord cx = 0, cy = 0, cw = 0, ch = 0; */
+/*             gevasobj_get_geometry(GTK_GEVASOBJ(gevasobj), &cx, &cy, &cw, 
&ch); */
+/*             gevasobj_move_relative(GTK_GEVASOBJ(gevasobj), x - cx, y - cy 
); */
+/*             printf("gevasev_drag_mouse_move() x:%d y:%d _x:%d 
_y:%d\n",x,y,_x,_y); */
+/*         } */
+    }
        return GEVASEV_HANDLER_RET_NEXT;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_group_selector.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- gevasevh_group_selector.c   15 Nov 2004 16:41:22 -0000      1.5
+++ gevasevh_group_selector.c   4 Aug 2005 04:12:16 -0000       1.6
@@ -505,7 +505,12 @@
 
                gevasobj_set_layer(ct, 9999);
 /*             printf(" Made the gradient\n");*/
+
+        gevasobj_add_evhandler(ev->rect, GTK_OBJECT(object));
+        
        }
+
+    gevas_add_global_event_watcher( gevas, GTK_OBJECT(ev) );
     
 //    fprintf(stderr,"gevasevh_group_selector_set_object(end)\n");
 }
@@ -516,6 +521,7 @@
 gevasev_group_selector_mouse_in(GtkObject * object, GtkObject * gevasobj, int 
_b,
                                                         int _x, int _y)
 {
+//    fprintf(stderr,"gevasev_group_selector_mouse_in()\n");
        GtkgEvasEvHGroupSelector *ev;
        g_return_val_if_fail(object != NULL, GEVASEV_HANDLER_RET_NEXT);
        g_return_val_if_fail(GTK_IS_GEVASEVH_GROUP_SELECTOR(object),
@@ -525,50 +531,70 @@
 }
 
 GEVASEV_HANDLER_RET
+gevasev_group_selector_mouse_up(GtkObject * object, GtkObject * gevasobj, int 
_b,
+                                int _x, int _y);
+
+
+GEVASEV_HANDLER_RET
 gevasev_group_selector_mouse_out(GtkObject * object, GtkObject * gevasobj, int 
_b,
                                                          int _x, int _y)
 {
-       GtkgEvasEvHGroupSelector *ev;
+    GtkgEvasEvHGroupSelector *ev;
        g_return_val_if_fail(object != NULL, GEVASEV_HANDLER_RET_NEXT);
        g_return_val_if_fail(GTK_IS_GEVASEVH_GROUP_SELECTOR(object),
                                                 GEVASEV_HANDLER_RET_NEXT);
        ev = GTK_GEVASEVH_GROUP_SELECTOR(object);
+
+//    fprintf(stderr,"gevasev_group_selector_mouse_out() 
ev->tracking:%d\n",ev->tracking);
+    if( ev->rect && ev->tracking && GTK_OBJECT(gevasobj) != 
GTK_OBJECT(ev->rect) )
+       {
+        return gevasev_group_selector_mouse_up( object, gevasobj, 1, _x, _y );
+    }
+    
+    
        return GEVASEV_HANDLER_RET_NEXT;
 }
 
 GEVASEV_HANDLER_RET
-gevasev_group_selector_mouse_down(GtkObject * object, GtkObject * gevasobj, 
int _b,
-                                                          int _x, int _y)
+gevasev_group_selector_mouse_down(GtkObject * object, GtkObject * gevasobj, 
int _b, int _x, int _y)
 {
-       GtkgEvasEvHGroupSelector *ev;
+       GtkgEvasEvHGroupSelector *ev = 0;
        GdkEvent *gdkev;
 
-       if( _b != 1 )
-               return GEVASEV_HANDLER_RET_NEXT;
-
-       g_return_val_if_fail(object != NULL, GEVASEV_HANDLER_RET_NEXT);
+    g_return_val_if_fail(object != NULL, GEVASEV_HANDLER_RET_NEXT);
        g_return_val_if_fail(GTK_IS_GEVASEVH_GROUP_SELECTOR(object),
                                                 GEVASEV_HANDLER_RET_NEXT);
        ev = GTK_GEVASEVH_GROUP_SELECTOR(object);
 
-       
+/*     fprintf(stderr,"gevasev_group_selector_mouse_down() gobj:%p mark:%p 
rect:%p\n", */
+/*             gevasobj, ev->mark, ev->rect ); */
+    
+       if( _b != 1 )
+               return GEVASEV_HANDLER_RET_NEXT;
+
+/*     fprintf(stderr,"gevasev_group_selector_mouse_down(2) gobj:%p mark:%p 
rect:%p\n", */
+/*             gevasobj, ev->mark, ev->rect ); */
 
 /*     gevasev_group_selector_show(ev, ev->hot_clicked[_b - 1]);*/
 
-       gdkev = gevas_get_current_event( ev->rect->gevas );
+    int hadModifier = 0;
+    
 /*     printf("got gdkev:%p\n", gdkev );*/
+       gdkev = gevas_get_current_event( ev->rect->gevas );
        if( gdkev ) /*&& gdkev->type == GDK_BUTTON_PRESS )*/
        {
                GdkEventButton* gdkbev;
-/*             printf("got gdkev button\n");*/
+               printf("got gdkev button\n");
                gdkbev = (GdkEventButton*)gdkev;
 
                if( gdkbev->state & GDK_SHIFT_MASK )
                {
+            hadModifier = 1;
 /*                     printf("gevasev_group_selector_mouse_down shift 
key\n");*/
                }
                else if( gdkbev->state & GDK_CONTROL_MASK )
                {
+            hadModifier = 1;
 /*                     printf("gevasev_group_selector_mouse_down control 
key\n");*/
                }
                else 
@@ -577,6 +603,19 @@
                }
        }
 
+    if( !g_slist_find( ev->m_rubber_band_starters, gevasobj ) ) 
+    {
+        int size = g_slist_length( ev->m_rubber_band_starters ); 
+
+        if( !hadModifier )
+            gevas_obj_collection_clear( ev->col ); 
+        gevasevh_group_selector_floodselect( ev, _x, _y, 1, 1 ); 
+        ev->selected_objs_lastadded = 0; 
+        
+        return GEVASEV_HANDLER_RET_NEXT; 
+    } 
+    
+/*     gevasobj_set_layer(ev->rect, 999); */
        gevasobj_move( ev->rect, _x, _y);
        gevasobj_resize( ev->rect, 2,2);
        gevasobj_show( ev->rect );
@@ -585,32 +624,38 @@
        ev->tracking_ix = _x;
        ev->tracking_iy = _y;
 
-/*     printf("gevasev_group_selector_mouse_down() done\n");*/
+//     printf("gevasev_group_selector_mouse_down() done\n");
 
        return GEVASEV_HANDLER_RET_NEXT;
 }
 
 GEVASEV_HANDLER_RET
 gevasev_group_selector_mouse_up(GtkObject * object, GtkObject * gevasobj, int 
_b,
-                                                        int _x, int _y)
+                                int _x, int _y)
 {
        Evas_Coord x=0,y=0,w=0,h=0;
        Evas_List* list;
        void* data;
        GtkgEvasEvHGroupSelector *ev;
 
+//     printf("gevasev_group_selector_mouse_up() b:%d _x:%d _y:%d\n",_b,_x,_y);
+    
        if( _b != 1 )
                return GEVASEV_HANDLER_RET_NEXT;
 
-/*     printf("gevasev_group_selector_mouse_up()\n");*/
-
-       g_return_val_if_fail(object != NULL, GEVASEV_HANDLER_RET_NEXT);
+    g_return_val_if_fail(object != NULL, GEVASEV_HANDLER_RET_NEXT);
        g_return_val_if_fail(GTK_IS_GEVASEVH_GROUP_SELECTOR(object),
                                                 GEVASEV_HANDLER_RET_NEXT);
        ev = GTK_GEVASEVH_GROUP_SELECTOR(object);
        gevasobj_hide( ev->rect );
-       ev->tracking = 0;
+/*     printf("gevasev_group_selector_mouse_up() _x:%d _y:%d  tracking:%d\n", 
*/
+/*            _x,_y,ev->tracking); */
+    if( !ev->tracking )
+        return GEVASEV_HANDLER_RET_NEXT;
+            
+    ev->tracking = 0;
 
+    
        gevas_group_selector_get_wh( ev, _x, _y, &x, &y, &w, &h );
        gevasevh_group_selector_floodselect( ev, x, y, w, h );
        ev->selected_objs_lastadded = 0;
@@ -641,7 +686,7 @@
        if( cx < tix ) 
        {
                moveit=1;
-               *x = cx;                
+               *x = cx;
        }
 
        *rh = abs(cy - tiy);
@@ -651,6 +696,9 @@
                *y = cy;
        }
 
+/*     fprintf(stderr,"gevas_group_selector_get_wh()   cx:%d cy:%d  tix:%d 
tiy:%d  x:%d y:%d rw:%d rh%d\n", */
+/*             cx, cy, tix, tiy, *x, *y, *rw, *rh ); */
+    
        if( moveit )
                gevasobj_move   ( ev->rect , *x, *y );
 
@@ -672,8 +720,10 @@
                                                 GEVASEV_HANDLER_RET_NEXT);
        ev = GTK_GEVASEVH_GROUP_SELECTOR(object);
 
-       if( ev->rect && ev->tracking ) 
+    if( ev->rect && ev->tracking ) 
        {
+/*         fprintf(stderr,"gevasev_group_selector_mouse_move() rect:%p 
tracking:%d\n", */
+/*                 ev->rect , ev->tracking ); */
                Evas_Coord d1=0, d2=0, d3=0, d4=0;
                gevas_group_selector_get_wh( ev, _x, _y, &d1, &d2, &d3, &d4 );
        }
@@ -757,6 +807,7 @@
        ev->rect = 0;
        ev->selected_objs = 0;
     ev->col = 0;
+    ev->m_rubber_band_starters = 0;
 }
 
 GtkObject *gevasevh_group_selector_new(void)
@@ -828,3 +879,10 @@
     return ev->col;
 }
 
+
+void
+gevasevh_group_selector_add_rubber_band_starter( GtkgEvasEvHGroupSelector *ev, 
GtkObject* obj )
+{
+    ev->m_rubber_band_starters = g_slist_append( ev->m_rubber_band_starters, 
obj );
+}
+
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_group_selector.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- gevasevh_group_selector.h   15 Nov 2004 16:41:22 -0000      1.2
+++ gevasevh_group_selector.h   4 Aug 2005 04:12:16 -0000       1.3
@@ -94,7 +94,8 @@
 
     GtkgEvas* gevas;
     
-
+    // objects which start a rubber band selection
+    GSList *m_rubber_band_starters;
 };
 
 struct _GtkgEvasEvHGroupSelectorClass {
@@ -131,6 +132,9 @@
     void gevasevh_group_selector_dragging( GtkgEvasEvHGroupSelector *ev, 
gboolean d );
 
     GtkgEvasObjCollection* gevasevh_group_selector_get_collection( 
GtkgEvasEvHGroupSelector *ev );
+
+
+    void gevasevh_group_selector_add_rubber_band_starter( 
GtkgEvasEvHGroupSelector *ev, GtkObject* obj );
     
 
 #ifdef __cplusplus
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_popup.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- gevasevh_popup.c    27 Apr 2005 13:22:22 -0000      1.3
+++ gevasevh_popup.c    4 Aug 2005 04:12:16 -0000       1.4
@@ -114,6 +114,7 @@
        return_val = FALSE;
 
        if (_b == 3) {
+        time_t tt = time( 0 );
 
                gtk_signal_emit(GTK_OBJECT(object),
                                                _gevasevh_popup_signals[M_DOWN],
@@ -121,8 +122,8 @@
                                                (gint) _b, (gint) _x, (gint) 
_y, &return_val);
 
                /**  To keep evas happy about the mouse state **/
-        evas_event_feed_mouse_move( gevasobj_get_evas(gevasobj), _x, _y, 0 );
-        evas_event_feed_mouse_up( gevasobj_get_evas(gevasobj), _b, 
EVAS_BUTTON_NONE, 0 );
+        evas_event_feed_mouse_move( gevasobj_get_evas(gevasobj), _x, _y, tt, 0 
);
+        evas_event_feed_mouse_up( gevasobj_get_evas(gevasobj), _b, 
EVAS_BUTTON_NONE, tt, 0 );
 
         if (ev->user_gtk_menu) {
                        GdkEvent *gev =
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_selectable.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- gevasevh_selectable.c       20 Nov 2004 06:14:52 -0000      1.5
+++ gevasevh_selectable.c       4 Aug 2005 04:12:16 -0000       1.6
@@ -161,7 +161,7 @@
         if( *x+objw > vx+vw ) *x = vx+vw-objw;
         if( *y+objh > vy+vh ) *y = vy+vh-objh;
 
-        /* printf("gevas_selectable_move() vx:%d vy:%d vw:%d 
vh:%d\n",vx,vy,vw,vh); */
+/*         printf("gevas_selectable_move() vx:%d vy:%d vw:%d 
vh:%d\n",vx,vy,vw,vh); */
     }
     
     return GEVASOBJ_SIG_OK;
@@ -295,7 +295,7 @@
                gint32 by = ev->border_y;
                int lay=0;
         
-/*             printf("showing for selectable\n"); */
+//             printf("gevas_selectable_select() x:%d y:%d bx:%d 
by:%d\n",x,y,bx,by); 
                gevasobj_get_geometry( ev->normal, &x, &y, &w, &h );
                gevasobj_move( ev->selected, x - bx, y - by);
                gevasobj_resize( ev->selected, w + 2*bx, h + 2*by);
@@ -418,6 +418,8 @@
        ev->tracking_x = _x;
        ev->tracking_y = _y;
 
+//    fprintf(stderr,"gevasev_selectable_mouse_down() _x:%d _y:%d\n", _x, _y );
+    
        gdkev = gevas_get_current_event( ev->normal->gevas );
 //     printf("gevasev_selectable_mouse_down() got gdkev:%p\n", gdkev );
        if( gdkev ) /*&& gdkev->type == GDK_BUTTON_PRESS )*/
@@ -501,7 +503,18 @@
        ev = GTK_GEVASEVH_SELECTABLE(object);
     evh_sel = GTK_GEVASEVH_GROUP_SELECTOR(ev->evh_selector);
 
-//    printf("gevasev_selectable_mouse_move() this:%p tracking:%d\n", object, 
ev->tracking );
+    
+    
+/*     printf("gevasev_selectable_mouse_move() this:%p tracking:%d tx:%d ty:%d 
_x:%d _y:%d\n", */
+/*            object, ev->tracking, ev->tracking_x, ev->tracking_y, _x, _y ); 
*/
+/*     if( object ) */
+/*     { */
+/*         Evas_Coord x=0,y=0; */
+/*         gevasobj_get_location( GTK_GEVASOBJ(gevasobj), &x, &y ); */
+/*         printf("gevasev_selectable_mouse_move() size:%d getloc.x:%d 
getlox.y:%d\n", */
+/*                sizeof(Evas_Coord), x, y ); */
+/*     } */
+    
     
     if( ev->tracking )
        {
@@ -509,7 +522,8 @@
 
                dx = _x - ev->tracking_x;
                dy = _y - ev->tracking_y;
-/*        printf("selectable_mouse_move() ev:%p  dx:%d dy:%d\n",ev, dx,dy); */
+/*         printf("selectable_mouse_move() ev:%p  dx:%d dy:%d  tx:%d 
ty:%d\n",ev, dx,dy, */
+/*                ev->tracking_x, ev->tracking_y );  */
 
         gevasevh_group_selector_movesel( evh_sel, dx, dy );
                ev->tracking_x = _x;
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasimage.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- gevasimage.h        15 Nov 2004 16:41:22 -0000      1.5
+++ gevasimage.h        4 Aug 2005 04:12:16 -0000       1.6
@@ -111,6 +111,9 @@
        void gevasimage_set_image_size(  GtkgEvasObj * object, int  w, int  h);
        void gevasimage_get_image_border(GtkgEvasObj * object, int *l, int *r,
                                                                         int 
*t, int *b);
+       void gevasimage_set_smooth_scale( GtkgEvasObj* object, int v );
+       int  gevasimage_get_smooth_scale( GtkgEvasObj* object );
+    
 
     /**
      * Scale the image so that both its width and height are smaller than
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasobj.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- gevasobj.c  27 Apr 2005 14:34:16 -0000      1.9
+++ gevasobj.c  4 Aug 2005 04:12:16 -0000       1.10
@@ -41,6 +41,7 @@
 
 #include "project.h"
 #include "gevas_sprite.h"
+#include "gevasevh_group_selector.h"
 
 /* Always disable NLS, since we have no config.h; 
  * a real app would not do this of course.
@@ -293,7 +294,7 @@
 }
 void _gevasobj_move(GtkgEvasObj * object, double x, double y)
 {
-    evas_object_move( EVASO(object), x, y);
+    evas_object_move( EVASO(object), (Evas_Coord)x, (Evas_Coord)y);
        gevasobj_queue_redraw(object);
 }
 void _gevasobj_resize(GtkgEvasObj * object, double w, double h)
@@ -387,7 +388,13 @@
         }
         
     }
-    
+
+    if( GTK_IS_GEVASEVH_GROUP_SELECTOR(h) )
+    {
+        gevasevh_group_selector_add_rubber_band_starter( 
GTK_GEVASEVH_GROUP_SELECTOR(h),
+                                                         GTK_OBJECT( object ));
+        
+    }
 }
 
 void _gevasobj_remove_evhandler(GtkgEvasObj * object, GtkObject * h)
@@ -399,7 +406,7 @@
        ev->ev_handlers = g_slist_remove(ev->ev_handlers, h);
 }
 
-GSList *gevasobj_get_evhandlers(GtkgEvasObj * object)
+GSList *gevasobj_get_evhandlers(GtkgEvasObj * object )
 {
        GtkgEvasObj *ev;
 
@@ -733,6 +740,7 @@
     gint32 x, y;
 
     gevasobj_get_location( object, &lx, &ly );
+    
     lx += dx;  
     ly += dy;
             
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasobj.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- gevasobj.h  15 Nov 2004 16:41:22 -0000      1.6
+++ gevasobj.h  4 Aug 2005 04:12:16 -0000       1.7
@@ -178,7 +178,7 @@
        void _gevas_set_obj(GtkObject * object, Evas_Object* eobj);
        Evas_Object* _gevas_get_obj(GtkObject * object);
        void _gevasobj_ensure_obj_free(GtkObject * object);
-       GSList *gevasobj_get_evhandlers(GtkgEvasObj * object);
+       GSList *gevasobj_get_evhandlers(GtkgEvasObj * object );
     GtkgEvasObj* gevasobj_from_evasobj( Evas_Object* eo );
     
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevastwin.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- gevastwin.c 20 Nov 2004 06:14:52 -0000      1.8
+++ gevastwin.c 4 Aug 2005 04:12:16 -0000       1.9
@@ -172,11 +172,31 @@
 {
        GtkgEvasTwin *ev;
 
+//    fprintf(stderr,"gevastwin_destroy()\n");
+    
        g_return_if_fail(object != NULL);
        g_return_if_fail(GTK_IS_GEVASTWIN(object));
 
        ev = GTK_GEVASTWIN(object);
 
+    if( ev->extra_objects )
+    {
+        Evas_List* li = gevas_obj_collection_to_evas_list( ev->extra_objects );
+        for( ; li; li = li->next)
+        {
+            if(li->data)
+            {
+                GtkgEvasObj* gobj = (GtkgEvasObj*)li->data;
+                evas_object_del( gobj->eobj );
+            }
+        }
+    }
+
+/*     if( ev->mainobj ) */
+/*         gevastwin_destroy(  ev->mainobj ); */
+/*     if( ev->auxobj ) */
+/*         gevastwin_destroy(  ev->auxobj ); */
+    
        /* Chain up */
        if (GTK_OBJECT_CLASS(parent_class)->destroy)
                (*GTK_OBJECT_CLASS(parent_class)->destroy) (object);
@@ -238,10 +258,14 @@
 /*                ev->mainobj, ev->auxobj, object ); */
         
                if (ev->mainobj == object) {
+            printf("gevastwin_move_xxx(MO) extra object. main:%lp aux:%lp 
obj:%lp\n", 
+                   ev->mainobj, ev->auxobj, object ); 
                        ev->main_obj_move(object, x, y);
                        _gevastwin_sync_obj(ev, ev->auxobj);
                }
                else if (ev->auxobj == object) {
+            printf("gevastwin_move_xxx(AO) extra object. main:%lp aux:%lp 
obj:%lp\n", 
+                   ev->mainobj, ev->auxobj, object ); 
                        ev->aux_obj_move(object, x, y);
                        _gevastwin_sync_obj(ev, ev->mainobj);
                }
@@ -372,26 +396,36 @@
     setup_object_movements( GTK_OBJECT(ev), o );
 }
 
-void gevastwin_add_extra_objects( GtkgEvasTwin* ev, GtkgEvasObjCollection* v )
+void gevastwin_add_extra_object( GtkgEvasTwin* ev, GtkgEvasObj* gobj )
 {
-    ev->extra_objects = v;
+    if( !ev->extra_objects )
+    {
+        ev->extra_objects = gevas_obj_collection_new( GTK_GEVAS(gobj->gevas) );
+    }
+
+    gevas_obj_collection_add( ev->extra_objects, gobj );
+    
+    gtk_object_set_data(GTK_OBJECT(gobj),
+                        GEVASTWIN_EXTRA_OBJ_MOVE_FUNC_KEY,
+                        (void*)gobj->move );
+    
+    gobj->move = _gevastwin_move_xxx;
+    gtk_object_set_data(GTK_OBJECT(gobj), GEVASTWIN_BACKWARD_LOOKUP_KEY, ev);
+/*             gtk_signal_connect( GTK_OBJECT(gobj), "resize", */
+/*                                 GTK_SIGNAL_FUNC(twin_object_resized), ev ); 
*/
+}
+
 
-    Evas_List* li = gevas_obj_collection_to_evas_list( ev->extra_objects );
+void gevastwin_add_extra_objects( GtkgEvasTwin* ev, GtkgEvasObjCollection* v )
+{
+    Evas_List* li = gevas_obj_collection_to_evas_list( v );
     for( ; li; li = li->next)
+    {
         if(li->data)
         {
-            GtkgEvasObj* gobj = (GtkgEvasObj*)li->data;
-
-            gtk_object_set_data(GTK_OBJECT(gobj),
-                                GEVASTWIN_EXTRA_OBJ_MOVE_FUNC_KEY,
-                                (void*)gobj->move );
-            
-                       gobj->move = _gevastwin_move_xxx;
-                       gtk_object_set_data(GTK_OBJECT(gobj), 
GEVASTWIN_BACKWARD_LOOKUP_KEY, ev);
-/*             gtk_signal_connect( GTK_OBJECT(gobj), "resize", */
-/*                                 GTK_SIGNAL_FUNC(twin_object_resized), ev ); 
*/
-            
+            gevastwin_add_extra_object( ev, li->data );
         }
+    }
 }
 
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevastwin.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- gevastwin.h 20 Nov 2004 06:14:52 -0000      1.5
+++ gevastwin.h 4 Aug 2005 04:12:16 -0000       1.6
@@ -85,6 +85,7 @@
     void gevastwin_sync_obj( GtkgEvasTwin* ev, GtkgEvasObj* object );
 
     void gevastwin_add_extra_objects( GtkgEvasTwin* ev, GtkgEvasObjCollection* 
v );
+    void gevastwin_add_extra_object( GtkgEvasTwin* ev, GtkgEvasObj* obj );
     
 
 #define GEVASTWIN_BACKWARD_LOOKUP_KEY "___gevastwin_backward_key"
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/project.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- project.c   15 Aug 2002 02:38:06 -0000      1.1
+++ project.c   4 Aug 2005 04:12:16 -0000       1.2
@@ -31,6 +31,7 @@
 #include "project.h"
 #include <gtk/gtkmarshal.h>
 #include <gtk/gtksignal.h>
+#include <stdio.h>
 
 /* I was using this from gtk+1.2.x and then they took it from me. */
 /* Thus I have replicated this code here. This might be changed to */
@@ -74,6 +75,7 @@
                        g_value_get_pointer (param_values + 2),
                        data2);
 
+//  fprintf(stderr,"gtk_marshal_BOOL__PTR_PTR()\n");
   g_value_set_int (return_value, v_return);
 }
 
@@ -118,7 +120,7 @@
   register GMarshalFunc_BOOL__POINTER_INT_INT_INT callback;
   register GCClosure *cc = (GCClosure*) closure;
   register gpointer data1, data2;
-  gint v_return;
+  gint v_return = 0;
 
   g_return_if_fail (return_value != NULL);
   g_return_if_fail (n_param_values == 5);
@@ -142,7 +144,9 @@
                        g_value_get_int (param_values + 4),
                        data2);
 
-  g_value_set_int (return_value, v_return);
+//  fprintf(stderr,"gtk_marshal_BOOL__PTR_3INTS()\n");
+  g_value_set_boolean (return_value, v_return);
+//  g_value_set_int (return_value, v_return);
 }
 
 
@@ -188,5 +192,6 @@
                        g_value_get_int (param_values + 3),
                        data2);
 
+//fprintf(stderr,"gtk_marshal_BOOL__INT_INT_INT()\n");
   g_value_set_int (return_value, v_return);
 }




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to