EAPI void e_obj_dialog_show(E_Obj_Dialog *od) { Evas_Coord w, h, mw, mh; const char *s; E_OBJECT_CHECK(od); E_OBJECT_TYPE_CHECK(od, E_OBJ_DIALOG_TYPE); edje_object_size_min_get(od->bg_object, &mw, &mh); edje_object_size_min_restricted_calc(od->bg_object, &mw, &mh, mw, mh); evas_object_resize(od->bg_object, mw, mh); e_win_resize(od->win, mw, mh); e_win_size_min_set(od->win, mw, mh); edje_object_size_max_get(od->bg_object, &w, &h); if ((w > 0) && (h > 0)) { if (w < mw) w = mw; if (h < mh) h = mh; e_win_size_max_set(od->win, w, h); } s = edje_object_data_get(od->bg_object, "borderless"); if (s && (!strcmp(s, "1"))) e_win_borderless_set(od->win, 1); s = edje_object_data_get(od->bg_object, "shaped"); if (s && (!strcmp(s, "1"))) e_win_shaped_set(od->win, 1); e_win_show(od->win); }
EAPI void e_popup_edje_bg_object_set(E_Popup *pop, Evas_Object *o) { const char *shape_option; E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE); shape_option = edje_object_data_get(o, "shaped"); if (shape_option) { if (!strcmp(shape_option, "1")) pop->shaped = 1; else pop->shaped = 0; if (e_config->use_composite) { ecore_evas_alpha_set(pop->ecore_evas, pop->shaped); eina_hash_del(_e_popup_hash, e_util_winid_str_get(pop->evas_win), pop); pop->evas_win = ecore_evas_software_x11_window_get(pop->ecore_evas); eina_hash_add(_e_popup_hash, e_util_winid_str_get(pop->evas_win), pop); e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer); } else ecore_evas_shaped_set(pop->ecore_evas, pop->shaped); } }
EAPI void e_obj_dialog_obj_part_text_set(E_Obj_Dialog *od, char *part, char *text) { E_OBJECT_CHECK(od); E_OBJECT_TYPE_CHECK(od, E_OBJ_DIALOG_TYPE); edje_object_part_text_set(od->bg_object, part, text); }
EAPI void e_popup_layer_set(E_Popup *pop, int layer) { E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE); pop->layer = layer; e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer); }
EAPI void e_popup_resize(E_Popup *pop, int w, int h) { E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE); if ((pop->w == w) && (pop->h == h)) return; pop->w = w; pop->h = h; ecore_evas_resize(pop->ecore_evas, pop->w, pop->h); e_container_shape_resize(pop->shape, pop->w, pop->h); }
EAPI void e_gadcon_popup_hide(E_Gadcon_Popup *pop) { if (!pop) return; E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE); if (pop->pinned) return; e_popup_hide(pop->win); if (pop->gadcon_was_locked) _e_gadcon_popup_locked_set(pop, 0); }
EAPI void e_obj_dialog_obj_theme_set(E_Obj_Dialog *od, char *theme_cat, char *theme_obj) { E_OBJECT_CHECK(od); E_OBJECT_TYPE_CHECK(od, E_OBJ_DIALOG_TYPE); e_theme_edje_object_set(od->bg_object, theme_cat, theme_obj); evas_object_move(od->bg_object, 0, 0); evas_object_show(od->bg_object); edje_object_signal_callback_add(od->bg_object, "e,action,close", "", _e_obj_dialog_cb_close, od); }
EAPI void e_popup_hide(E_Popup *pop) { E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE); if (!pop->visible) return; if (pop->idle_enterer) ecore_idle_enterer_del(pop->idle_enterer); pop->idle_enterer = NULL; pop->visible = 0; ecore_evas_hide(pop->ecore_evas); e_container_shape_hide(pop->shape); }
EAPI void e_gadcon_popup_show(E_Gadcon_Popup *pop) { if (!pop) return; E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE); if (pop->win->visible) return; e_popup_show(pop->win); _e_gadcon_popup_position(pop); }
EAPI void e_obj_dialog_icon_set(E_Obj_Dialog *od, char *icon) { E_OBJECT_CHECK(od); E_OBJECT_TYPE_CHECK(od, E_OBJ_DIALOG_TYPE); if (od->win->border->internal_icon) { eina_stringshare_del(od->win->border->internal_icon); od->win->border->internal_icon = NULL; } if (icon) od->win->border->internal_icon = eina_stringshare_add(icon); }
/* taken from e_int_menus */ static void _itask_menu_icon_cb(void *data, E_Menu *m, E_Menu_Item *mi) { E_Border *bd; Evas_Object *o; bd = data; E_OBJECT_CHECK(bd); o = e_icon_add(m->evas); e_icon_object_set(o, e_border_icon_add(bd, m->evas)); mi->icon_object = o; }
EAPI void e_gadcon_popup_lock_set(E_Gadcon_Popup *pop, Eina_Bool setting) { if (!pop) return; E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE); setting = !!setting; if (pop->gadcon_lock == setting) return; pop->gadcon_lock = setting; if (setting != pop->gadcon_was_locked) _e_gadcon_popup_locked_set(pop, setting); }
EAPI void e_popup_move(E_Popup *pop, int x, int y) { E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE); if ((pop->x == x) && (pop->y == y)) return; pop->x = x; pop->y = y; ecore_evas_move(pop->ecore_evas, pop->zone->x + pop->x, pop->zone->y + pop->y); e_container_shape_move(pop->shape, pop->zone->x + pop->x, pop->zone->y + pop->y); }
EAPI void e_gadcon_popup_toggle_pinned(E_Gadcon_Popup *pop) { if (!pop) return; E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE); if (pop->pinned) { pop->pinned = 0; edje_object_signal_emit(pop->o_bg, "e,state,unpinned", "e"); } else { pop->pinned = 1; edje_object_signal_emit(pop->o_bg, "e,state,pinned", "e"); } }
/* taken from e_int_menus */ static void _itask_menu_item_cb(void *data, E_Menu *m, E_Menu_Item *mi) { Itask_Item *ic; E_Border *bd; ic = data; bd = ic->border; E_OBJECT_CHECK(bd); if (bd->iconic) { if (!bd->lock_user_iconify) e_border_uniconify(bd); } e_desk_show(bd->desk); if (!bd->lock_user_stacking) e_border_raise(bd); }
EAPI void e_popup_move_resize(E_Popup *pop, int x, int y, int w, int h) { E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE); if ((pop->x == x) && (pop->y == y) && (pop->w == w) && (pop->h == h)) return; pop->x = x; pop->y = y; pop->w = w; pop->h = h; ecore_evas_move_resize(pop->ecore_evas, pop->zone->x + pop->x, pop->zone->y + pop->y, pop->w, pop->h); e_container_shape_move(pop->shape, pop->zone->x + pop->x, pop->zone->y + pop->y); e_container_shape_resize(pop->shape, pop->w, pop->h); }
EAPI void e_place_zone_region_smart_cleanup(E_Zone *zone) { E_Desk *desk; Eina_List *borders = NULL; E_Border_List *bl; E_Border *border; E_OBJECT_CHECK(zone); desk = e_desk_current_get(zone); bl = e_container_border_list_first(desk->zone->container); while ((border = e_container_border_list_next(bl))) { /* Build a list of windows on this desktop and not iconified. */ if ((border->desk == desk) && (!border->iconic) && (!border->lock_user_location)) { int area; Eina_List *ll; E_Border *bd; /* Ordering windows largest to smallest gives better results */ area = border->w * border->h; EINA_LIST_FOREACH(borders, ll, bd) { int testarea; testarea = bd->w * bd->h; /* Insert the border if larger than the current border */ if (area >= testarea) { borders = eina_list_prepend_relative(borders, border, bd); break; } } /* Looped over all borders without placing, so place at end */ if (!ll) borders = eina_list_append(borders, border); }
EAPI void e_popup_show(E_Popup *pop) { E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_POPUP_TYPE); if (pop->visible) return; pop->visible = 1; if ((pop->shaped) && (!e_config->use_composite)) { ecore_evas_move(pop->ecore_evas, pop->zone->container->manager->w, pop->zone->container->manager->h); ecore_evas_show(pop->ecore_evas); if (pop->idle_enterer) ecore_idle_enterer_del(pop->idle_enterer); pop->idle_enterer = ecore_idle_enterer_add(_e_popup_idle_enterer, pop); } else { ecore_evas_show(pop->ecore_evas); if (!(pop->shaped && e_config->use_composite)) e_container_shape_show(pop->shape); } }
EAPI void e_gadcon_popup_content_set(E_Gadcon_Popup *pop, Evas_Object *o) { Evas_Object *old_o; if (!pop) return; E_OBJECT_CHECK(pop); E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE); old_o = edje_object_part_swallow_get(pop->o_bg, "e.swallow.content"); if (old_o != o) { if (old_o) { edje_object_part_unswallow(pop->o_bg, old_o); evas_object_del(old_o); } edje_object_part_swallow(pop->o_bg, "e.swallow.content", o); evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _e_gadcon_popup_changed_size_hints_cb, pop); } _e_gadcon_popup_size_recalc(pop, o); }