add e_fm2_optimal_size_calc() which will attempt to calculate the optimal size for displaying an efm widget inside a bounded area
SVN revision: 73500
This commit is contained in:
parent
5971f09b0b
commit
06b9059148
|
@ -58,7 +58,7 @@ struct _E_Fm2_Smart_Data
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
Evas_Coord w, h;
|
Evas_Coord w, h;
|
||||||
} max, pmax;
|
} max, pmax, min; /* min is actually teh size of the largest icon, updated each placement */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
Evas_Coord x, y;
|
Evas_Coord x, y;
|
||||||
|
@ -3708,6 +3708,8 @@ _e_fm2_icons_place_icons(E_Fm2_Smart_Data *sd)
|
||||||
ic->x = x;
|
ic->x = x;
|
||||||
ic->y = y;
|
ic->y = y;
|
||||||
x += ic->w;
|
x += ic->w;
|
||||||
|
sd->min.w = MAX(ic->min_w, sd->min.w);
|
||||||
|
sd->min.h = MAX(ic->min_h, sd->min.h);
|
||||||
if (ic->h > rh) rh = ic->h;
|
if (ic->h > rh) rh = ic->h;
|
||||||
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
||||||
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
||||||
|
@ -3745,6 +3747,8 @@ _e_fm2_icons_place_grid_icons(E_Fm2_Smart_Data *sd)
|
||||||
}
|
}
|
||||||
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
||||||
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
||||||
|
sd->min.w = MAX(ic->min_w, sd->min.w);
|
||||||
|
sd->min.h = MAX(ic->min_h, sd->min.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3882,6 +3886,8 @@ _e_fm2_icons_place_custom_icons(E_Fm2_Smart_Data *sd)
|
||||||
|
|
||||||
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
||||||
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
||||||
|
sd->min.w = MAX(ic->min_w, sd->min.w);
|
||||||
|
sd->min.h = MAX(ic->min_h, sd->min.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3901,6 +3907,8 @@ _e_fm2_icons_place_custom_grid_icons(E_Fm2_Smart_Data *sd)
|
||||||
|
|
||||||
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
||||||
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
||||||
|
sd->min.w = MAX(ic->min_w, sd->min.w);
|
||||||
|
sd->min.h = MAX(ic->min_h, sd->min.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3920,6 +3928,8 @@ _e_fm2_icons_place_custom_smart_grid_icons(E_Fm2_Smart_Data *sd)
|
||||||
|
|
||||||
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
if ((ic->x + ic->w) > sd->max.w) sd->max.w = ic->x + ic->w;
|
||||||
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
if ((ic->y + ic->h) > sd->max.h) sd->max.h = ic->y + ic->h;
|
||||||
|
sd->min.w = MAX(ic->min_w, sd->min.w);
|
||||||
|
sd->min.h = MAX(ic->min_h, sd->min.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3936,6 +3946,8 @@ _e_fm2_icons_place_list(E_Fm2_Smart_Data *sd)
|
||||||
{
|
{
|
||||||
ic->x = x;
|
ic->x = x;
|
||||||
ic->y = y;
|
ic->y = y;
|
||||||
|
sd->min.w = MAX(ic->min_w, sd->min.w);
|
||||||
|
sd->min.h = MAX(ic->min_h, sd->min.h);
|
||||||
if (sd->w > ic->min_w)
|
if (sd->w > ic->min_w)
|
||||||
ic->w = sd->w;
|
ic->w = sd->w;
|
||||||
else
|
else
|
||||||
|
@ -7099,6 +7111,8 @@ _e_fm2_cb_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__
|
||||||
sd->selecting = EINA_TRUE;
|
sd->selecting = EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
|
||||||
|
evas_object_smart_callback_call(sd->obj, "double_clicked", NULL);
|
||||||
}
|
}
|
||||||
else if (ev->button == 3)
|
else if (ev->button == 3)
|
||||||
{
|
{
|
||||||
|
@ -9935,6 +9949,36 @@ e_fm2_operation_abort(int id)
|
||||||
e_fm2_op_registry_entry_unref(ere);
|
e_fm2_op_registry_entry_unref(ere);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_fm2_optimal_size_calc(Evas_Object *obj, int maxw, int maxh, int *w, int *h)
|
||||||
|
{
|
||||||
|
int x, y, minw, minh;
|
||||||
|
EFM_SMART_CHECK();
|
||||||
|
if ((!w) || (!h)) return;
|
||||||
|
if (maxw < 0) maxw = 0;
|
||||||
|
if (maxh < 0) maxh = 0;
|
||||||
|
minw = sd->min.w + 5, minh = 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);
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
y = x = (int)sqrt(eina_list_count(sd->icons));
|
||||||
|
if (maxw && (x * minw > maxw))
|
||||||
|
{
|
||||||
|
x = maxw / minw;
|
||||||
|
y = (eina_list_count(sd->icons) / x) + ((maxw % minw) ? 1 : 0);
|
||||||
|
}
|
||||||
|
*w = minw * x;
|
||||||
|
*w = MIN(*w, maxw);
|
||||||
|
*h = minh * y;
|
||||||
|
*h = MIN(*h, maxh);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI E_Fm2_View_Mode
|
EAPI E_Fm2_View_Mode
|
||||||
e_fm2_view_mode_get(Evas_Object *obj)
|
e_fm2_view_mode_get(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
|
|
|
@ -187,6 +187,7 @@ EAPI void e_fm2_icon_geometry_get(E_Fm2_Icon *ic, int *x, int *y, in
|
||||||
EAPI void e_fm2_client_data(Ecore_Ipc_Event_Client_Data *e);
|
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 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 E_Fm2_View_Mode e_fm2_view_mode_get(Evas_Object *obj);
|
||||||
|
EAPI void e_fm2_optimal_size_calc(Evas_Object *obj, int maxw, int maxh, int *w, int *h);
|
||||||
|
|
||||||
EAPI int _e_fm2_client_mount(const char *udi, const char *mountpoint);
|
EAPI int _e_fm2_client_mount(const char *udi, const char *mountpoint);
|
||||||
EAPI int _e_fm2_client_unmount(const char *udi);
|
EAPI int _e_fm2_client_unmount(const char *udi);
|
||||||
|
|
Loading…
Reference in New Issue