forked from enlightenment/enlightenment
add mechanism for injecting entries into border menus
SVN revision: 74172
This commit is contained in:
parent
224521a152
commit
85931fc15a
|
@ -362,6 +362,7 @@ e_border_shutdown(void)
|
|||
|
||||
if (borders_hash) eina_hash_free(borders_hash);
|
||||
borders_hash = NULL;
|
||||
e_int_border_menu_hooks_clear();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -48,11 +48,55 @@ static void _e_border_menu_cb_iconpref_user(void *data, E_Menu *m, E_Menu_Item *
|
|||
static void _e_border_menu_cb_default_icon(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_border_menu_cb_netwm_icon(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static Eina_List *menu_hooks = NULL;
|
||||
|
||||
EAPI E_Border_Menu_Hook *
|
||||
e_int_border_menu_hook_add(E_Border_Menu_Hook_Cb cb, const void *data)
|
||||
{
|
||||
E_Border_Menu_Hook *h;
|
||||
|
||||
if (!cb) return NULL;
|
||||
h = E_NEW(E_Border_Menu_Hook, 1);
|
||||
if (!h) return NULL;
|
||||
|
||||
h->cb = cb;
|
||||
h->data = (void*)data;
|
||||
menu_hooks = eina_list_append(menu_hooks, h);
|
||||
return h;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_int_border_menu_hook_del(E_Border_Menu_Hook *hook)
|
||||
{
|
||||
E_Border_Menu_Hook *h;
|
||||
Eina_List *l;
|
||||
|
||||
if (!hook) return;
|
||||
|
||||
EINA_LIST_FOREACH(menu_hooks, l, h)
|
||||
if (h == hook)
|
||||
{
|
||||
menu_hooks = eina_list_remove_list(menu_hooks, l);
|
||||
free(h);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_int_border_menu_hooks_clear(void)
|
||||
{
|
||||
E_Border_Menu_Hook *h;
|
||||
EINA_LIST_FREE(menu_hooks, h)
|
||||
free(h);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_int_border_menu_create(E_Border *bd)
|
||||
{
|
||||
E_Menu *m;
|
||||
E_Menu_Item *mi;
|
||||
Eina_List *l;
|
||||
E_Border_Menu_Hook *h;
|
||||
char buf[128];
|
||||
|
||||
if (bd->border_menu) return;
|
||||
|
@ -152,6 +196,8 @@ e_int_border_menu_create(E_Border *bd)
|
|||
"e/widgets/border/default/close"),
|
||||
"e/widgets/border/default/close");
|
||||
}
|
||||
EINA_LIST_FOREACH(menu_hooks, l, h)
|
||||
h->cb(bd, h->data);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -4,6 +4,16 @@
|
|||
#ifndef E_INT_BORDER_MENU_H
|
||||
#define E_INT_BORDER_MENU_H
|
||||
|
||||
typedef void (*E_Border_Menu_Hook_Cb)(E_Border *, void *);
|
||||
typedef struct E_Border_Menu_Hook
|
||||
{
|
||||
E_Border_Menu_Hook_Cb cb;
|
||||
void *data;
|
||||
} E_Border_Menu_Hook;
|
||||
|
||||
EAPI E_Border_Menu_Hook *e_int_border_menu_hook_add(E_Border_Menu_Hook_Cb cb, const void *data);
|
||||
EAPI void e_int_border_menu_hook_del(E_Border_Menu_Hook *hook);
|
||||
EAPI void e_int_border_menu_hooks_clear(void);
|
||||
EAPI void e_int_border_menu_create(E_Border *bd);
|
||||
EAPI void e_int_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_X_Time timestamp);
|
||||
EAPI void e_int_border_menu_del(E_Border *bd);
|
||||
|
|
Loading…
Reference in New Issue