Enlightenment CVS committal Author : werkt Project : misc Module : ewler
Dir : misc/ewler/src Modified Files: form.c selected.c selected.h Log Message: Widget resizing by clicking on the portions of the selected widget works. =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/form.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- form.c 10 Jun 2004 23:32:24 -0000 1.4 +++ form.c 1 Jul 2004 18:31:22 -0000 1.5 @@ -408,11 +408,11 @@ Ewl_Widget *s; s = ewler_selected_new( w ); - ewl_widget_show(s); ewl_callback_append(s, EWL_CALLBACK_MOUSE_MOVE, __mouse_move_widget, form); - ewl_callback_append(s, EWL_CALLBACK_MOUSE_UP, + ewl_callback_append(w, EWL_CALLBACK_MOUSE_UP, __mouse_up_widget, form); + ewl_widget_show(s); ecore_list_append( form->selected, s ); inspector_reset(); =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/selected.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- selected.c 10 Jun 2004 23:32:39 -0000 1.5 +++ selected.c 1 Jul 2004 18:31:22 -0000 1.6 @@ -63,8 +63,11 @@ ewl_theme_data_set_str(sw, "/selected/group", "selected"); ewl_object_set_insets(EWL_OBJECT(s), 4, 4, 4, 4); +#if 0 ewl_container_insert_child(parent, sw, index); ewl_container_append_child(EWL_CONTAINER(s), w); +#endif + ewl_container_append_child(parent, sw); ewl_object_request_geometry(EWL_OBJECT(s), CURRENT_X(w) - 8, CURRENT_Y(w) - 8, CURRENT_W(w) + 8, CURRENT_H(w) + 8); @@ -74,23 +77,21 @@ ewl_callback_append(sw, EWL_CALLBACK_CONFIGURE, ewler_selected_configure_cb, NULL); ewl_callback_append(w, EWL_CALLBACK_REALIZE, - ewler_selected_realize_cb, NULL); + ewler_selected_realize_cb, s); + ewl_callback_append(sw, EWL_CALLBACK_REALIZE, + ewler_selected_selector_realize_cb, NULL); ewl_callback_append(sw, EWL_CALLBACK_DESELECT, ewler_selected_deselect_cb, NULL); ewl_callback_append(sw, EWL_CALLBACK_MOUSE_MOVE, ewler_selected_mouse_move_cb, NULL); ewl_callback_append(sw, EWL_CALLBACK_MOUSE_DOWN, ewler_selected_mouse_down_cb, NULL); - - edje_object_signal_callback_add(sw->theme_object, - "top_left", "down", - ewler_selected_part_down, s); - edje_object_signal_callback_add(sw->theme_object, - "top_left", "up", - ewler_selected_part_up, s); + ewl_callback_append(sw, EWL_CALLBACK_MOUSE_UP, + ewler_selected_mouse_up_cb, NULL); s->index = index; s->selected = w; + s->dragging = NULL; DRETURN_INT(TRUE, DLEVEL_STABLE); } @@ -133,6 +134,64 @@ } void +ewler_selected_selector_realize_cb(Ewl_Widget *w, void *ev_data, + void *user_data) +{ + DENTER_FUNCTION(DLEVEL_STABLE); + + edje_object_signal_callback_add(w->theme_object, + "down", "top_left", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "top_left", + ewler_selected_part_up, w); + edje_object_signal_callback_add(w->theme_object, + "down", "top_middle", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "top_middle", + ewler_selected_part_up, w); + edje_object_signal_callback_add(w->theme_object, + "down", "top_right", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "top_right", + ewler_selected_part_up, w); + edje_object_signal_callback_add(w->theme_object, + "down", "middle_right", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "middle_right", + ewler_selected_part_up, w); + edje_object_signal_callback_add(w->theme_object, + "down", "bottom_right", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "bottom_right", + ewler_selected_part_up, w); + edje_object_signal_callback_add(w->theme_object, + "down", "bottom_middle", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "bottom_middle", + ewler_selected_part_up, w); + edje_object_signal_callback_add(w->theme_object, + "down", "bottom_left", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "bottom_left", + ewler_selected_part_up, w); + edje_object_signal_callback_add(w->theme_object, + "down", "middle_left", + ewler_selected_part_down, w); + edje_object_signal_callback_add(w->theme_object, + "up", "middle_left", + ewler_selected_part_up, w); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +void ewler_selected_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data) { Ewler_Selected *s; @@ -140,7 +199,10 @@ DENTER_FUNCTION(DLEVEL_STABLE); +#if 0 s = EWLER_SELECTED(w->parent); +#endif + s = EWLER_SELECTED(user_data); ewl_object_get_preferred_size(EWL_OBJECT(s->selected), &width, &height); @@ -161,7 +223,9 @@ s = EWLER_SELECTED(w); ewl_object_get_current_geometry(EWL_OBJECT(s), &x, &y, &width, &height); +#if 0 ewl_container_insert_child(EWL_CONTAINER(w->parent), s->selected, s->index); +#endif ewl_object_request_geometry(EWL_OBJECT(s->selected), x + 8, y + 8, width - 8, height - 8); @@ -175,14 +239,29 @@ ewler_selected_part_down(void *data, Evas_Object *o, const char *emission, const char *source) { - printf( "in part_down with emission %s, source %s\n", emission, source ); + Ewler_Selected *s = data; + Ewl_Widget *sw = data; + + if( s->dragging ) + FREE(s->dragging); + + s->dragging = strdup( source ); + s->corners.x = CURRENT_X(sw); + s->corners.y = CURRENT_Y(sw); + s->corners.u = CURRENT_X(sw) + CURRENT_W(sw); + s->corners.v = CURRENT_Y(sw) + CURRENT_H(sw); } void ewler_selected_part_up(void *data, Evas_Object *o, const char *emission, const char *source) { - printf( "in part_up with emission %s, source %s\n", emission, source ); + Ewler_Selected *s = data; + + if( s->dragging ) + FREE(s->dragging); + + s->dragging = NULL; } void @@ -190,10 +269,36 @@ { Ewl_Embed *embed; Ewl_Event_Mouse_Move *ev = ev_data; + Ewler_Selected *s = EWLER_SELECTED(w); embed = ewl_embed_find_by_widget(w); evas_event_feed_mouse_move(embed->evas, ev->x, ev->y); + + if( s->dragging ) { + if( strstr( s->dragging, "left" ) ) + s->corners.x = ev->x; + if( strstr( s->dragging, "right" ) ) + s->corners.u = ev->x; + if( strstr( s->dragging, "top" ) ) + s->corners.y = ev->y; + if( strstr( s->dragging, "bottom" ) ) + s->corners.v = ev->y; + + if( s->corners.u - s->corners.x < 0 ) + s->corners.u = s->corners.x; + if( s->corners.v - s->corners.y < 0 ) + s->corners.v = s->corners.y; + + ewl_object_request_position(EWL_OBJECT(s), s->corners.x, s->corners.y); + ewl_object_set_preferred_size(EWL_OBJECT(s), + s->corners.u - s->corners.x, + s->corners.v - s->corners.y); + ewl_object_set_preferred_size(EWL_OBJECT(s->selected), + s->corners.u - s->corners.x - 8, + s->corners.v - s->corners.y - 8); + + } } void =================================================================== RCS file: /cvsroot/enlightenment/misc/ewler/src/selected.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- selected.h 10 Jun 2004 23:32:39 -0000 1.3 +++ selected.h 1 Jul 2004 18:31:22 -0000 1.4 @@ -8,6 +8,11 @@ struct Ewler_Selected { Ewl_Box box; Ewl_Widget *selected; + char *dragging; + struct { + int x, y; /* top left */ + int u, v; /* lower right */ + } corners; int index; }; @@ -17,6 +22,8 @@ Ewl_Widget *ewler_selected_get(Ewler_Selected *s); void ewler_selected_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data); void ewler_selected_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data); +void ewler_selected_selector_realize_cb(Ewl_Widget *w, void *ev_data, + void *user_data); void ewler_selected_deselect_cb(Ewl_Widget *w, void *ev_data, void *user_data); void ewler_selected_mouse_down_cb(Ewl_Widget *w, void *ev_data, void *user_data); ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs