/* FIXME: replicated from elm_layout just because button's icon spot * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we * can changed the theme API */ static void _icon_signal_emit(Evas_Object *obj) { char buf[64]; snprintf(buf, sizeof(buf), "elm,state,icon,%s", elm_layout_content_get(obj, "icon") ? "visible" : "hidden"); elm_layout_signal_emit(obj, buf, "elm"); edje_object_message_signal_process(elm_layout_edje_get(obj)); _elm_button_smart_sizing_eval(obj); }
#define MY_CLASS_NAME_LEGACY "elm_inwin" static const Elm_Layout_Part_Alias_Description _content_aliases[] = { {"default", "elm.swallow.content"}, {NULL, NULL} }; static void _elm_inwin_smart_sizing_eval(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) { Evas_Object *content; Evas_Coord minw = -1, minh = -1; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); content = elm_layout_content_get(obj, NULL); if (!content) return; evas_object_size_hint_min_get(content, &minw, &minh); edje_object_size_min_calc(wd->resize_obj, &minw, &minh); evas_object_size_hint_min_set(obj, minw, minh); evas_object_size_hint_max_set(obj, -1, -1); } static void _elm_inwin_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) { Eina_Bool *ret = va_arg(*list, Eina_Bool *); *ret = EINA_TRUE;
static void _elm_panes_smart_focus_next(Eo *obj, void *_pd, va_list *list) { double w, h; unsigned char i; Evas_Object *to_focus; Evas_Object *chain[2]; Evas_Object *left, *right; Elm_Panes_Smart_Data *sd = _pd; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); Elm_Focus_Direction dir = va_arg(*list, Elm_Focus_Direction); Evas_Object **next = va_arg(*list, Evas_Object **); Eina_Bool *ret = va_arg(*list, Eina_Bool *); if (ret) *ret = EINA_FALSE; Eina_Bool int_ret = EINA_FALSE; edje_object_part_drag_value_get (wd->resize_obj, "elm.bar", &w, &h); left = elm_layout_content_get(obj, "left"); right = elm_layout_content_get(obj, "right"); if (((sd->horizontal) && (h == 0.0)) || ((!sd->horizontal) && (w == 0.0))) { int_ret = elm_widget_focus_next_get(right, dir, next); if (ret) *ret = int_ret; return; } /* Direction */ if (dir == ELM_FOCUS_PREVIOUS) { chain[0] = right; chain[1] = left; } else if (dir == ELM_FOCUS_NEXT) { chain[0] = left; chain[1] = right; } else return; i = elm_widget_focus_get(chain[1]); if (elm_widget_focus_next_get(chain[i], dir, next)) { if (ret) *ret = EINA_TRUE; return; } i = !i; if (elm_widget_focus_next_get(chain[i], dir, &to_focus)) { *next = to_focus; if (ret) *ret = !!i; return; } }