forked from enlightenment/enlightenment
Fix for Ibox making E segv when window quits
SVN revision: 18984
This commit is contained in:
parent
c426bec3db
commit
c69241e9e4
|
@ -67,6 +67,7 @@ static int _ibox_box_cb_animator(void *data);
|
||||||
|
|
||||||
static int _ibox_box_cb_event_border_iconify(void *data, int type, void *event);
|
static int _ibox_box_cb_event_border_iconify(void *data, int type, void *event);
|
||||||
static int _ibox_box_cb_event_border_uniconify(void *data, int type, void *event);
|
static int _ibox_box_cb_event_border_uniconify(void *data, int type, void *event);
|
||||||
|
static int _ibox_box_cb_event_border_remove(void *data, int type, void *event);
|
||||||
|
|
||||||
static void _ibox_icon_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y);
|
static void _ibox_icon_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y);
|
||||||
static void _ibox_icon_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h);
|
static void _ibox_icon_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h);
|
||||||
|
@ -335,6 +336,8 @@ _ibox_box_new(IBox *ib, E_Container *con)
|
||||||
ecore_event_handler_add(E_EVENT_BORDER_ICONIFY, _ibox_box_cb_event_border_iconify, ibb);
|
ecore_event_handler_add(E_EVENT_BORDER_ICONIFY, _ibox_box_cb_event_border_iconify, ibb);
|
||||||
ibb->ev_handler_border_uniconify =
|
ibb->ev_handler_border_uniconify =
|
||||||
ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY, _ibox_box_cb_event_border_uniconify, ibb);
|
ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY, _ibox_box_cb_event_border_uniconify, ibb);
|
||||||
|
ibb->ev_handler_border_remove =
|
||||||
|
ecore_event_handler_add(E_EVENT_BORDER_REMOVE, _ibox_box_cb_event_border_remove, ibb);
|
||||||
|
|
||||||
bl = e_container_border_list_first(ibb->con);
|
bl = e_container_border_list_first(ibb->con);
|
||||||
while ((bd = e_container_border_list_next(bl)))
|
while ((bd = e_container_border_list_next(bl)))
|
||||||
|
@ -411,6 +414,8 @@ _ibox_box_free(IBox_Box *ibb)
|
||||||
|
|
||||||
ecore_event_handler_del(ibb->ev_handler_border_iconify);
|
ecore_event_handler_del(ibb->ev_handler_border_iconify);
|
||||||
ecore_event_handler_del(ibb->ev_handler_border_uniconify);
|
ecore_event_handler_del(ibb->ev_handler_border_uniconify);
|
||||||
|
ecore_event_handler_del(ibb->ev_handler_border_remove);
|
||||||
|
|
||||||
while (ibb->icons)
|
while (ibb->icons)
|
||||||
_ibox_icon_free(ibb->icons->data);
|
_ibox_icon_free(ibb->icons->data);
|
||||||
|
|
||||||
|
@ -1201,6 +1206,24 @@ _ibox_box_cb_event_border_uniconify(void *data, int type, void *event)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_ibox_box_cb_event_border_remove(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
E_Event_Border_Remove *ev;
|
||||||
|
IBox_Box *ibb;
|
||||||
|
IBox_Icon *ic;
|
||||||
|
|
||||||
|
ev = event;
|
||||||
|
ibb = data;
|
||||||
|
|
||||||
|
ic = _ibox_icon_find(ibb, ev->border);
|
||||||
|
if (ic)
|
||||||
|
_ibox_icon_free(ic);
|
||||||
|
_ibox_box_frame_resize(ibb);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ibox_box_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change)
|
_ibox_box_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change)
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,6 +54,7 @@ struct _IBox_Box
|
||||||
|
|
||||||
Ecore_Event_Handler *ev_handler_border_iconify;
|
Ecore_Event_Handler *ev_handler_border_iconify;
|
||||||
Ecore_Event_Handler *ev_handler_border_uniconify;
|
Ecore_Event_Handler *ev_handler_border_uniconify;
|
||||||
|
Ecore_Event_Handler *ev_handler_border_remove;
|
||||||
|
|
||||||
double align, align_req;
|
double align, align_req;
|
||||||
double follow, follow_req;
|
double follow, follow_req;
|
||||||
|
|
Loading…
Reference in New Issue