Le Fri, 03 Mar 2006 01:04:26 -0800, dans son message intitulé E CVS:
apps/e raster, enlightenment-cvs@lists.sourceforge.net a eu le courage
de nous raconter :

> Enlightenment CVS committal
> 
> Author  : raster
> Project : e17
> Module  : apps/e
> 
> Dir     : e17/apps/e/src/bin
> 
> 
> Modified Files:
>       e_config.c e_config.h e_int_config_display.c 
> 
> 
> Log Message:
> 
> 
> randr - a nice module, isn't really needed anymroe now as almsot all
> the work is done by a config dialog (i added the safety box stuff
> from randr into it). i just need to add the cde to restore on login
> now.
[snip]

 Hello!

 Here is a patch to make the display config dialog work as expected
(let you select a refresh rate after a resolution selection, no minimum
auto-resize after clearing the refresh rate ilist).

 Cheers!

                                              ilLogict
Index: src/bin/e_ilist.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ilist.c,v
retrieving revision 1.14
diff -u -r1.14 e_ilist.c
--- src/bin/e_ilist.c	25 Jan 2006 04:06:51 -0000	1.14
+++ src/bin/e_ilist.c	3 Mar 2006 09:49:46 -0000
@@ -253,6 +253,10 @@
    if (si) 
    {
       sd->items = evas_list_remove(sd->items, si);
+      if (e_ilist_selected_get(obj) == n)
+      {
+	sd->selected = -1;
+      }
       if (si->icon_obj) evas_object_del(si->icon_obj);
       evas_object_del(si->base_obj);
       free(si);  
@@ -310,6 +314,7 @@
 	evas_object_del(si->base_obj);
 	free(si);
      }
+   sd->selected = -1;
 }
 
 /* local subsystem functions */
Index: src/bin/e_int_config_display.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_display.c,v
retrieving revision 1.2
diff -u -r1.2 e_int_config_display.c
--- src/bin/e_int_config_display.c	15 Feb 2006 20:30:59 -0000	1.2
+++ src/bin/e_int_config_display.c	3 Mar 2006 09:49:48 -0000
@@ -17,14 +17,14 @@
 Evas_Object *res_list = NULL;
 
 typedef struct _Resolution Resolution;
-struct _Resolution 
+struct _Resolution
 {
    int size_id;
    Ecore_X_Screen_Size size;
    Ecore_X_Screen_Refresh_Rate *rates;
 };
 
-struct _E_Config_Dialog_Data 
+struct _E_Config_Dialog_Data
 {
    E_Config_Dialog *cfd;
    Resolution *res;
@@ -33,7 +33,7 @@
 };
 
 EAPI E_Config_Dialog *
-e_int_config_display(E_Container *con) 
+e_int_config_display(E_Container *con)
 {
    E_Config_Dialog *cfd;
    E_Config_Dialog_View *v;
@@ -51,17 +51,17 @@
 }
 
 static void
-_fill_data(E_Config_Dialog_Data *cfdata) 
+_fill_data(E_Config_Dialog_Data *cfdata)
 {
    E_Manager *man;
    
    man = e_manager_current_get();
-   cfdata->orig_size = ecore_x_randr_current_screen_size_get(man->root);   
+   cfdata->orig_size = ecore_x_randr_current_screen_size_get(man->root);
    cfdata->orig_rate = ecore_x_randr_current_screen_refresh_rate_get(man->root);
 }
 
 static void *
-_create_data(E_Config_Dialog *cfd) 
+_create_data(E_Config_Dialog *cfd)
 {
    E_Config_Dialog_Data *cfdata;
    cfdata = E_NEW(E_Config_Dialog_Data, 1);
@@ -71,19 +71,19 @@
 }
 
 static void
-_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
+_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
    free(cfdata);
 }
 
 static int
-_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
+_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
    char *sel_res, *sel_rate;
    int w, h, r, i, n;
    Ecore_X_Screen_Size *sizes;
    Ecore_X_Screen_Size size;
-   Ecore_X_Screen_Refresh_Rate *rates;   
+   Ecore_X_Screen_Refresh_Rate *rates;
    Ecore_X_Screen_Refresh_Rate rate;
    E_Manager *man;
    
@@ -91,35 +91,35 @@
    sel_rate = (char *)e_widget_ilist_selected_label_get(rate_list);
    sscanf(sel_res, "%dx%d", &w, &h);
    sscanf(sel_rate, "%d Hz", &r);
-      
-   if ((cfdata->orig_size.width == w) && 
+   
+   if ((cfdata->orig_size.width == w) &&
        (cfdata->orig_size.height == h) &&
        (cfdata->orig_rate.rate == r))
      return 1;
 
    man = e_manager_current_get();
    sizes = ecore_x_randr_screen_sizes_get(man->root, &n);
-   for (i = 0; i < n; i++) 
+   for (i = 0; i < n; i++)
      {
-	if ((sizes[i].width == w) && 
+	if ((sizes[i].width == w) &&
 	    (sizes[i].height == h))
 	  {
 	     size = sizes[i];
 	     int k, rr;
 	     rates = ecore_x_randr_screen_refresh_rates_get(man->root, i, &rr);
-	     for (k = 0; k < rr; k++) 
+	     for (k = 0; k < rr; k++)
 	       {
-		  if (rates[k].rate == r) 
+		  if (rates[k].rate == r)
 		    {
 		       rate = rates[k];
 		       break;
-		    }  
+		    }
 	       }
 	     break;
 	  }
      }
    
-   int ret;   
+   int ret;
    ret = ecore_x_randr_screen_refresh_rate_set(man->root, size, rate);
    cfdata->orig_size = size;
    cfdata->orig_rate = rate;
@@ -128,7 +128,7 @@
 }
 
 static Evas_Object *
-_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) 
+_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
 {
    Evas_Object *o, *of, *ol, *rl;
    E_Manager *man;
@@ -140,19 +140,19 @@
    
    o = e_widget_list_add(evas, 0, 0);
    
-   of = e_widget_framelist_add(evas, _("Resolution"), 0);   
+   of = e_widget_framelist_add(evas, _("Resolution"), 0);
    ol = e_widget_ilist_add(evas, 32, 32, NULL);
-   e_widget_min_size_set(ol, 140, 120);   
+   e_widget_min_size_set(ol, 140, 120);
    e_widget_framelist_object_append(of, ol);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
 
    res_list = ol;
    
-   of = e_widget_framelist_add(evas, _("Refresh Rate"), 0);   
+   of = e_widget_framelist_add(evas, _("Refresh Rate"), 0);
    rl = e_widget_ilist_add(evas, 8, 8, NULL);
-   e_widget_min_size_set(rl, 140, 90);   
+   e_widget_min_size_set(rl, 140, 90);
    e_widget_framelist_object_append(of, rl);
-   e_widget_list_object_append(o, of, 1, 1, 0.5);   
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
    
    rate_list = rl;
    
@@ -160,28 +160,28 @@
    sizes = ecore_x_randr_screen_sizes_get(man->root, &s);
    size = ecore_x_randr_current_screen_size_get(man->root);
    
-   if (sizes) 
+   if (sizes)
      {	
 	char buf[16];
 
-	for (i = 0; i < s; i++) 
+	for (i = 0; i < s; i++)
 	  {
 	     Resolution *res;
 	     
 	     res = E_NEW(Resolution, 1);
 	     if (!res) continue;
-	     	     
+	     
 	     res->size = sizes[i];
 	     res->size_id = i;
 	     res->rates = ecore_x_randr_screen_refresh_rates_get(man->root, res->size_id, &r);
-	     	     
+	     
 	     snprintf(buf, sizeof(buf), "%dx%d", sizes[i].width, sizes[i].height);
-	     e_widget_ilist_append(ol, NULL, buf, _ilist_item_change, res, NULL);	     
+	     e_widget_ilist_append(ol, NULL, buf, _ilist_item_change, res, NULL);
 
-	     if ((res->size.width == size.width) && (res->size.height == size.height)) 
-	       { 	     
+	     if ((res->size.width == size.width) && (res->size.height == size.height))
+	       {
 		  e_widget_ilist_selected_set(ol, i);
-		  _load_rates(res);	     		  
+		  _load_rates(res);
 	       }
 	  }	
      }
@@ -192,7 +192,7 @@
 }
 
 static void
-_load_rates(void *data) 
+_load_rates(void *data)
 {
    int k, r;
    E_Manager *man;
@@ -201,24 +201,23 @@
    Ecore_X_Screen_Refresh_Rate *rts;
    char buf[16];
 
-   man = e_manager_current_get();   
+   man = e_manager_current_get();
    rts = ecore_x_randr_screen_refresh_rates_get(man->root, res->size_id, &r);
    rt = ecore_x_randr_current_screen_refresh_rate_get(man->root);
 
    e_widget_ilist_clear(rate_list);
    
-   for (k = 0; k < r; k++) 
-     {	
-
+   for (k = 0; k < r; k++)
+     {
 	snprintf(buf, sizeof(buf), "%d Hz", rts[k].rate);
 	e_widget_ilist_append(rate_list, NULL, buf, NULL, NULL, NULL);
-	if (rt.rate == rts[k].rate) 
+	if (rt.rate == rts[k].rate)
 	  e_widget_ilist_selected_set(rate_list, k);
-     }   
+     }
 }
 
 static void
-_ilist_item_change(void *data) 
+_ilist_item_change(void *data)
 {
    _load_rates(data);
 }
Index: src/bin/e_widget_ilist.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_widget_ilist.c,v
retrieving revision 1.10
diff -u -r1.10 e_widget_ilist.c
--- src/bin/e_widget_ilist.c	25 Jan 2006 04:06:51 -0000	1.10
+++ src/bin/e_widget_ilist.c	3 Mar 2006 09:49:48 -0000
@@ -87,6 +87,10 @@
 	e_widget_min_size_get(obj, &wmw, &wmh);
 	e_widget_min_size_set(obj, mw + (w - vw), wmh);
      }
+   else if (mw < vw)
+     {
+	evas_object_resize(wd->o_ilist, vw,mh);
+     }
 }
 
 EAPI void
@@ -162,14 +166,14 @@
 }
 
 EAPI void
-e_widget_ilist_clear(Evas_Object *obj) 
+e_widget_ilist_clear(Evas_Object *obj)
 {
    E_Widget_Data *wd;
    int mw, mh, vw, vh, w, h;
    
    wd = e_widget_data_get(obj);
    e_ilist_clear(wd->o_ilist);
-
+/*
    e_ilist_min_size_get(wd->o_ilist, &mw, &mh);
    evas_object_resize(wd->o_ilist, mw, mh);
    e_scrollframe_child_viewport_size_get(wd->o_scrollframe, &vw, &vh);
@@ -180,8 +184,8 @@
 	
 	e_widget_min_size_get(obj, &wmw, &wmh);
 	e_widget_min_size_set(obj, mw + (w - vw), wmh);
-     }   
-   return;
+     }
+   return;*/
 }
 
 static void

Reply via email to