From 8669d68db3611ae0ab15499ef5a0b3edd58e191b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Sat, 16 Aug 2014 09:12:48 -0400 Subject: [PATCH] simplify systray handler code --- src/modules/systray/e_mod_xembed.c | 51 ++++++------------------------ 1 file changed, 9 insertions(+), 42 deletions(-) diff --git a/src/modules/systray/e_mod_xembed.c b/src/modules/systray/e_mod_xembed.c index 9cda684d0..2f281cbed 100644 --- a/src/modules/systray/e_mod_xembed.c +++ b/src/modules/systray/e_mod_xembed.c @@ -57,16 +57,7 @@ struct _Instance_Xembed Ecore_X_Window base; Ecore_X_Window selection; } win; - struct - { - Ecore_Event_Handler *message; - Ecore_Event_Handler *destroy; - Ecore_Event_Handler *show; - Ecore_Event_Handler *reparent; - Ecore_Event_Handler *sel_clear; - Ecore_Event_Handler *configure; - Ecore_Event_Handler *client; - } handler; + Eina_List *handlers; struct { Ecore_Timer *retry; @@ -898,25 +889,13 @@ systray_xembed_new(Instance *inst) evas_object_event_callback_add(inst->gcc->gadcon->shelf->comp_object, EVAS_CALLBACK_SHOW, _systray_xembed_cb_show, xembed); } - xembed->handler.client = ecore_event_handler_add(E_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_systray_xembed_client_add, xembed); - xembed->handler.message = ecore_event_handler_add - (ECORE_X_EVENT_CLIENT_MESSAGE, _systray_xembed_cb_client_message, - xembed); - xembed->handler.destroy = ecore_event_handler_add - (ECORE_X_EVENT_WINDOW_DESTROY, _systray_xembed_cb_window_destroy, - xembed); - xembed->handler.show = ecore_event_handler_add - (ECORE_X_EVENT_WINDOW_SHOW, _systray_xembed_cb_window_show, - xembed); - xembed->handler.reparent = ecore_event_handler_add - (ECORE_X_EVENT_WINDOW_REPARENT, _systray_xembed_cb_reparent_notify, - xembed); - xembed->handler.sel_clear = ecore_event_handler_add - (ECORE_X_EVENT_SELECTION_CLEAR, _systray_xembed_cb_selection_clear, - xembed); - xembed->handler.configure = ecore_event_handler_add - (ECORE_X_EVENT_WINDOW_CONFIGURE, _systray_xembed_cb_window_configure, - xembed); + E_LIST_HANDLER_APPEND(xembed->handlers, E_EVENT_CLIENT_ADD, (Ecore_Event_Handler_Cb)_systray_xembed_client_add, xembed); + E_LIST_HANDLER_APPEND(xembed->handlers, ECORE_X_EVENT_CLIENT_MESSAGE, _systray_xembed_cb_client_message, xembed); + E_LIST_HANDLER_APPEND(xembed->handlers, ECORE_X_EVENT_WINDOW_DESTROY, _systray_xembed_cb_window_destroy, xembed); + E_LIST_HANDLER_APPEND(xembed->handlers, ECORE_X_EVENT_WINDOW_SHOW, _systray_xembed_cb_window_show, xembed); + E_LIST_HANDLER_APPEND(xembed->handlers, ECORE_X_EVENT_WINDOW_REPARENT, _systray_xembed_cb_reparent_notify, xembed); + E_LIST_HANDLER_APPEND(xembed->handlers, ECORE_X_EVENT_SELECTION_CLEAR, _systray_xembed_cb_selection_clear, xembed); + E_LIST_HANDLER_APPEND(xembed->handlers, ECORE_X_EVENT_WINDOW_CONFIGURE, _systray_xembed_cb_window_configure, xembed); return xembed; } @@ -943,19 +922,7 @@ systray_xembed_free(Instance_Xembed *xembed) _systray_xembed_deactivate(xembed); ecore_timer_del(xembed->visibility_timer); - if (xembed->handler.message) - ecore_event_handler_del(xembed->handler.message); - if (xembed->handler.destroy) - ecore_event_handler_del(xembed->handler.destroy); - if (xembed->handler.show) - ecore_event_handler_del(xembed->handler.show); - if (xembed->handler.reparent) - ecore_event_handler_del(xembed->handler.reparent); - if (xembed->handler.sel_clear) - ecore_event_handler_del(xembed->handler.sel_clear); - if (xembed->handler.configure) - ecore_event_handler_del(xembed->handler.configure); - ecore_event_handler_del(xembed->handler.client); + E_FREE_LIST(xembed->handlers, ecore_event_handler_del); if (xembed->timer.retry) ecore_timer_del(xembed->timer.retry);