diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c index 613727789..d2244351b 100644 --- a/src/bin/e_bryce.c +++ b/src/bin/e_bryce.c @@ -174,7 +174,6 @@ _bryce_position(Bryce *b, int w, int h, int *nx, int *ny) } else e_efx_move(b->bryce, E_EFX_EFFECT_SPEED_LINEAR, E_EFX_POINT(x, y), 0.5, _bryce_autohide_end, b); - return; } else if (b->hidden) _bryce_autohide_coords(b, &x, &y); @@ -352,6 +351,7 @@ _bryce_style(Evas_Object *site, Eina_Stringshare *name, Evas_Object *g) e_theme_edje_object_set(ly, NULL, buf); prev = e_gadget_util_layout_style_init(g, ly); elm_object_part_content_set(ly, "e.swallow.content", g); + evas_object_smart_callback_call(g, "gadget_reparent", ly); evas_object_del(prev); } diff --git a/src/bin/e_gadget.h b/src/bin/e_gadget.h index 29be55379..94ff5eeee 100644 --- a/src/bin/e_gadget.h +++ b/src/bin/e_gadget.h @@ -70,7 +70,12 @@ - called on a gadget object when the "gadget_menu" action has been triggered - event_info is an E_Menu object - if a configure callback has been passed with e_gadget_configure_cb_set(), - a "Settings" item will be automatically added with this callback + a "Settings" item will be automatically added with this callback + "gadget_reparent" + - called on a gadget object when the gadget has been reparented + - parent object is event_info + - indicates that the gadget should watch this new object for EVAS_CALLBACK_RESIZE + - event_info will be NULL in the case that the reparenting removes the parent ------------------------------- ------------------------------- * called externally by gadget on gadget object: diff --git a/src/bin/efx/efx_resize.c b/src/bin/efx/efx_resize.c index ee0750576..33a1a0df2 100644 --- a/src/bin/efx/efx_resize.c +++ b/src/bin/efx/efx_resize.c @@ -124,7 +124,7 @@ _e_efx_resize_adjust(E_EFX *e, int *ax, int *ay) E_Efx_Resize_Data *erd = e->resize_data; int x, y, w, h; - if (!erd) return; + if ((!erd) || (!erd->anim)) return; if (e->move_data) x = e->x, y = e->y; else diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c index 7ea8d8959..c6231d0ce 100644 --- a/src/modules/luncher/bar.c +++ b/src/modules/luncher/bar.c @@ -4,6 +4,19 @@ static Evas_Object *current_preview; static Eina_Bool current_preview_menu; static Eina_Bool _bar_icon_preview_show(void *data); +static void +_bar_aspect(Instance *inst) +{ + switch (e_gadget_site_orient_get(e_gadget_site_get(inst->o_main))) + { + case E_GADGET_SITE_ORIENT_VERTICAL: + evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, 1, eina_list_count(inst->icons)); + break; + default: + evas_object_size_hint_aspect_set(inst->o_main, EVAS_ASPECT_CONTROL_BOTH, eina_list_count(inst->icons), 1); + } +} + static Eina_Bool _bar_check_modifiers(Evas_Modifier *modifiers) { @@ -170,6 +183,7 @@ static void _bar_icon_del(Instance *inst, Icon *ic) { inst->icons = eina_list_remove(inst->icons, ic); + _bar_aspect(inst); evas_object_del(ic->o_layout); evas_object_del(ic->o_icon); eina_hash_del_by_data(inst->icons_desktop_hash, ic); @@ -899,7 +913,9 @@ _bar_icon_add(Instance *inst, Efreet_Desktop *desktop, E_Client *non_desktop_cli ic->o_layout = elm_layout_add(inst->o_icon_con); e_theme_edje_object_set(ic->o_layout, "e/gadget/luncher/icon", "e/gadget/luncher/icon"); - evas_object_size_hint_min_set(ic->o_layout, inst->size, inst->size); + //evas_object_size_hint_min_set(ic->o_layout, inst->size, inst->size); + E_EXPAND(ic->o_layout); + E_FILL(ic->o_layout); elm_box_pack_end(inst->o_icon_con, ic->o_layout); evas_object_show(ic->o_layout); @@ -1203,6 +1219,7 @@ _bar_cb_exec_client_prop(void *data EINA_UNUSED, int type EINA_UNUSED, E_Event_C elm_layout_signal_emit(ic->o_layout, buf, "e"); ic->in_order = EINA_FALSE; inst->icons = eina_list_append(inst->icons, ic); + _bar_aspect(inst); } } else @@ -1289,6 +1306,7 @@ _bar_cb_exec_new(void *data EINA_UNUSED, int type, E_Exec_Instance *ex) elm_layout_signal_emit(ic->o_layout, buf, "e"); ic->in_order = EINA_FALSE; inst->icons = eina_list_append(inst->icons, ic); + _bar_aspect(inst); } } return ECORE_CALLBACK_RENEW; @@ -1380,6 +1398,7 @@ _bar_fill(Instance *inst) inst->icons = eina_list_append(inst->icons, ic); } } + _bar_aspect(inst); } static void @@ -1393,6 +1412,7 @@ _bar_resize_job(void *data) if (inst) { + elm_layout_sizing_eval(inst->o_main); evas_object_geometry_get(inst->o_main, &x, &y, &w, &h); switch (orient) { @@ -1408,7 +1428,7 @@ _bar_resize_job(void *data) inst->size = size; EINA_LIST_FOREACH(inst->icons, l, ic) { - const char *path = NULL, *key = NULL; + const char *path = NULL, *key = NULL; int len = 0; if (ic->desktop) @@ -1480,7 +1500,7 @@ _bar_resize_job(void *data) elm_image_file_set(ic->o_overlay, e_theme_edje_file_get("base/theme/icons", "e/icons/unknown"), "e/icons/unknown"); } - evas_object_size_hint_min_set(ic->o_layout, inst->size, inst->size); + //evas_object_size_hint_min_set(ic->o_layout, inst->size, inst->size); } inst->resize_job = NULL; } @@ -1756,8 +1776,11 @@ _conf_item_get(int *id) } ci = E_NEW(Config_Item, 1); - - ci->id = eina_list_count(luncher_config->items)+1; + + if (*id != -1) + ci->id = eina_list_count(luncher_config->items)+1; + else + ci->id = -1; ci->dir = eina_stringshare_add("default"); luncher_config->items = eina_list_append(luncher_config->items, ci);