Le Fri, 03 Mar 2006 01:04:26 -0800, dans son message intitulé E CVS:
apps/e raster, [email protected] 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