From 5c3352c57f5ae7a16829d7ff7626ea603790f20a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 3 Sep 2012 08:02:33 +0000 Subject: [PATCH] add function for changing a gadcon client's menu SVN revision: 75971 --- src/bin/e_gadcon.c | 18 ++++++++++++++++++ src/bin/e_gadcon.h | 1 + 2 files changed, 19 insertions(+) diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index 4fe1893f7..c8310636e 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -1564,6 +1564,24 @@ e_gadcon_client_add_location_menu(E_Gadcon_Client *gcc, E_Menu *menu) } } +EAPI E_Menu * +e_gadcon_client_menu_set(E_Gadcon_Client *gcc, E_Menu *m) +{ + E_Menu *ret; + + E_OBJECT_CHECK_RETURN(gcc, NULL); + E_OBJECT_TYPE_CHECK_RETURN(gcc, E_GADCON_CLIENT_TYPE, NULL); + + ret = gcc->menu; + if (ret) + e_menu_post_deactivate_callback_set(ret, NULL, NULL); + gcc->menu = m; + if (gcc->gadcon->shelf) gcc->gadcon->shelf->menu = m; + if (m) + e_menu_post_deactivate_callback_set(m, _e_gadcon_client_cb_menu_post, gcc); + return ret; +} + EAPI E_Menu * e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget, int flags __UNUSED__) { diff --git a/src/bin/e_gadcon.h b/src/bin/e_gadcon.h index cc6f9241a..e18384630 100644 --- a/src/bin/e_gadcon.h +++ b/src/bin/e_gadcon.h @@ -298,6 +298,7 @@ EAPI void e_gadcon_client_resizable_set(E_Gadcon_Client *gcc, EAPI int e_gadcon_client_geometry_get(E_Gadcon_Client *gcc, int *x, int *y, int *w, int *h); EAPI int e_gadcon_client_viewport_geometry_get(E_Gadcon_Client *gcc, int *x, int *y, int *w, int *h); EAPI E_Zone *e_gadcon_client_zone_get(E_Gadcon_Client *gcc); +EAPI E_Menu *e_gadcon_client_menu_set(E_Gadcon_Client *gcc, E_Menu *m); EAPI E_Menu *e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu_gadget, int flags); EAPI void e_gadcon_client_util_menu_attach(E_Gadcon_Client *gcc); EAPI void e_gadcon_locked_set(E_Gadcon *gc, int lock);