and refine new gadcon layout somemore - so much simpler now! yay!

SVN revision: 64556
This commit is contained in:
Carsten Haitzler 2011-10-31 12:04:34 +00:00
parent be4202e8a6
commit d5247cd243
1 changed files with 34 additions and 100 deletions

View File

@ -1150,7 +1150,7 @@ e_gadcon_client_aspect_set(E_Gadcon_Client *gcc, int w, int h)
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE); E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
gcc->aspect.w = w; gcc->aspect.w = w;
gcc->aspect.h = h; gcc->aspect.h = h;
if ((!gcc->autoscroll)/* && (!gcc->resizable)*/) // if ((!gcc->autoscroll)/* && (!gcc->resizable)*/)
{ {
if (gcc->o_frame) if (gcc->o_frame)
{ {
@ -1171,6 +1171,7 @@ e_gadcon_client_autoscroll_set(E_Gadcon_Client *gcc, int autoscroll)
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE); E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
gcc->autoscroll = autoscroll; gcc->autoscroll = autoscroll;
/*
if (gcc->autoscroll) if (gcc->autoscroll)
{ {
if (gcc->o_frame) if (gcc->o_frame)
@ -1187,6 +1188,7 @@ e_gadcon_client_autoscroll_set(E_Gadcon_Client *gcc, int autoscroll)
} }
} }
else else
*/
{ {
if (gcc->o_frame) if (gcc->o_frame)
{ {
@ -1402,7 +1404,7 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget
if (!gcc->o_control) if (!gcc->o_control)
{ {
mi = e_menu_item_new(menu_gadget); mi = e_menu_item_new(menu_gadget);
e_menu_item_label_set(mi, _("Begin move/resize")); e_menu_item_label_set(mi, _("Move"));
e_util_menu_item_theme_icon_set(mi, "transform-scale"); e_util_menu_item_theme_icon_set(mi, "transform-scale");
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_edit, gcc); e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_edit, gcc);
} }
@ -1983,7 +1985,7 @@ _e_gadcon_cb_client_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *o
gcc->menu = mn; gcc->menu = mn;
mi = e_menu_item_new(mn); mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Stop move/resize this gadget")); e_menu_item_label_set(mi, _("Stop moving"));
e_util_menu_item_theme_icon_set(mi, "enlightenment/edit"); e_util_menu_item_theme_icon_set(mi, "enlightenment/edit");
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_edit, gcc); e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_edit, gcc);
@ -3710,123 +3712,55 @@ _e_gadcon_layout_smart_width_smart_sort_reverse_cb(const void *d1, const void *d
static void static void
_e_gadcon_layout_smart_gadcons_width_adjust(E_Smart_Data *sd, int min, int cur) _e_gadcon_layout_smart_gadcons_width_adjust(E_Smart_Data *sd, int min, int cur)
{ {
E_Gadcon_Layout_Item *bi2 = NULL;
E_Gadcon_Layout_Item *bi = NULL; E_Gadcon_Layout_Item *bi = NULL;
Eina_List *l, *l2; Eina_List *l, *l2;
Evas_Object *item, *item2; Evas_Object *item;
int need, limit = 0, reduce_total, reduce; int need;
int max_size, c; int max_size, autosize = 0;
if (sd->w < cur) if (sd->w < cur)
{ {
if (sd->w < min) if (sd->w < min) max_size = min;
max_size = min; else max_size = cur;
else
max_size = cur;
need = max_size - sd->w; need = max_size - sd->w;
} }
else else
return; return;
sd->items = eina_list_sort(sd->items, eina_list_count(sd->items), sd->items = eina_list_sort(sd->items, eina_list_count(sd->items),
_e_gadcon_layout_smart_width_smart_sort_reverse_cb); _e_gadcon_layout_smart_width_smart_sort_reverse_cb);
__adjust_size_again:
c = 0;
EINA_LIST_FOREACH(sd->items, l, item) EINA_LIST_FOREACH(sd->items, l, item)
{ {
if (eina_list_next(l)) bi = evas_object_data_get(item, "e_gadcon_layout_data");
{ if (bi->gcc->autoscroll) autosize += bi->ask.size2;
item2 = eina_list_data_get(eina_list_next(l));
bi = evas_object_data_get(item, "e_gadcon_layout_data");
bi2 = evas_object_data_get(item2, "e_gadcon_layout_data");
if (bi->ask.size2 > bi2->ask.size2)
{
limit = bi2->ask.size2;
c++;
break;
}
c++;
}
} }
if (eina_list_count(sd->items) == 1) c = 1; if (autosize < 1) autosize = 1;
while (need > 0)
if (l)
{ {
reduce = bi->ask.size2 - limit; EINA_LIST_REVERSE_FOREACH(sd->items, l2, item)
reduce_total = reduce * c; {
if (need <= 0) break;
if (reduce_total <= need) bi = evas_object_data_get(item, "e_gadcon_layout_data");
{ if (bi->gcc->autoscroll)
/* EINA_FUCK_REVERSE_FOREACH(l, l2, item) */ {
for (l2 = l; l2; l2 = l2->prev) int reduce_by;
{
item = l2->data; reduce_by = (need * bi->ask.size2) / autosize;
bi2 = evas_object_data_get(item, "e_gadcon_layout_data"); if (reduce_by < 1) reduce_by = 1;
bi2->ask.size2 -= reduce; if (bi->ask.size2 - reduce_by > 8)
} {
need -= reduce * c; bi->ask.size2 -= reduce_by;
if (need) need -= reduce_by ;
goto __adjust_size_again; }
} else
else {
{ need -= bi->ask.size2 - 8;
int reduce_by, c2; bi->ask.size2 = 8;
}
while (need > 0)
{
reduce_by = 1;
while (1)
{
if (((reduce_by + 1) * c) < need)
reduce_by++;
else
break;
}
c2 = c;
EINA_LIST_REVERSE_FOREACH(sd->items, l2, item)
{
if ((c2 <= 0) || (need <= 0)) break;
bi2 = evas_object_data_get(item, "e_gadcon_layout_data");
if (bi2->gcc->autoscroll)
{
bi2->ask.size2 -= reduce_by;
need -= reduce_by;
c2--;
}
}
} }
} }
} }
else
{
int reduce_by, c2;
while (need)
{
reduce_by = 1;
while (1)
{
if (((reduce_by + 1) * c) < need)
reduce_by++;
else
break;
}
c2 = c;
EINA_LIST_FOREACH(sd->items, l2, item)
{
if ((!c2) || (!need)) break;
bi2 = evas_object_data_get(item, "e_gadcon_layout_data");
bi2->ask.size2 -= reduce_by;
need -= reduce_by;
c2--;
}
}
}
} }
static int static int