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

Reply via email to