forked from enlightenment/enlightenment
and in case an object is deleted clear out the gadcon as well
SVN revision: 33915
This commit is contained in:
parent
40a179e870
commit
91ede9eacc
|
@ -54,6 +54,8 @@ static void _e_gadcon_client_cb_menu_resizable(void *data, E_Menu *m, E_Menu_Ite
|
|||
static void _e_gadcon_client_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_gadcon_client_cb_menu_remove(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static void _e_gadcon_client_del_hook(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
|
||||
static Evas_Object *e_gadcon_layout_add(Evas *evas);
|
||||
static void e_gadcon_layout_orientation_set(Evas_Object *obj, int horizontal);
|
||||
static int e_gadcon_layout_orientation_get(Evas_Object *obj);
|
||||
|
@ -402,9 +404,9 @@ e_gadcon_populate(E_Gadcon *gc)
|
|||
gcc->state_info.flags = cf_gcc->state_info.flags;
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_frame, gcc);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_base, gcc);
|
||||
|
||||
|
||||
e_gadcon_client_autoscroll_set(gcc, cf_gcc->autoscroll);
|
||||
e_gadcon_client_resizable_set(gcc, cf_gcc->resizable);
|
||||
if (gcc->client_class->func.orient)
|
||||
|
@ -471,7 +473,7 @@ e_gadcon_populate_class(E_Gadcon *gc, const E_Gadcon_Client_Class *cc)
|
|||
gcc->state_info.flags = cf_gcc->state_info.flags;
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_frame, gcc);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_options_set(gcc->o_base, gcc);
|
||||
|
||||
if (gcc->client_class->func.orient)
|
||||
|
@ -755,6 +757,9 @@ e_gadcon_client_new(E_Gadcon *gc, const char *name, const char *id, const char *
|
|||
gc->clients = evas_list_append(gc->clients, gcc);
|
||||
/* This must only be unique during runtime */
|
||||
gcc->id = E_GADCON_CLIENT(evas_list_last(gc->clients))->id + 1;
|
||||
if (gcc->o_base)
|
||||
evas_object_event_callback_add(gcc->o_base, EVAS_CALLBACK_DEL,
|
||||
_e_gadcon_client_del_hook, gcc);
|
||||
if ((gc->frame_request.func) && (style))
|
||||
{
|
||||
gcc->o_frame = gc->frame_request.func(gc->frame_request.data, gcc, style);
|
||||
|
@ -793,14 +798,17 @@ e_gadcon_client_new(E_Gadcon *gc, const char *name, const char *id, const char *
|
|||
_e_gadcon_cb_client_frame_moveresize, gcc);
|
||||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_e_gadcon_cb_client_frame_mouse_move, gcc);
|
||||
e_box_pack_end(gcc->o_box, gcc->o_base);
|
||||
e_box_pack_options_set(gcc->o_base,
|
||||
1, 1, /* fill */
|
||||
1, 1, /* expand */
|
||||
0.5, 0.5, /* align */
|
||||
0, 0, /* min */
|
||||
-1, -1 /* max */
|
||||
);
|
||||
if (gcc->o_base)
|
||||
{
|
||||
e_box_pack_end(gcc->o_box, gcc->o_base);
|
||||
e_box_pack_options_set(gcc->o_base,
|
||||
1, 1, /* fill */
|
||||
1, 1, /* expand */
|
||||
0.5, 0.5, /* align */
|
||||
0, 0, /* min */
|
||||
-1, -1 /* max */
|
||||
);
|
||||
}
|
||||
edje_object_part_swallow(gcc->o_frame, gc->edje.swallow_name, gcc->o_box);
|
||||
evas_object_show(gcc->o_box);
|
||||
evas_object_show(gcc->o_frame);
|
||||
|
@ -808,9 +816,9 @@ e_gadcon_client_new(E_Gadcon *gc, const char *name, const char *id, const char *
|
|||
}
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack(gc->o_container, gcc->o_frame);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack(gc->o_container, gcc->o_base);
|
||||
evas_object_show(gcc->o_base);
|
||||
if (gcc->o_base) evas_object_show(gcc->o_base);
|
||||
return gcc;
|
||||
}
|
||||
|
||||
|
@ -830,7 +838,7 @@ e_gadcon_client_edit_begin(E_Gadcon_Client *gcc)
|
|||
evas_object_layer_set(gcc->o_control, 100);
|
||||
if (gcc->o_frame)
|
||||
evas_object_geometry_get(gcc->o_frame, &x, &y, &w, &h);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
evas_object_geometry_get(gcc->o_base, &x, &y, &w, &h);
|
||||
evas_object_move(gcc->o_control, x, y);
|
||||
evas_object_resize(gcc->o_control, w, h);
|
||||
|
@ -898,7 +906,7 @@ e_gadcon_client_edit_begin(E_Gadcon_Client *gcc)
|
|||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_MOVE, _e_gadcon_cb_client_move, gcc);
|
||||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_RESIZE, _e_gadcon_cb_client_resize, gcc);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
{
|
||||
evas_object_event_callback_add(gcc->o_base, EVAS_CALLBACK_MOVE, _e_gadcon_cb_client_move, gcc);
|
||||
evas_object_event_callback_add(gcc->o_base, EVAS_CALLBACK_RESIZE, _e_gadcon_cb_client_resize, gcc);
|
||||
|
@ -921,7 +929,7 @@ e_gadcon_client_edit_end(E_Gadcon_Client *gcc)
|
|||
evas_object_event_callback_del(gcc->o_frame, EVAS_CALLBACK_MOVE, _e_gadcon_cb_client_move);
|
||||
evas_object_event_callback_del(gcc->o_frame, EVAS_CALLBACK_RESIZE, _e_gadcon_cb_client_resize);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
{
|
||||
evas_object_event_callback_del(gcc->o_base, EVAS_CALLBACK_MOVE, _e_gadcon_cb_client_move);
|
||||
evas_object_event_callback_del(gcc->o_base, EVAS_CALLBACK_RESIZE, _e_gadcon_cb_client_resize);
|
||||
|
@ -963,7 +971,7 @@ e_gadcon_client_show(E_Gadcon_Client *gcc)
|
|||
e_gadcon_layout_pack(gcc->gadcon->o_container, gcc->o_frame);
|
||||
e_gadcon_layout_pack_options_set(gcc->o_frame, gcc);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
{
|
||||
e_gadcon_layout_pack(gcc->gadcon->o_container, gcc->o_base);
|
||||
e_gadcon_layout_pack_options_set(gcc->o_base, gcc);
|
||||
|
@ -982,7 +990,7 @@ e_gadcon_client_hide(E_Gadcon_Client *gcc)
|
|||
if (gcc->o_event) evas_object_hide(gcc->o_event);
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_unpack(gcc->o_frame);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_unpack(gcc->o_base);
|
||||
gcc->hidden = 1;
|
||||
}
|
||||
|
@ -999,7 +1007,7 @@ e_gadcon_client_size_request(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h)
|
|||
case E_GADCON_ORIENT_BOTTOM:
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_size_set(gcc->o_frame, w + gcc->pad.w);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_size_set(gcc->o_base, w);
|
||||
break;
|
||||
case E_GADCON_ORIENT_VERT:
|
||||
|
@ -1007,7 +1015,7 @@ e_gadcon_client_size_request(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h)
|
|||
case E_GADCON_ORIENT_RIGHT:
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_size_set(gcc->o_frame, h + gcc->pad.h);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_size_set(gcc->o_base, h);
|
||||
break;
|
||||
case E_GADCON_ORIENT_FLOAT:
|
||||
|
@ -1035,7 +1043,7 @@ e_gadcon_client_min_size_set(E_Gadcon_Client *gcc, Evas_Coord w, Evas_Coord h)
|
|||
{
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_frame, w + gcc->pad.w, h + gcc->pad.h);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_base, w, h);
|
||||
}
|
||||
_e_gadcon_moveresize_handle(gcc);
|
||||
|
@ -1055,7 +1063,7 @@ e_gadcon_client_aspect_set(E_Gadcon_Client *gcc, int w, int h)
|
|||
e_gadcon_layout_pack_aspect_pad_set(gcc->o_frame, gcc->pad.w, gcc->pad.h);
|
||||
e_gadcon_layout_pack_aspect_set(gcc->o_frame, w, h);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_aspect_set(gcc->o_base, w, h);
|
||||
}
|
||||
_e_gadcon_moveresize_handle(gcc);
|
||||
|
@ -1076,7 +1084,7 @@ e_gadcon_client_autoscroll_set(E_Gadcon_Client *gcc, int autoscroll)
|
|||
e_gadcon_layout_pack_aspect_set(gcc->o_frame, 0, 0);
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_frame, 0, 0);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
{
|
||||
e_gadcon_layout_pack_aspect_set(gcc->o_base, 0, 0);
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_base, 0, 0);
|
||||
|
@ -1090,7 +1098,7 @@ e_gadcon_client_autoscroll_set(E_Gadcon_Client *gcc, int autoscroll)
|
|||
e_gadcon_layout_pack_aspect_set(gcc->o_frame, gcc->aspect.w, gcc->aspect.h);
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_frame, gcc->min.w, gcc->min.h);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
{
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_base, gcc->min.w, gcc->min.h);
|
||||
e_gadcon_layout_pack_aspect_set(gcc->o_base, gcc->aspect.w, gcc->aspect.h);
|
||||
|
@ -1113,7 +1121,7 @@ e_gadcon_client_resizable_set(E_Gadcon_Client *gcc, int resizable)
|
|||
e_gadcon_layout_pack_aspect_set(gcc->o_frame, 0, 0);
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_frame, 0, 0);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
{
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_base, 0, 0);
|
||||
e_gadcon_layout_pack_aspect_set(gcc->o_base, 0, 0);
|
||||
|
@ -1127,7 +1135,7 @@ e_gadcon_client_resizable_set(E_Gadcon_Client *gcc, int resizable)
|
|||
e_gadcon_layout_pack_aspect_set(gcc->o_frame, gcc->aspect.w, gcc->aspect.h);
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_frame, gcc->min.w, gcc->min.h);
|
||||
}
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
{
|
||||
e_gadcon_layout_pack_min_size_set(gcc->o_base, gcc->min.w, gcc->min.h);
|
||||
e_gadcon_layout_pack_aspect_set(gcc->o_base, gcc->aspect.w, gcc->aspect.h);
|
||||
|
@ -1143,8 +1151,9 @@ e_gadcon_client_geometry_get(E_Gadcon_Client *gcc, int *x, int *y, int *w, int *
|
|||
E_OBJECT_CHECK(gcc);
|
||||
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
||||
if (!e_gadcon_canvas_zone_geometry_get(gcc->gadcon, &gx, &gy, NULL, NULL)) return 0;
|
||||
|
||||
evas_object_geometry_get(gcc->o_base, x, y, w, h);
|
||||
|
||||
if (gcc->o_base)
|
||||
evas_object_geometry_get(gcc->o_base, x, y, w, h);
|
||||
if (x) *x += gx;
|
||||
if (y) *y += gy;
|
||||
|
||||
|
@ -1240,7 +1249,7 @@ e_gadcon_client_util_menu_attach(E_Gadcon_Client *gcc)
|
|||
E_OBJECT_TYPE_CHECK(gcc, E_GADCON_CLIENT_TYPE);
|
||||
if (gcc->o_frame)
|
||||
evas_object_event_callback_add(gcc->o_frame, EVAS_CALLBACK_MOUSE_DOWN, _e_gadcon_client_cb_mouse_down, gcc);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
evas_object_event_callback_add(gcc->o_base, EVAS_CALLBACK_MOUSE_DOWN, _e_gadcon_client_cb_mouse_down, gcc);
|
||||
}
|
||||
|
||||
|
@ -1300,6 +1309,10 @@ _e_gadcon_free(E_Gadcon *gc)
|
|||
static void
|
||||
_e_gadcon_client_free(E_Gadcon_Client *gcc)
|
||||
{
|
||||
if (gcc->o_base)
|
||||
evas_object_event_callback_del(gcc->o_base,
|
||||
EVAS_CALLBACK_DEL,
|
||||
_e_gadcon_client_del_hook);
|
||||
if (gcc->menu)
|
||||
{
|
||||
e_menu_post_deactivate_callback_set(gcc->menu, NULL, NULL);
|
||||
|
@ -1337,13 +1350,14 @@ _e_gadcon_moveresize_handle(E_Gadcon_Client *gcc)
|
|||
h = (w * gcc->aspect.h) / gcc->aspect.w;
|
||||
}
|
||||
}
|
||||
e_box_pack_options_set(gcc->o_base,
|
||||
1, 1, /* fill */
|
||||
1, 1, /* expand */
|
||||
0.5, 0.5, /* align */
|
||||
w, h, /* min */
|
||||
w, h /* max */
|
||||
);
|
||||
if (gcc->o_base)
|
||||
e_box_pack_options_set(gcc->o_base,
|
||||
1, 1, /* fill */
|
||||
1, 1, /* expand */
|
||||
0.5, 0.5, /* align */
|
||||
w, h, /* min */
|
||||
w, h /* max */
|
||||
);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -1483,7 +1497,7 @@ _e_gadcon_client_inject(E_Gadcon *gc, E_Gadcon_Client *gcc, int x, int y)
|
|||
{
|
||||
if (gcc->o_frame)
|
||||
evas_object_geometry_get(gcc->o_frame, &cx, &cy, &cw, &ch);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
evas_object_geometry_get(gcc->o_base, &cx, &cy, &cw, &ch);
|
||||
if (E_INSIDE(x, y, cx, cy, cw, ch)) return;
|
||||
}
|
||||
|
@ -1500,7 +1514,7 @@ _e_gadcon_client_inject(E_Gadcon *gc, E_Gadcon_Client *gcc, int x, int y)
|
|||
if (gcc2->hidden) continue;
|
||||
if (gcc2->o_frame)
|
||||
evas_object_geometry_get(gcc2->o_frame, &cx, &cy, &cw, &ch);
|
||||
else
|
||||
else if (gcc2->o_base)
|
||||
evas_object_geometry_get(gcc2->o_base, &cx, &cy, &cw, &ch);
|
||||
if (e_gadcon_layout_orientation_get(gc->o_container))
|
||||
{
|
||||
|
@ -1775,14 +1789,14 @@ _e_gadcon_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission,
|
|||
|
||||
if (gcc->o_frame)
|
||||
evas_object_geometry_get(gcc->o_frame, NULL, NULL, &w, &h);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
evas_object_geometry_get(gcc->o_base, NULL, NULL, &w, &h);
|
||||
|
||||
if (e_gadcon_layout_orientation_get(gcc->gadcon->o_container))
|
||||
{
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos + x, w);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos + x, w);
|
||||
|
||||
gcc->config.size = w;
|
||||
|
@ -1793,7 +1807,7 @@ _e_gadcon_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission,
|
|||
{
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos + y, h);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos + y, h);
|
||||
|
||||
gcc->config.size = h;
|
||||
|
@ -1851,7 +1865,7 @@ _e_gadcon_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emi
|
|||
|
||||
if (gcc->o_frame)
|
||||
evas_object_geometry_get(gcc->o_frame, NULL, NULL, &w, &h);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
evas_object_geometry_get(gcc->o_base, NULL, NULL, &w, &h);
|
||||
|
||||
_e_gadcon_client_current_position_sync(gcc);
|
||||
|
@ -1875,7 +1889,7 @@ _e_gadcon_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emi
|
|||
{
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos + x, w - x);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos + x, w - x);
|
||||
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
||||
gcc->config.res = w;
|
||||
|
@ -1884,7 +1898,7 @@ _e_gadcon_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emi
|
|||
{
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos + y, h - y);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos + y, h - y);
|
||||
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
||||
gcc->config.res = h;
|
||||
|
@ -1922,7 +1936,7 @@ _e_gadcon_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *em
|
|||
|
||||
if (gcc->o_frame)
|
||||
evas_object_geometry_get(gcc->o_frame, NULL, NULL, &w, &h);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
evas_object_geometry_get(gcc->o_base, NULL, NULL, &w, &h);
|
||||
|
||||
_e_gadcon_client_current_position_sync(gcc);
|
||||
|
@ -1946,7 +1960,7 @@ _e_gadcon_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *em
|
|||
{
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos, w + x);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos, w + x);
|
||||
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
||||
gcc->config.res = w;
|
||||
|
@ -1955,7 +1969,7 @@ _e_gadcon_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *em
|
|||
{
|
||||
if (gcc->o_frame)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_frame, gcc->config.pos, h + y);
|
||||
else
|
||||
else if (gcc->o_base)
|
||||
e_gadcon_layout_pack_request_set(gcc->o_base, gcc->config.pos, h + y);
|
||||
evas_object_geometry_get(gcc->gadcon->o_container, NULL, NULL, &w, &h);
|
||||
gcc->config.res = h;
|
||||
|
@ -2017,10 +2031,13 @@ _e_gadcon_cb_dnd_enter(void *data, const char *type, void *event)
|
|||
e_gadcon_client_show(gcc);
|
||||
|
||||
o = gcc->o_frame ? gcc->o_frame : gcc->o_base;
|
||||
if (e_gadcon_layout_orientation_get(gc->o_container))
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
else
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
if (o)
|
||||
{
|
||||
if (e_gadcon_layout_orientation_get(gc->o_container))
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
else
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
}
|
||||
gcc->state_info.resist = 1;
|
||||
}
|
||||
else if (ev->data)
|
||||
|
@ -2052,7 +2069,7 @@ _e_gadcon_cb_dnd_enter(void *data, const char *type, void *event)
|
|||
new_gcc->state_info.flags = gcc->state_info.flags;
|
||||
if (new_gcc->o_frame)
|
||||
e_gadcon_layout_pack_options_set(new_gcc->o_frame, new_gcc);
|
||||
else
|
||||
else if (new_gcc->o_base)
|
||||
e_gadcon_layout_pack_options_set(new_gcc->o_base, new_gcc);
|
||||
|
||||
e_gadcon_client_autoscroll_set(new_gcc, gcc->autoscroll);
|
||||
|
@ -2106,10 +2123,13 @@ _e_gadcon_cb_dnd_move(void *data, const char *type, void *event)
|
|||
_e_gadcon_client_inject(gc, gcc, ev->x + dx, ev->y + dy);
|
||||
|
||||
o = gcc->o_frame ? gcc->o_frame : gcc->o_base;
|
||||
if (e_gadcon_layout_orientation_get(gc->o_container))
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
else
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
if (o)
|
||||
{
|
||||
if (e_gadcon_layout_orientation_get(gc->o_container))
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
else
|
||||
e_gadcon_layout_pack_request_set(o, gcc->config.pos, gcc->config.size);
|
||||
}
|
||||
e_gadcon_layout_thaw(gc->o_container);
|
||||
}
|
||||
}
|
||||
|
@ -2298,6 +2318,21 @@ _e_gadcon_client_cb_menu_remove(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadcon_client_del_hook(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
E_Gadcon_Client *gcc;
|
||||
|
||||
gcc = data;
|
||||
gcc->o_base = NULL;
|
||||
if (gcc->o_frame)
|
||||
{
|
||||
evas_object_del(gcc->o_frame);
|
||||
gcc->o_frame = NULL;
|
||||
}
|
||||
e_object_del(E_OBJECT(gcc));
|
||||
}
|
||||
|
||||
/* a smart object JUST for gadcon */
|
||||
|
||||
typedef struct _E_Gadcon_Layout_Item E_Gadcon_Layout_Item;
|
||||
|
@ -2704,7 +2739,7 @@ _e_gadcon_layout_smart_adopt(E_Smart_Data *sd, Evas_Object *obj)
|
|||
evas_object_clip_set(obj, sd->clip);
|
||||
evas_object_smart_member_add(obj, bi->sd->obj);
|
||||
evas_object_data_set(obj, "e_gadcon_layout_data", bi);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_FREE,
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_e_gadcon_layout_smart_item_del_hook, NULL);
|
||||
if ((!evas_object_visible_get(sd->clip)) &&
|
||||
(evas_object_visible_get(sd->obj)))
|
||||
|
@ -2727,7 +2762,7 @@ _e_gadcon_layout_smart_disown(Evas_Object *obj)
|
|||
evas_object_hide(bi->sd->clip);
|
||||
}
|
||||
evas_object_event_callback_del(obj,
|
||||
EVAS_CALLBACK_FREE,
|
||||
EVAS_CALLBACK_DEL,
|
||||
_e_gadcon_layout_smart_item_del_hook);
|
||||
evas_object_smart_member_del(obj);
|
||||
evas_object_clip_unset(obj);
|
||||
|
@ -3474,8 +3509,11 @@ _e_gadcon_client_current_position_sync(E_Gadcon_Client *gcc)
|
|||
Evas_Object *o;
|
||||
|
||||
o = gcc->o_frame ? gcc->o_frame : gcc->o_base;
|
||||
bi = evas_object_data_get(o, "e_gadcon_layout_data");
|
||||
if (!bi) return;
|
||||
if (o)
|
||||
{
|
||||
bi = evas_object_data_get(o, "e_gadcon_layout_data");
|
||||
if (!bi) return;
|
||||
}
|
||||
|
||||
gcc->state_info.prev_pos = gcc->config.pos;
|
||||
gcc->state_info.prev_size = gcc->config.size;
|
||||
|
|
Loading…
Reference in New Issue