Enlightenment CVS committal
Author : monkeyiq
Project : misc
Module : gevas2
Dir : misc/gevas2/src
Modified Files:
gevasevh_selectable.c gevastwin.c gevastwin.h
Log Message:
Twins can now have 'extra' gevasobj attached which when
event handlers are setup correctly will allow the main/aux object
to be dragged around by the 'extra' objects attached to the twin.
This is quite handy for loading edje objects, labeling them (the
twin's aux object) and throwing a big object over the lot (an
'extra' object) so that the extra object drags the main/aux
around with it. Set the extra object to cover main/aux and be at
a level above them.
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevasevh_selectable.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- gevasevh_selectable.c 15 Nov 2004 16:41:22 -0000 1.4
+++ gevasevh_selectable.c 20 Nov 2004 06:14:52 -0000 1.5
@@ -295,7 +295,7 @@
gint32 by = ev->border_y;
int lay=0;
-/* printf("showing for selectable\n");*/
+/* printf("showing for selectable\n"); */
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);
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevastwin.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- gevastwin.c 15 Nov 2004 16:41:22 -0000 1.7
+++ gevastwin.c 20 Nov 2004 06:14:52 -0000 1.8
@@ -154,6 +154,8 @@
ev->oy = 5;
ev->ax = 0;
ev->ay = 1;
+ ev->extra_objects = 0;
+
}
GtkgEvasTwin *gevastwin_new()
@@ -197,8 +199,7 @@
ev->aux_obj_move(ev->auxobj, main_x, main_y + main_h +
5);
gevasobj_queue_redraw(ev->auxobj);
}
-
- if (obj == ev->mainobj)
+ else if (obj == ev->mainobj)
{
Evas_Coord ax = 0, ay = 0, ah = 0, aw = 0;
@@ -208,7 +209,7 @@
ev->main_obj_move(ev->mainobj, ax, ay - main_h - 5);
gevasobj_queue_redraw(ev->mainobj);
}
- }
+ }
}
void gevastwin_sync_obj( GtkgEvasTwin* ev, GtkgEvasObj* object )
@@ -220,6 +221,10 @@
_gevastwin_sync_obj( ev, object );
}
+#define GEVASTWIN_EXTRA_OBJ_MOVE_FUNC_KEY "___gevastwin_backward_move_key"
+
+//void (*extra_move_func) (GtkgEvasObj * object, double x, double y);
+
void _gevastwin_move_xxx(GtkgEvasObj * object, double x, double y)
{
GtkgEvasTwin *ev;
@@ -228,6 +233,10 @@
d = gtk_object_get_data(GTK_OBJECT(object),
GEVASTWIN_BACKWARD_LOOKUP_KEY);
if (d) {
ev = GTK_GEVASTWIN(d);
+
+/* printf("gevastwin_move_xxx(top) extra object. main:%lp aux:%lp
obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
+
if (ev->mainobj == object) {
ev->main_obj_move(object, x, y);
_gevastwin_sync_obj(ev, ev->auxobj);
@@ -236,6 +245,69 @@
ev->aux_obj_move(object, x, y);
_gevastwin_sync_obj(ev, ev->mainobj);
}
+ else
+ {
+/* printf("gevastwin_move_xxx() extra object. main:%lp aux:%lp
obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
+
+ Evas_Coord ox = 0, oy = 0, oh = 0, ow = 0;
+ gevasobj_get_geometry( object, &ox, &oy, &ow, &oh);
+ Evas_Coord main_x = 0, main_y = 0, main_w = 0, main_h = 0;
+ gevasobj_get_geometry(ev->mainobj, &main_x, &main_y, &main_w,
&main_h);
+
+/* printf("gevastwin_move_xxx(2) extra object. main:%lp aux:%lp
obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
+
+ Evas_Coord dx = ox - x;
+ Evas_Coord dy = oy - y;
+
+/* printf("gevastwin_move_xxx(2.0) extra object. main:%lp aux:%lp
obj:%lp dx:%ld dy:%ld\n", */
+/* ev->mainobj, ev->auxobj, object, dx, dy ); */
+
+/* gevasobj_move( ev->mainobj, main_x - dx, main_y - dy ); */
+
+
+ ev->main_obj_move(ev->mainobj, main_x - dx, main_y - dy );
+/* printf("gevastwin_move_xxx(2.1) extra object. main:%lp aux:%lp
obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
+
+ ev->aux_obj_move (ev->auxobj, main_x - dx , main_y +
main_h + 5 - dy );
+
+/* printf("gevastwin_move_xxx(3) extra object. main:%lp aux:%lp
obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
+
+ 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;
+
+/* printf("gevastwin_move_xxx(5.t) extra object. main:%lp
aux:%lp obj:%lp gobj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object, gobj ); */
+
+// if( gobj != object )
+ {
+ gpointer d;
+ d = gtk_object_get_data(GTK_OBJECT(gobj),
+
GEVASTWIN_EXTRA_OBJ_MOVE_FUNC_KEY );
+
+/* printf("gevastwin_move_xxx(5.a) extra object.
main:%lp aux:%lp obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
+
+ void (*move_func) (GtkgEvasObj * object, double x,
double y)
+ = d;
+
+ gevasobj_get_geometry( gobj, &ox, &oy, &ow, &oh);
+ move_func( gobj, ox - dx, oy - dy );
+
+/* printf("gevastwin_move_xxx(5.b) extra object.
main:%lp aux:%lp obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
+
+ }
+ }
+ gevasobj_queue_redraw(ev->mainobj);
+ gevasobj_queue_redraw(ev->auxobj);
+ }
#if 0
else if( ev->sprite )
{
@@ -250,6 +322,8 @@
}
}
#endif
+/* printf("gevastwin_move_xxx(bottom) extra object. main:%lp aux:%lp
obj:%lp\n", */
+/* ev->mainobj, ev->auxobj, object ); */
}
}
@@ -298,6 +372,29 @@
setup_object_movements( GTK_OBJECT(ev), o );
}
+void gevastwin_add_extra_objects( GtkgEvasTwin* ev, GtkgEvasObjCollection* v )
+{
+ ev->extra_objects = v;
+
+ 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;
+
+ 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 );
*/
+
+ }
+}
+
+
static void gevastwin_set_arg(GtkObject * object, GtkArg * arg, guint arg_id)
{
GtkgEvasTwin *ev;
===================================================================
RCS file: /cvsroot/enlightenment/misc/gevas2/src/gevastwin.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- gevastwin.h 26 Nov 2002 09:33:13 -0000 1.4
+++ gevastwin.h 20 Nov 2004 06:14:52 -0000 1.5
@@ -72,7 +72,8 @@
void (*main_obj_move) (GtkgEvasObj * object, double x, double
y);
void (*aux_obj_move) (GtkgEvasObj * object, double x, double y);
- };
+ GtkgEvasObjCollection* extra_objects;
+ };
struct _GtkgEvasTwinClass {
GtkObjectClass parent_class;
@@ -83,6 +84,8 @@
GtkgEvasTwin *gevastwin_new();
void gevastwin_sync_obj( GtkgEvasTwin* ev, GtkgEvasObj* object );
+ void gevastwin_add_extra_objects( GtkgEvasTwin* ev, GtkgEvasObjCollection*
v );
+
#define GEVASTWIN_BACKWARD_LOOKUP_KEY "___gevastwin_backward_key"
-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs