forked from enlightenment/enlightenment
parent
36c6082b05
commit
fe9b6df746
|
@ -9,18 +9,16 @@ static void _e_gadcon_popup_free(E_Gadcon_Popup *pop);
|
|||
/* externally accessible functions */
|
||||
|
||||
EAPI E_Gadcon_Popup *
|
||||
e_gadcon_popup_new(
|
||||
E_Gadcon_Client *gcc,
|
||||
void (*resize_func) (Evas_Object *obj, int *w, int *h))
|
||||
e_gadcon_popup_new(E_Gadcon_Client *gcc, void (*resize_func) (Evas_Object *obj, int *w, int *h))
|
||||
{
|
||||
E_Gadcon_Popup *pop;
|
||||
Evas_Object *o;
|
||||
|
||||
E_Zone *zone;
|
||||
|
||||
pop = E_OBJECT_ALLOC(E_Gadcon_Popup, E_GADCON_POPUP_TYPE, _e_gadcon_popup_free);
|
||||
if (!pop) return NULL;
|
||||
pop->win = e_popup_new(
|
||||
e_zone_current_get(e_container_current_get(e_manager_current_get())),
|
||||
0, 0, 0, 0);
|
||||
zone = e_util_zone_current_get(e_manager_current_get());
|
||||
pop->win = e_popup_new(zone, 0, 0, 0, 0);
|
||||
e_popup_layer_set(pop->win, 990);
|
||||
|
||||
o = edje_object_add(pop->win->evas);
|
||||
|
@ -53,8 +51,7 @@ e_gadcon_popup_content_set(E_Gadcon_Popup *pop, Evas_Object *o)
|
|||
evas_object_del(old_o);
|
||||
}
|
||||
e_widget_min_size_get(o, &w, &h);
|
||||
if (!w || !h)
|
||||
edje_object_size_min_calc(o, &w, &h);
|
||||
if (!w || !h) edje_object_size_min_calc(o, &w, &h);
|
||||
edje_extern_object_min_size_set(o, w, h);
|
||||
edje_object_part_swallow(pop->o_bg, "e.swallow.content", o);
|
||||
edje_object_size_min_calc(pop->o_bg, &pop->w, &pop->h);
|
||||
|
@ -78,8 +75,7 @@ e_gadcon_popup_show(E_Gadcon_Popup *pop)
|
|||
Evas_Coord w = 0, h = 0;
|
||||
|
||||
e_widget_min_size_get(o, &w, &h);
|
||||
if (!w || !h)
|
||||
edje_object_size_min_calc(o, &w, &h);
|
||||
if (!w || !h) edje_object_size_min_calc(o, &w, &h);
|
||||
edje_extern_object_min_size_set(o, w, h);
|
||||
}
|
||||
|
||||
|
@ -101,39 +97,39 @@ e_gadcon_popup_show(E_Gadcon_Popup *pop)
|
|||
case E_GADCON_ORIENT_CORNER_RT:
|
||||
case E_GADCON_ORIENT_CORNER_RB:
|
||||
case E_GADCON_ORIENT_RIGHT:
|
||||
px = gx - pop->w;
|
||||
py = gy;
|
||||
if (py + pop->h >= zh)
|
||||
py = gy + gh - pop->h;
|
||||
break;
|
||||
px = gx - pop->w;
|
||||
py = gy;
|
||||
if (py + pop->h >= zh)
|
||||
py = gy + gh - pop->h;
|
||||
break;
|
||||
case E_GADCON_ORIENT_LEFT:
|
||||
case E_GADCON_ORIENT_CORNER_LT:
|
||||
case E_GADCON_ORIENT_CORNER_LB:
|
||||
px = gx + gw;
|
||||
py = gy;
|
||||
if (py + pop->h >= zh)
|
||||
py = gy + gh - pop->h;
|
||||
break;
|
||||
break;
|
||||
px = gx + gw;
|
||||
py = gy;
|
||||
if (py + pop->h >= zh)
|
||||
py = gy + gh - pop->h;
|
||||
break;
|
||||
break;
|
||||
case E_GADCON_ORIENT_TOP:
|
||||
case E_GADCON_ORIENT_CORNER_TL:
|
||||
case E_GADCON_ORIENT_CORNER_TR:
|
||||
py = gy + gh;
|
||||
px = gx;
|
||||
if (px + pop->w >= zw)
|
||||
px = gx + gw - pop->w;
|
||||
break;
|
||||
py = gy + gh;
|
||||
px = gx;
|
||||
if (px + pop->w >= zw)
|
||||
px = gx + gw - pop->w;
|
||||
break;
|
||||
case E_GADCON_ORIENT_BOTTOM:
|
||||
case E_GADCON_ORIENT_CORNER_BL:
|
||||
case E_GADCON_ORIENT_CORNER_BR:
|
||||
py = gy - pop->h;
|
||||
px = gx;
|
||||
if (px + pop->w >= zw)
|
||||
px = gx + gw - pop->w;
|
||||
break;
|
||||
py = gy - pop->h;
|
||||
px = gx;
|
||||
if (px + pop->w >= zw)
|
||||
px = gx + gw - pop->w;
|
||||
break;
|
||||
default:
|
||||
e_popup_move_resize(pop->win, 50, 50, pop->w, pop->h);
|
||||
return;
|
||||
e_popup_move_resize(pop->win, 50, 50, pop->w, pop->h);
|
||||
return;
|
||||
}
|
||||
e_popup_move_resize(pop->win, px, py, pop->w, pop->h);
|
||||
}
|
||||
|
@ -155,13 +151,16 @@ e_gadcon_popup_toggle_pinned(E_Gadcon_Popup *pop)
|
|||
E_OBJECT_CHECK(pop);
|
||||
E_OBJECT_TYPE_CHECK(pop, E_GADCON_POPUP_TYPE);
|
||||
|
||||
if (pop->pinned) {
|
||||
if (pop->pinned)
|
||||
{
|
||||
pop->pinned = 0;
|
||||
edje_object_signal_emit(pop->o_bg, "e,state,unpinned", "e");
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
pop->pinned = 1;
|
||||
edje_object_signal_emit(pop->o_bg, "e,state,pinned", "e");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
|
@ -172,9 +171,7 @@ _e_gadcon_popup_free(E_Gadcon_Popup *pop)
|
|||
pop->gcc = NULL;
|
||||
e_object_del(E_OBJECT(pop->win));
|
||||
if (pop->pinned) e_gadcon_popup_toggle_pinned(pop);
|
||||
if (pop->o_bg)
|
||||
evas_object_del(pop->o_bg);
|
||||
if (pop->o_con)
|
||||
evas_object_del(pop->o_con);
|
||||
if (pop->o_bg) evas_object_del(pop->o_bg);
|
||||
if (pop->o_con) evas_object_del(pop->o_con);
|
||||
free(pop);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue