Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_fwin.c e_fwin.h e_ilist.c e_widget_ilist.c Log Message: double click on open - with items in ilist or fm2 list and e will auto-open =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fwin.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- e_fwin.c 27 Oct 2006 15:24:13 -0000 1.11 +++ e_fwin.c 28 Oct 2006 03:53:22 -0000 1.12 @@ -19,7 +19,14 @@ static void _e_fwin_parent(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_fwin_file_open_app(E_Fwin *fwin, E_App *a, const char *file); -static void _e_fwin_cb_ilist_change(void *data, Evas_Object *obj); +static void _e_fwin_cb_ilist_change(void *data); +static void _e_fwin_cb_ilist_selected(void *data, Evas_Object *obj, void *event_info); +static void _e_fwin_cb_fm_selection_change(void *data, Evas_Object *obj, void *event_info); +static void _e_fwin_cb_fm_selected(void *data, Evas_Object *obj, void *event_info); +static void _e_fwin_cb_open(void *data, E_Dialog *dia); +static void _e_fwin_cb_close(void *data, E_Dialog *dia); +static void _e_fwin_cb_dialog_free(void *obj); +static Evas_Bool _e_fwin_cb_hash_foreach(Evas_Hash *hash, const char *key, void *data, void *fdata); static void _e_fwin_file_open_dialog(E_Fwin *fwin, Evas_List *files); /* local subsystem globals */ @@ -145,6 +152,11 @@ static void _e_fwin_free(E_Fwin *fwin) { + if (fwin->fad) + { + e_object_del(E_OBJECT(fwin->fad->dia)); + fwin->fad = NULL; + } e_object_del(E_OBJECT(fwin->win)); fwins = evas_list_remove(fwins, fwin); free(fwin); @@ -229,7 +241,8 @@ e_fm2_parent_go(data); } - +/* KILL: this func will die as soon as ecore_desktops's cmd thing works + * perfectly */ static void _e_fwin_file_open_app(E_Fwin *fwin, E_App *a, const char *file) { @@ -291,24 +304,8 @@ e_zone_exec(fwin->win->border->zone, buf); } - - - - - - -typedef struct _E_Fwin_Apps_Dialog E_Fwin_Apps_Dialog; - -struct _E_Fwin_Apps_Dialog -{ - E_Dialog *dia; - E_Fwin *fwin; - char *app1, *app2; - Evas_Object *o_ilist, *o_fm; -}; - static void -_e_fwin_cb_ilist_change(void *data, Evas_Object *obj) +_e_fwin_cb_ilist_change(void *data) { E_Fwin_Apps_Dialog *fad; @@ -318,6 +315,15 @@ } static void +_e_fwin_cb_ilist_selected(void *data, Evas_Object *obj, void *event_info) +{ + E_Fwin_Apps_Dialog *fad; + + fad = data; + _e_fwin_cb_open(fad, fad->dia); +} + +static void _e_fwin_cb_fm_selection_change(void *data, Evas_Object *obj, void *event_info) { E_Fwin_Apps_Dialog *fad; @@ -338,6 +344,15 @@ } static void +_e_fwin_cb_fm_selected(void *data, Evas_Object *obj, void *event_info) +{ + E_Fwin_Apps_Dialog *fad; + + fad = data; + _e_fwin_cb_open(fad, fad->dia); +} + +static void _e_fwin_cb_open(void *data, E_Dialog *dia) { E_Fwin_Apps_Dialog *fad; @@ -366,6 +381,10 @@ for (l = selected; l; l = l->next) { ici = l->data; + /* this snprintf is silly - but it's here in case i really do + * need to provide full paths (seems silly since we chdir + * into the dir) + */ buf[0] = 0; if (!((ici->link) && (ici->mount))) { @@ -401,7 +420,7 @@ } chdir(pcwd); } - e_object_del(fad->dia); + e_object_del(E_OBJECT(fad->dia)); } static void @@ -410,7 +429,7 @@ E_Fwin_Apps_Dialog *fad; fad = data; - e_object_del(fad->dia); + e_object_del(E_OBJECT(fad->dia)); } static void @@ -423,6 +442,7 @@ fad = dia->data; E_FREE(fad->app1); E_FREE(fad->app2); + fad->fwin->fad = NULL; free(fad); } @@ -453,7 +473,12 @@ int need_dia = 0; Evas_Hash *mimes = NULL; Evas_List *mlist = NULL; - + + if (fwin->fad) + { + e_object_del(E_OBJECT(fwin->fad->dia)); + fwin->fad = NULL; + } for (l = files; l; l = l->next) { ici = l->data; @@ -523,10 +548,6 @@ * are multiple or no previously used app for this mime - then open * dialog */ - /* FIXME: double click on fm2 or ilist entry shoudl implicitly be - * open. need to add callback for fm2 and make ilist handle double - * click stuff - */ fad = E_NEW(E_Fwin_Apps_Dialog, 1); dia = e_dialog_new(fwin->win->border->zone->container, @@ -540,6 +561,7 @@ fad->dia = dia; fad->fwin = fwin; + fwin->fad = fad; dia->data = fad; e_object_free_attach_func_set(E_OBJECT(dia), _e_fwin_cb_dialog_free); @@ -566,6 +588,8 @@ e_widget_min_size_set(o, 160, 240); e_widget_framelist_object_append(of, o); e_widget_list_object_append(ocon, of, 1, 1, 0.5); + evas_object_smart_callback_add(o, "selected", + _e_fwin_cb_ilist_selected, fad); } of = e_widget_framelist_add(evas, _("All Applications"), 0); @@ -592,6 +616,8 @@ e_fm2_config_set(mt, &fmc); evas_object_smart_callback_add(mt, "selection_change", _e_fwin_cb_fm_selection_change, fad); + evas_object_smart_callback_add(mt, "selected", + _e_fwin_cb_fm_selected, fad); snprintf(buf, sizeof(buf), "%s/.e/e/applications/all", e_user_homedir_get()); e_fm2_path_set(mt, buf, "/"); o = e_widget_scrollframe_pan_add(evas, mt, @@ -606,6 +632,5 @@ e_widget_min_size_get(ocon, &mw, &mh); e_dialog_content_set(dia, ocon, mw, mh); - /* FIXME: store fad in fwin (on fwin delete close fad. on fad close, delete from fwin) */ e_dialog_show(dia); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_fwin.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_fwin.h 29 Sep 2006 06:49:35 -0000 1.1 +++ e_fwin.h 28 Oct 2006 03:53:22 -0000 1.2 @@ -4,6 +4,7 @@ #ifdef E_TYPEDEFS typedef struct _E_Fwin E_Fwin; +typedef struct _E_Fwin_Apps_Dialog E_Fwin_Apps_Dialog; #else #ifndef E_FWIN_H @@ -19,6 +20,15 @@ Evas_Object *scrollframe_obj; Evas_Object *fm_obj; Evas_Object *bg_obj; + E_Fwin_Apps_Dialog *fad; +}; + +struct _E_Fwin_Apps_Dialog +{ + E_Dialog *dia; + E_Fwin *fwin; + char *app1, *app2; + Evas_Object *o_ilist, *o_fm; }; EAPI int e_fwin_init (void); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_ilist.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- e_ilist.c 3 Sep 2006 08:51:31 -0000 1.25 +++ e_ilist.c 28 Oct 2006 03:53:22 -0000 1.26 @@ -440,6 +440,8 @@ break; } } + if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) + evas_object_smart_callback_call(si->sd->smart_obj, "selected", NULL); } static void =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_ilist.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -3 -r1.21 -r1.22 --- e_widget_ilist.c 3 Sep 2006 08:51:32 -0000 1.21 +++ e_widget_ilist.c 28 Oct 2006 03:53:22 -0000 1.22 @@ -23,6 +23,7 @@ static void _e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_wid_cb_item_sel(void *data, void *data2); static void _e_wid_cb_item_hilight(void *data, void *data2); +static void _e_wid_cb_selected(void *data, Evas_Object *obj, void *event_info); static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info); /* externally accessible functions */ @@ -55,6 +56,8 @@ e_scrollframe_child_set(wd->o_scrollframe, o); e_widget_sub_object_add(obj, o); evas_object_show(o); + evas_object_smart_callback_add(o, "selected", _e_wid_cb_selected, obj); + evas_object_resize(obj, 32, 32); e_widget_min_size_set(obj, 32, 32); @@ -350,6 +353,12 @@ wcb = data2; e_ilist_selected_geometry_get(wd->o_ilist, &x, &y, &w, &h); e_scrollframe_child_region_show(wd->o_scrollframe, x, y, w, h); +} + +static void +_e_wid_cb_selected(void *data, Evas_Object *obj, void *event_info) +{ + evas_object_smart_callback_call(data, "selected", event_info); } static void ------------------------------------------------------------------------- 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