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);
|
if (borders_hash) eina_hash_free(borders_hash);
|
||||||
borders_hash = NULL;
|
borders_hash = NULL;
|
||||||
|
e_int_border_menu_hooks_clear();
|
||||||
|
|
||||||
return 1;
|
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_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 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
|
EAPI void
|
||||||
e_int_border_menu_create(E_Border *bd)
|
e_int_border_menu_create(E_Border *bd)
|
||||||
{
|
{
|
||||||
E_Menu *m;
|
E_Menu *m;
|
||||||
E_Menu_Item *mi;
|
E_Menu_Item *mi;
|
||||||
|
Eina_List *l;
|
||||||
|
E_Border_Menu_Hook *h;
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
if (bd->border_menu) return;
|
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"),
|
||||||
"e/widgets/border/default/close");
|
"e/widgets/border/default/close");
|
||||||
}
|
}
|
||||||
|
EINA_LIST_FOREACH(menu_hooks, l, h)
|
||||||
|
h->cb(bd, h->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
|
|
@ -4,6 +4,16 @@
|
||||||
#ifndef E_INT_BORDER_MENU_H
|
#ifndef E_INT_BORDER_MENU_H
|
||||||
#define 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_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_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);
|
EAPI void e_int_border_menu_del(E_Border *bd);
|
||||||
|
|
Loading…
Reference in New Issue