On Mon, 21 Apr 2014 12:56:53 -0700 Chidambar Zinnoury <chidambar.zinno...@zefla.fr> wrote:
> illogict pushed a commit to branch master. > > http://git.enlightenment.org/core/enlightenment.git/commit/?id=b4a58ad874bb1f0f9dfb85fdcb38f781f3b42d37 > > commit b4a58ad874bb1f0f9dfb85fdcb38f781f3b42d37 > Author: Chidambar Zinnoury <chidambar.zinno...@zefla.fr> > Date: Mon Apr 21 21:54:15 2014 +0200 > > Bugfix: e fileman: Correct automagic window size computation. > > When available width is less than minimum width, the height was computed > according to the available width, but the window width was effectively the > minimum width: its height was thus more than needed. > > The function now takes the minimum dimensions so that correct height and > width are computed. > --- > src/bin/e_fm.c | 25 +++++++++++++++---------- > src/bin/e_fm.h | 2 +- > src/modules/fileman/e_fwin.c | 2 +- > 3 files changed, 17 insertions(+), 12 deletions(-) > > diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c > index 0028ae2..7d5c20a 100644 > --- a/src/bin/e_fm.c > +++ b/src/bin/e_fm.c > @@ -11470,34 +11470,39 @@ e_fm2_operation_abort(int id) > } > > EAPI Eina_Bool > -e_fm2_optimal_size_calc(Evas_Object *obj, int maxw, int maxh, int *w, int *h) > +e_fm2_optimal_size_calc(Evas_Object *obj, int minw, int minh, int maxw, int > maxh, int *w, int *h) You added minh here but are not using it. > { > - int x, y, minw, minh; > + int x, y, step_w, step_h; > EFM_SMART_CHECK(EINA_FALSE); > if ((!w) || (!h)) return EINA_FALSE; > if (!sd->icons) return EINA_FALSE; > if (maxw < 0) maxw = 0; > if (maxh < 0) maxh = 0; > - minw = sd->min.w + 5, minh = sd->min.h + 5; > + step_w = sd->min.w + 5, step_h = sd->min.h + 5; > switch (_e_fm2_view_mode_get(sd)) > { > case E_FM2_VIEW_MODE_LIST: > - *w = MIN(minw, maxw); > - *h = MIN(minh * eina_list_count(sd->icons), (unsigned int)maxh); > + *w = MIN(step_w, maxw); > + *h = MIN(step_h * eina_list_count(sd->icons), (unsigned int)maxh); > return EINA_TRUE; > > default: > break; > } > y = x = (int)sqrt(eina_list_count(sd->icons)); > - if (maxw && (x * minw > maxw)) > + if (maxw && (x * step_w > maxw)) > { > - x = maxw / minw; > - y = (eina_list_count(sd->icons) / x) + ((maxw % minw) ? 1 : 0); > + x = maxw / step_w; > + y = (eina_list_count(sd->icons) / x) + ((maxw % step_w) ? 1 : 0); > } > - *w = minw * x; > + if (minw && (x * step_w < minw)) > + { > + x = minw / step_w; > + y = (eina_list_count(sd->icons) / x) + ((minw % step_w) ? 1 : 0); > + } > + *w = step_w * x; > *w = MIN(*w, maxw); > - *h = minh * y; > + *h = step_h * y; > *h = MIN(*h, maxh); > return EINA_TRUE; > } > diff --git a/src/bin/e_fm.h b/src/bin/e_fm.h > index ed66421..2a07d54 100644 > --- a/src/bin/e_fm.h > +++ b/src/bin/e_fm.h > @@ -203,7 +203,7 @@ EAPI void e_fm2_overlay_clip_to(Evas_Object > *fm, Evas_Object *clip); > EAPI void e_fm2_client_data(Ecore_Ipc_Event_Client_Data *e); > EAPI void e_fm2_client_del(Ecore_Ipc_Event_Client_Del *e); > EAPI E_Fm2_View_Mode e_fm2_view_mode_get(Evas_Object *obj); > -EAPI Eina_Bool e_fm2_optimal_size_calc(Evas_Object *obj, int maxw, > int maxh, int *w, int *h); > +EAPI Eina_Bool e_fm2_optimal_size_calc(Evas_Object *obj, int minw, > int minh, int maxw, int maxh, int *w, int *h); > EAPI const char *e_fm2_real_path_map(const char *dev, const char *path); > EAPI void e_fm2_favorites_init(void); > EAPI unsigned int e_fm2_selected_count(Evas_Object *obj); > diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c > index ab31ad5..6203ef5 100644 > --- a/src/modules/fileman/e_fwin.c > +++ b/src/modules/fileman/e_fwin.c > @@ -654,7 +654,7 @@ _e_fwin_bg_mouse_down(E_Fwin *fwin, Evas_Object *obj > __UNUSED__, void *event __U > if (fwin->win->client->fullscreen) > e_client_unfullscreen(fwin->win->client); > e_zone_useful_geometry_get(fwin->win->client->zone, &zx, &zy, &zw, &zh); > x = fwin->win->client->x, y = fwin->win->client->y; > - if (!e_fm2_optimal_size_calc(fwin->cur_page->fm_obj, zw + zx - x, zh + zy > - y, &w, &h)) return; > + if (!e_fm2_optimal_size_calc(fwin->cur_page->fm_obj, MINIMUM_WIDTH, > MINIMUM_HEIGHT, zw + zx - x, zh + zy - y, &w, &h)) return; > evas_object_geometry_get(fwin->cur_page->fm_obj, &cx, &cy, &cw, &ch); > if (x + w > zx + zw) > w = zx + zw - x; > ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel