Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_fileselector.c ewl_fileselector.h ewl_menu.c Log Message: Fill in the file and directory lists when the show event occurs to avoid unreasonable initial sizes. Raise the window on the standard menu when it's shown. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_fileselector.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- ewl_fileselector.c 11 Mar 2005 15:20:53 -0000 1.9 +++ ewl_fileselector.c 17 Mar 2005 05:48:09 -0000 1.10 @@ -18,8 +18,11 @@ static char *ewl_fileselector_size_string_get(off_t st_size); static char *ewl_fileselector_perm_string_get(mode_t st_mode); static void ewl_fileselector_file_list_get(char *path, char *filter, - Ecore_List *flist, Ecore_List *dlist); + Ecore_List *flist, + Ecore_List *dlist); static void ewl_fileselector_path_setup(Ewl_Fileselector *fs, char *path); +static void ewl_fileselector_show_cb(Ewl_Widget *entry, void *ev_data, + void *user_data); static void ewl_fileselector_dir_data_cleanup_cb(Ewl_Widget *entry, void *ev_data, void *user_data); static void ewl_fileselector_file_data_cleanup_cb(Ewl_Widget *entry, @@ -39,7 +42,10 @@ if (!fs) DRETURN_PTR(NULL, DLEVEL_STABLE); - ewl_fileselector_init(fs); + if (!ewl_fileselector_init(fs)) { + FREE(fs); + fs = NULL; + } DRETURN_PTR(EWL_WIDGET(fs), DLEVEL_STABLE); } @@ -49,7 +55,7 @@ * @return Returns no value. * @brief Initalize the fileselector */ -void ewl_fileselector_init(Ewl_Fileselector * fs) +int ewl_fileselector_init(Ewl_Fileselector * fs) { char *tmp; Ewl_Widget *w; @@ -65,17 +71,21 @@ }; DENTER_FUNCTION(DLEVEL_STABLE); - DCHECK_PARAM_PTR("fs", fs); + DCHECK_PARAM_PTR_RET("fs", fs, FALSE); w = EWL_WIDGET(fs); - ewl_box_init(EWL_BOX(w), EWL_ORIENTATION_VERTICAL); + if (!ewl_box_init(EWL_BOX(w), EWL_ORIENTATION_VERTICAL)) + DRETURN_INT(FALSE, DLEVEL_STABLE); + + ewl_widget_inherit(w, "fileselector"); ewl_object_size_request(EWL_OBJECT(w), 500, 450); ewl_object_fill_policy_set(EWL_OBJECT(w), EWL_FLAG_FILL_SHRINK | EWL_FLAG_FILL_HFILL); + ewl_callback_append(w, EWL_CALLBACK_SHOW, + ewl_fileselector_show_cb, NULL); - ewl_widget_inherit(w, "fileselector"); /* The entry for the current directory */ /* and some icons */ @@ -181,7 +191,8 @@ fs->entry_filter = ewl_entry_new("^[^\\.]"); ewl_callback_append(fs->entry_filter, - EWL_CALLBACK_VALUE_CHANGED, ewl_fileselector_filter_cb, + EWL_CALLBACK_VALUE_CHANGED, + ewl_fileselector_filter_cb, fs); ewl_container_child_append(EWL_CONTAINER(hbox), fs->entry_filter); @@ -192,9 +203,9 @@ } tmp = getenv("HOME"); - ewl_fileselector_path_setup(fs, (tmp ? tmp : "/")); + fs->path = strdup((tmp ? tmp : "/")); - DLEAVE_FUNCTION(DLEVEL_STABLE); + DRETURN_INT(TRUE, DLEVEL_STABLE); } /** @@ -250,7 +261,10 @@ DCHECK_PARAM_PTR("fs", fs); DCHECK_PARAM_PTR("path", path); - ewl_fileselector_path_setup(fs, path); + if (REALIZED(fs)) + ewl_fileselector_path_setup(fs, path); + else + fs->path = strdup(path); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -474,6 +488,13 @@ * Internally used callbacks, override at your own risk. */ void +ewl_fileselector_show_cb(Ewl_Widget * w, void *ev_data, void *user_data) +{ + Ewl_Fileselector *fs = EWL_FILESELECTOR(w); + ewl_fileselector_path_setup(fs, fs->path); +} + +void ewl_fileselector_tooltip_destroy_cb(Ewl_Widget * w, void *ev_data, void *user_data) { if (user_data) @@ -626,7 +647,7 @@ ewl_fileselector_tooltip_add(prow, ecore_list_current(dirs)); ewl_fileselector_data_free(d); - ewl_callback_append(prow, EWL_CALLBACK_CLICKED, + ewl_callback_append(prow, EWL_CALLBACK_DOUBLE_CLICKED, ewl_fileselector_select_dir_cb, fs); ewl_callback_append(prow, EWL_CALLBACK_DESTROY, ewl_fileselector_dir_data_cleanup_cb, NULL); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_fileselector.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ewl_fileselector.h 17 Feb 2005 19:14:55 -0000 1.5 +++ ewl_fileselector.h 17 Mar 2005 05:48:09 -0000 1.6 @@ -51,7 +51,7 @@ Ewl_Widget *ewl_fileselector_new(); -void ewl_fileselector_init(Ewl_Fileselector *fs); +int ewl_fileselector_init(Ewl_Fileselector *fs); char *ewl_fileselector_path_get(Ewl_Fileselector *fs); char *ewl_fileselector_file_get(Ewl_Fileselector *fs); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_menu.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ewl_menu.c 17 Feb 2005 19:14:55 -0000 1.2 +++ ewl_menu.c 17 Mar 2005 05:48:09 -0000 1.3 @@ -98,6 +98,7 @@ menu = EWL_MENU(w); ewl_widget_show(menu->base.popup); + ewl_window_raise(EWL_WINDOW(menu->base.popup)); DLEAVE_FUNCTION(DLEVEL_STABLE); } ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs