EAPI void e_widget_button_icon_set(Evas_Object *obj, Evas_Object *icon) { E_Widget_Data *wd; int mw, mh; wd = e_widget_data_get(obj); if (wd->o_icon) { e_widget_sub_object_del(obj, wd->o_icon); evas_object_hide(wd->o_icon); edje_object_part_unswallow(wd->o_button, wd->o_icon); evas_object_del(wd->o_icon); wd->o_icon = NULL; } if (icon) { wd->o_icon = icon; edje_object_part_swallow(wd->o_button, "e.swallow.icon", icon); evas_object_pass_events_set(icon, 1); evas_object_show(icon); e_widget_sub_object_add(obj, icon); wd->type |= E_WIDGET_BUTTON_ICON; } else wd->type = ~(wd->type & E_WIDGET_BUTTON_ICON); _e_wid_button_state_send(wd); edje_object_size_min_calc(wd->o_button, &mw, &mh); e_widget_size_min_set(obj, mw, mh); }
/* externally accessible functions */ EAPI Evas_Object * e_widget_label_add(Evas *evas, const char *label) { Evas_Object *obj, *o; Evas_Coord mw, mh; E_Widget_Data *wd; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); o = edje_object_add(evas); e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/label"); wd->text = o; edje_object_part_text_set(o, "e.text.label", label); evas_object_show(o); edje_object_size_min_calc(o, &mw, &mh); e_widget_can_focus_set(obj, 0); e_widget_size_min_set(obj, mw, mh); e_widget_sub_object_add(obj, o); e_widget_resize_object_set(obj, o); return obj; }
/* Updates the text of the text object of the editable object * (it fills it with '*' if the editable is in password mode) * It does not update the position of the text */ static void _e_editable_text_update(Evas_Object *editable) { E_Editable_Smart_Data *sd; Evas_Coord minw, minh; if ((!editable) || (!(sd = evas_object_smart_data_get(editable)))) return; if (sd->password_mode) { char *text; text = malloc((sd->unicode_length + 1) * sizeof(char)); memset(text, '*', sd->unicode_length * sizeof(char)); text[sd->unicode_length] = '\0'; edje_object_part_text_set(sd->text_object, "e.text.text", text); free(text); } else edje_object_part_text_set(sd->text_object, "e.text.text", sd->text); edje_object_size_min_calc(sd->text_object, &minw, &minh); evas_object_resize(sd->text_object, minw, minh); }
static void _elm_label_smart_sizing_eval(Evas_Object *obj) { Evas_Coord minw = -1, minh = -1; Evas_Coord resw, resh; ELM_LABEL_DATA_GET(obj, sd); if (sd->linewrap) { evas_object_geometry_get (ELM_WIDGET_DATA(sd)->resize_obj, NULL, NULL, &resw, &resh); if (resw == sd->lastw) return; sd->lastw = resw; _recalc(obj); } else { evas_event_freeze(evas_object_evas_get(obj)); evas_object_geometry_get (ELM_WIDGET_DATA(sd)->resize_obj, NULL, NULL, &resw, &resh); edje_object_size_min_calc (ELM_WIDGET_DATA(sd)->resize_obj, &minw, &minh); if (sd->wrap_w > 0 && minw > sd->wrap_w) minw = sd->wrap_w; evas_object_size_hint_min_set(obj, minw, minh); evas_event_thaw(evas_object_evas_get(obj)); evas_event_thaw_eval(evas_object_evas_get(obj)); } }
/* externally accessible functions */ EAPI Evas_Object * e_widget_frametable_add(Evas *evas, const char *label, int homogenous) { Evas_Object *obj, *o; E_Widget_Data *wd; Evas_Coord mw, mh; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); o = edje_object_add(evas); wd->o_frame = o; e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/frame"); edje_object_part_text_set(o, "e.text.label", label); evas_object_show(o); e_widget_sub_object_add(obj, o); e_widget_resize_object_set(obj, o); o = e_table_add(evas); wd->o_table = o; e_table_homogenous_set(o, homogenous); edje_object_part_swallow(wd->o_frame, "e.swallow.content", o); e_widget_sub_object_add(obj, o); evas_object_show(o); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); return obj; }
EAPI void e_widget_frametable_object_append(Evas_Object *obj, Evas_Object *sobj, int col, int row, int colspan, int rowspan, int fill_w, int fill_h, int expand_w, int expand_h) { E_Widget_Data *wd; Evas_Coord mw = 0, mh = 0; wd = e_widget_data_get(obj); e_table_pack(wd->o_table, sobj, col, row, colspan, rowspan); e_widget_size_min_get(sobj, &mw, &mh); e_table_pack_options_set(sobj, fill_w, fill_h, /* fill */ expand_w, expand_h, /* expand */ 0.5, 0.5, /* align */ mw, mh, /* min */ 99999, 99999 /* max */ ); e_table_size_min_get(wd->o_table, &mw, &mh); edje_extern_object_min_size_set(wd->o_table, mw, mh); edje_object_part_swallow(wd->o_frame, "e.swallow.content", wd->o_table); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); e_widget_sub_object_add(obj, sobj); evas_object_show(sobj); }
PREFIX value ml_edje_object_size_min_calc(value v_obj) { int w, h; edje_object_size_min_calc((Evas_Object*) v_obj, &w, &h); value v = caml_alloc(2, 0); Store_field(v, 0, Val_int(w)); Store_field(v, 1, Val_int(h)); return v; }
Evas_Object * e_widget_spectrum_add(Evas *evas, E_Color_Component mode, E_Color *cv) { Evas_Object *obj, *o; E_Widget_Data *wd; Evas_Coord mw, mh; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_focus_hook_set(obj, _e_wid_focus_hook); e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); e_widget_data_set(obj, wd); wd->cv = cv; wd->mode = mode; o = edje_object_add(evas); wd->o_edje = o; e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/spectrum"); evas_object_show(o); edje_object_size_min_calc(o, &mw, &mh); e_widget_size_min_set(obj, mw, mh); e_widget_sub_object_add(obj, o); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj); e_widget_resize_object_set(obj, o); evas_object_intercept_resize_callback_add(o, _e_wid_resize, wd); evas_object_intercept_move_callback_add(o, _e_wid_move, wd); o = e_spectrum_add(evas); e_spectrum_color_value_set(o, cv); e_spectrum_mode_set(o, mode); e_widget_sub_object_add(obj, o); evas_object_show(o); wd->o_spectrum = o; edje_object_part_swallow(wd->o_edje, "e.swallow.content", o); o = evas_object_rectangle_add(evas); evas_object_repeat_events_set(o, EINA_TRUE); evas_object_color_set(o, 0, 0, 0, 0); e_widget_sub_object_add(obj, o); evas_object_show(o); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_wid_cb_up, obj); wd->o_event = o; e_widget_spectrum_update(obj, 0); return obj; }
static void _sizing_eval(Evas_Object * obj) { Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1; edje_object_size_min_calc(wd->keypad, &minw, &minh); evas_object_size_hint_min_set(obj, minw, minh); evas_object_size_hint_max_set(obj, maxw, maxh); }
static void _gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient) { Instance *inst; Evas_Coord mw; if (!(inst = gcc->data)) return; edje_object_size_min_calc(inst->tclock, &mw, NULL); e_gadcon_client_min_size_set(gcc, mw, 16); }
static void _gc_orient (E_Gadcon_Client * gcc, E_Gadcon_Orient orient) { Instance *inst; Evas_Coord mw, mh; inst = gcc->data; edje_object_size_min_calc (inst->empris, &mw, &mh); e_gadcon_client_min_size_set (gcc, mw, mh); }
/* Text: width_get() */ static int _text_width_get(Etk_Tree_Model *model, void *cell_data, Evas_Object *cell_objects[ETK_TREE_MAX_OBJECTS_PER_MODEL]) { int w; if (!cell_objects[0]) return 0; edje_object_size_min_calc(cell_objects[0], &w, NULL); return w; }
/* externally accessible functions */ EAPI Evas_Object * e_widget_button_add(Evas *evas, const char *label, const char *icon, void (*func) (void *data, void *data2), void *data, void *data2) { Evas_Object *obj, *o; E_Widget_Data *wd; Evas_Coord mw, mh; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); e_widget_focus_hook_set(obj, _e_wid_focus_hook); e_widget_activate_hook_set(obj, _e_wid_activate_hook); e_widget_disable_hook_set(obj, _e_wid_disable_hook); wd = calloc(1, sizeof(E_Widget_Data)); wd->func = func; wd->data = data; wd->data2 = data2; e_widget_data_set(obj, wd); o = edje_object_add(evas); wd->o_button = o; e_theme_edje_object_set(o, "base/theme/widgets", "e/widgets/button"); edje_object_signal_callback_add(o, "e,action,click", "", _e_wid_signal_cb1, obj); if ((label) && (label[0] != 0)) { edje_object_part_text_set(o, "e.text.label", label); wd->type |= E_WIDGET_BUTTON_TEXT; } e_widget_sub_object_add(obj, o); evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_focus_steal, obj); e_widget_resize_object_set(obj, o); evas_object_show(o); if (icon) { o = e_icon_add(evas); wd->o_icon = o; e_util_icon_theme_set(o, icon); edje_object_part_swallow(wd->o_button, "e.swallow.icon", o); e_widget_sub_object_add(obj, o); evas_object_show(o); wd->type |= E_WIDGET_BUTTON_ICON; } _e_wid_button_state_send(wd); edje_object_size_min_calc(wd->o_button, &mw, &mh); e_widget_size_min_set(obj, mw, mh); return obj; }
static void _size_changed_cb(void *data, Evas_Object *layout, const char *emission, const char *source) { Evas_Object *edje; Evas_Coord w, h; elm_layout_sizing_eval(layout); edje = elm_layout_edje_get(layout); edje_object_size_min_calc(edje, &w, &h); printf("Minimum size for this theme: %dx%d\n", w, h); }
EAPI void e_widget_label_text_set(Evas_Object *obj, const char *text) { E_Widget_Data *wd; Evas_Coord mw, mh; wd = e_widget_data_get(obj); edje_object_part_text_set(wd->text, "e.text.label", text); edje_object_size_min_calc(wd->text, &mw, &mh); edje_extern_object_min_size_set(wd->text, mw, mh); }
E_API void e_widget_preview_size_set(Evas_Object *obj, int minw, int minh) { E_Widget_Data *wd; int mw, mh; wd = e_widget_data_get(obj); e_livethumb_vsize_set(wd->img, minw * 2, minh * 2); evas_object_size_hint_min_set(wd->img, minw, minh); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); }
static void _gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient EINA_UNUSED) { Evas_Coord mw, mh; edje_object_size_min_get(gcc->o_base, &mw, &mh); if ((mw < 1) || (mh < 1)) edje_object_size_min_calc(gcc->o_base, &mw, &mh); if (mw < 4) mw = 4; if (mh < 4) mh = 4; e_gadcon_client_aspect_set(gcc, mw, mh); e_gadcon_client_min_size_set(gcc, mw, mh); }
static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord minw = -1, minh = -1; Evas_Coord cminw = -1, cminh = -1; if (!wd) return; edje_object_size_min_calc(wd->frm, &minw, &minh); evas_object_size_hint_min_get(obj, &cminw, &cminh); if ((minw == cminw) && (minh == cminh)) return; evas_object_size_hint_min_set(obj, minw, minh); evas_object_size_hint_max_set(obj, -1, -1); }
static void _populate(app_t *app) { FILE *fp; if (app->infile) { fp = fopen(app->infile, "r"); if (fp == NULL) { fprintf(stderr, "Could not open file for reading \"%s\": %s\n", app->infile, strerror(errno)); return; } } else { fprintf(stderr, "No input file provided, reading from stdin.\n"); fp = stdin; } while (!feof(fp)) { Evas_Object *obj; Evas_Coord w, h; char *line; unsigned n; int i; n = 0; line = NULL; i = getline(&line, &n, fp); if (i < 0) break; if (i == 0) { free(line); continue; } line[i - 1] = '\0'; obj = _new_list_item(app, line); e_box_pack_end(app->e_box, obj); edje_object_size_min_calc(obj, &w, &h); e_box_pack_options_set(obj, 1, 1, 1, 0, 0.0, 0.5, w, h, 9999, h); evas_object_show(obj); free(line); } if (fp != stdin) fclose(fp); e_box_align_set(app->e_box, 0.0, 1.0); app->current = 0; }
//Calculate the size of the menu, resize it and display the arrows if needed static void _eclair_menu_recalc(Eclair_Menu *menu) { Eina_List *l; Eclair_Menu_Item *item; int w = 0, h = 0, item_w; int display_arrows = 0, display_icons = 0; if (!menu) return; //First we show/hide the arrows/icons for (l = menu->items; l; l = l->next) { if (!(item = l->data)) continue; display_arrows |= (item->child != NULL); display_icons |= (item->type != ECLAIR_MENU_ITEM_NORMAL_ITEM && item->type != ECLAIR_MENU_ITEM_SEPARATOR_ITEM); } for (l = menu->items; l; l = l->next) { if (!(item = l->data)) continue; if (!display_arrows) edje_object_signal_emit(item->edje_object, "signal_arrow_invisible", "eclair_bin"); else if (item->child) edje_object_signal_emit(item->edje_object, "signal_arrow_visible", "eclair_bin"); else edje_object_signal_emit(item->edje_object, "signal_arrow_spacer", "eclair_bin"); if (display_icons) edje_object_signal_emit(item->edje_object, "signal_icon_visible", "eclair_bin"); else edje_object_signal_emit(item->edje_object, "signal_icon_invisible", "eclair_bin"); } //Then we resize the menu for (l = menu->items; l; l = l->next) { if (!(item = l->data)) continue; edje_object_size_min_calc(item->edje_object, &item_w, &item->height); if (w < item_w) w = item_w; h += item->height; } ecore_evas_resize(menu->window, w, h); }
/* Text: render() */ static Etk_Bool _text_render(Etk_Tree_Model *model, Etk_Tree_Row *row, Etk_Geometry geometry, void *cell_data, Evas_Object *cell_objects[ETK_TREE_MAX_OBJECTS_PER_MODEL], Evas *evas) { char **text_data; int th; if (!(text_data = cell_data) || !cell_objects[0]) return ETK_FALSE; edje_object_part_text_set(cell_objects[0], "etk.text.label", *text_data); edje_object_size_min_calc(cell_objects[0], NULL, &th); evas_object_move(cell_objects[0], geometry.x, geometry.y + ((geometry.h - th) / 2)); evas_object_resize(cell_objects[0], geometry.w, geometry.h); evas_object_show(cell_objects[0]); return ETK_FALSE; }
EAPI void e_widget_button_label_set(Evas_Object *obj, const char *label) { E_Widget_Data *wd; int mw, mh; wd = e_widget_data_get(obj); edje_object_part_text_set(wd->o_button, "e.text.label", label); if ((label) && (label[0] != 0)) wd->type |= E_WIDGET_BUTTON_TEXT; else wd->type = ~(wd->type & E_WIDGET_BUTTON_TEXT); _e_wid_button_state_send(wd); edje_object_size_min_calc(wd->o_button, &mw, &mh); e_widget_size_min_set(obj, mw, mh); }
static void _empris_popup_create (Instance * inst, const char *dir) { Evas *evas; Evas_Object *o_popup; char buf[4096]; if (inst->ci->show_popup) { inst->popup = e_gadcon_popup_new (inst->gcc); evas = inst->popup->win->evas; o_popup = edje_object_add (evas); if (!e_theme_edje_object_set (o_popup, "base/theme/modules/empris", "modules/empris/popup")) { if (dir) { edje_object_file_set (o_popup, dir, "modules/empris/popup"); } else { snprintf(buf, sizeof(buf), "%s/empris.edj", e_module_dir_get(empris_config->module)); edje_object_file_set(o_popup, buf, "modules/empris/popup"); } } evas_object_show (o_popup); e_gadcon_popup_content_set (inst->popup, o_popup); edje_object_size_min_calc (o_popup, NULL, NULL); inst->o_popup = o_popup; edje_object_signal_callback_add (o_popup, "empris,play", "", _empris_cb_play, inst); edje_object_signal_callback_add (o_popup, "empris,stop", "", _empris_cb_stop, inst); edje_object_signal_callback_add (o_popup, "empris,pause", "", _empris_cb_pause, inst); edje_object_signal_callback_add (o_popup, "empris,next", "", _empris_cb_next, inst); edje_object_signal_callback_add (o_popup, "empris,previous", "", _empris_cb_previous, inst); } else { inst->popup = NULL; inst->o_popup = NULL; } }
EAPI void e_icon_size_get(const Evas_Object *obj, int *w, int *h) { E_Smart_Data *sd; if (evas_object_smart_smart_get(obj) != _e_smart) SMARTERRNR(); if (!(sd = evas_object_smart_data_get(obj))) { if (w) *w = 0; if (h) *h = 0; return; } if (sd->edje) edje_object_size_min_calc(sd->obj, w, h); else evas_object_image_size_get(sd->obj, w, h); }
/* Double: render() */ static Etk_Bool _double_render(Etk_Tree_Model *model, Etk_Tree_Row *row, Etk_Geometry geometry, void *cell_data, Evas_Object *cell_objects[ETK_TREE_MAX_OBJECTS_PER_MODEL], Evas *evas) { double *double_data; char string[256]; int th; if (!(double_data = cell_data) || !model || !cell_objects[0]) return ETK_FALSE; snprintf(string, 255, "%.2f", *double_data); edje_object_part_text_set(cell_objects[0], "etk.text.label", string); edje_object_size_min_calc(cell_objects[0], NULL, &th); evas_object_move(cell_objects[0], geometry.x, geometry.y + ((geometry.h - th) / 2)); evas_object_resize(cell_objects[0], geometry.w, geometry.h); evas_object_show(cell_objects[0]); return ETK_FALSE; }
static void _gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient EINA_UNUSED) { Instance *inst; Evas_Coord mw, mh, mxw, mxh; inst = gcc->data; mw = 0, mh = 0; edje_object_size_min_get(inst->o_battery, &mw, &mh); edje_object_size_max_get(inst->o_battery, &mxw, &mxh); if ((mw < 1) || (mh < 1)) edje_object_size_min_calc(inst->o_battery, &mw, &mh); if (mw < 4) mw = 4; if (mh < 4) mh = 4; if ((mxw > 0) && (mxh > 0)) e_gadcon_client_aspect_set(gcc, mxw, mxh); e_gadcon_client_min_size_set(gcc, mw, mh); }
/* Private Functions */ static void _e_toolbar_smart_add(Evas_Object *obj) { Evas *evas; E_Toolbar_Smart_Data *sd; Evas_Object *o; char buf[4096]; if ((!obj) || !(evas = evas_object_evas_get(obj))) return; sd = malloc(sizeof(E_Toolbar_Smart_Data)); if (!sd) return; sd->valign = 0.0; sd->path = NULL; evas_object_smart_data_set(obj, sd); snprintf(buf, sizeof(buf), "%s/fileman.edj", e_module_dir_get(conf_module)); o = edje_object_add(evas); sd->o_base = o; if (!e_theme_edje_object_set(o, "base/theme/modules/fileman", "modules/fileman/toolbar")) edje_object_file_set(o, buf, "modules/fileman/toolbar"); evas_object_smart_member_add(o, obj); edje_object_size_min_calc(o, &sd->w, &sd->h); o = e_widget_button_add(evas, _("Up"), "widget/up_dir", _e_toolbar_btn_cb, obj, NULL); sd->o_btn = o; edje_object_part_swallow(sd->o_base, "e.swallow.button", o); evas_object_show(o); edje_object_part_text_set(sd->o_base, "e.text.location", _("Location:")); o = e_widget_entry_add(evas, &(sd->path), NULL, NULL, NULL); sd->o_entry = o; edje_object_part_swallow(sd->o_base, "e.swallow.entry", o); evas_object_show(o); evas_object_smart_callback_add(sd->o_entry, "key_down", _e_toolbar_key_down_cb, obj); }
static void _e_gadcon_popup_size_recalc(E_Gadcon_Popup *pop, Evas_Object *obj) { Evas_Coord w = 0, h = 0; e_widget_size_min_get(obj, &w, &h); if ((!w) || (!h)) evas_object_size_hint_min_get(obj, &w, &h); if ((!w) || (!h)) { edje_object_size_min_get(obj, &w, &h); edje_object_size_min_restricted_calc(obj, &w, &h, w, h); } edje_extern_object_min_size_set(obj, w, h); edje_object_size_min_calc(pop->o_bg, &pop->w, &pop->h); evas_object_resize(pop->o_bg, pop->w, pop->h); if (pop->win->visible) _e_gadcon_popup_position(pop); }
EAPI void e_widget_frametable_object_append_full(Evas_Object *obj, Evas_Object *sobj, int col, int row, int colspan, int rowspan, int fill_w, int fill_h, int expand_w, int expand_h, double align_x, double align_y, Evas_Coord min_w, Evas_Coord min_h, Evas_Coord max_w, Evas_Coord max_h) { E_Widget_Data *wd = e_widget_data_get(obj); Evas_Coord mw = 0, mh = 0; e_table_pack(wd->o_table, sobj, col, row, colspan, rowspan); e_table_pack_options_set(sobj, fill_w, fill_h, expand_w, expand_h, align_x, align_y, min_w, min_h, max_w, max_h ); e_table_size_min_get(wd->o_table, &mw, &mh); edje_extern_object_min_size_set(wd->o_table, mw, mh); edje_object_part_swallow(wd->o_frame, "e.swallow.content", wd->o_table); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); e_widget_sub_object_add(obj, sobj); evas_object_show(sobj); }
/* externally accessible functions */ EAPI Evas_Object * e_widget_preview_add(Evas *evas, int minw, int minh) { Evas_Object *obj; E_Widget_Data *wd; Evas_Coord mw, mh; obj = e_widget_add(evas); e_widget_del_hook_set(obj, _e_wid_del_hook); wd = E_NEW(E_Widget_Data, 1); if (!wd) return NULL; wd->obj = obj; wd->o_frame = edje_object_add(evas); e_theme_edje_object_set(wd->o_frame, "base/theme/widgets", "e/widgets/preview"); evas_object_show(wd->o_frame); e_widget_sub_object_add(obj, wd->o_frame); e_widget_resize_object_set(obj, wd->o_frame); wd->img = e_livethumb_add(evas); e_livethumb_vsize_set(wd->img, minw * 2, minh * 2); edje_extern_object_min_size_set(wd->img, minw, minh); /* Why do we set max size? This prevents from being nicely resized. */ /* edje_extern_object_max_size_set(o, minw, minh); */ // evas_object_show(wd->img); edje_object_part_swallow(wd->o_frame, "e.swallow.content", wd->img); e_widget_sub_object_add(obj, wd->img); e_widget_data_set(obj, wd); e_widget_can_focus_set(obj, 0); edje_object_size_min_calc(wd->o_frame, &mw, &mh); e_widget_size_min_set(obj, mw, mh); return obj; }