From 650c66ec685b7ef42bde1a6f86b8f12fca408d68 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Wed, 3 Mar 2010 18:30:27 +0000 Subject: [PATCH] Respect zone aspect ratio. SVN revision: 46838 --- src/bin/e_widget_deskpreview.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/bin/e_widget_deskpreview.c b/src/bin/e_widget_deskpreview.c index 2b14a1df1..2af62fbd5 100644 --- a/src/bin/e_widget_deskpreview.c +++ b/src/bin/e_widget_deskpreview.c @@ -42,6 +42,7 @@ e_widget_deskpreview_add(Evas *evas, int nx, int ny) wd->table = evas_object_table_add(evas); evas_object_table_homogeneous_set(wd->table, EINA_TRUE); + evas_object_table_padding_set(wd->table, 1, 1); evas_object_table_align_set(wd->table, 0.5, 0.5); e_widget_resize_object_set(wd->obj, wd->table); evas_object_show(wd->table); @@ -131,9 +132,27 @@ _e_wid_reconfigure(E_Widget_Data *wd) evas_object_geometry_get(wd->table, NULL, NULL, &tw, &th); - /* TODO: Make these values an aspect of zone */ - mw = (tw / wd->dx); - mh = (th / wd->dy); + if (wd->dy >= wd->dx) + { + mh = th / wd->dy; + mw = (mh * zone->w) / zone->h; + } + else + { + mw = tw / wd->dx; + mh = (mw * zone->h) / zone->w; + } + + if (mw > tw) + { + mw = (tw * zone->h) / zone->w; + mh = (mw * zone->h) / zone->w; + } + if (mh > th) + { + mh = (th * zone->w) / zone->h; + mw = (mh * zone->w) / zone->h; + } EINA_LIST_FOREACH(wd->desks, l, dw) {