new method for loading menu files etc

This commit is contained in:
Dana Jansens 2003-08-28 17:32:49 +00:00
parent fb035e4b0f
commit ec9dd7fdd7
7 changed files with 35 additions and 23 deletions

View file

@ -326,7 +326,14 @@
</mouse>
<menu>
<location>~/.openbox/menu</location>
<!-- You can specify more than one menu file in here and they are all loaded,
just don't make menu ids clash or, well, it'll be kind of pointless -->
<!-- default menu file (or custom one in $HOME/.openbox/) -->
<file>menu</file>
<!-- debian menu file -->
<file>/etc/X11/openbox/openbox-menu</file>
</menu>
</openbox_config>

View file

@ -72,8 +72,8 @@ gint config_resist_win;
/*! Number of pixels to resist while crossing a screen's edge */
gint config_resist_edge;
/*! User-specified path to the menu file */
extern gchar *config_menu_path;
/*! User-specified menu files */
extern GSList *config_menu_files;
void config_startup(struct _ObParseInst *i);
void config_shutdown();

View file

@ -1102,14 +1102,15 @@ static void find_max_fd()
#endif
}
void event_remove_fd(int n)
void event_remove_fd(gint n)
{
FD_CLR(n, &allset);
g_datalist_id_remove_data(&fd_handler_list, (GQuark)n);
find_max_fd();
}
static void fd_event_handle_foreach(GQuark n, gpointer data, gpointer user_data)
static void fd_event_handle_foreach(GQuark n,
gpointer data, gpointer user_data)
{
if (FD_ISSET( (int)n, &selset)) {
event_fd_handler *h = (event_fd_handler *)data;

View file

@ -7,21 +7,21 @@
extern Time event_lasttime;
/*! The value of the mask for the NumLock modifier */
extern unsigned int NumLockMask;
extern guint NumLockMask;
/*! The value of the mask for the ScrollLock modifier */
extern unsigned int ScrollLockMask;
extern guint ScrollLockMask;
void event_startup();
void event_shutdown();
typedef struct event_fd_handler {
int fd;
void *data;
void (*handler)(int fd, void *data);
gint fd;
gpointer data;
void (*handler)(gint fd, gpointer data);
} event_fd_handler;
void event_add_fd_handler(event_fd_handler *handler);
void event_remove_fd(int n);
void event_remove_fd(gint n);
void event_loop();

View file

@ -193,7 +193,7 @@ void menu_parse()
}
}
gboolean menu_new(gchar *name, gchar *title, gpointer data)
ObMenu* menu_new(gchar *name, gchar *title, gpointer data)
{
ObMenu *self;
@ -206,7 +206,7 @@ gboolean menu_new(gchar *name, gchar *title, gpointer data)
g_hash_table_replace(menu_hash, self->name, self);
return TRUE;
return self;
}
void menu_free(gchar *name)
@ -295,7 +295,8 @@ static void menu_clear_entries_internal(ObMenu *self)
}
}
void menu_add_normal(gchar *name, gint id, gchar *label, GSList *actions)
ObMenuEntry* menu_add_normal(gchar *name, gint id, gchar *label,
GSList *actions)
{
ObMenu *self;
ObMenuEntry *e;
@ -307,9 +308,10 @@ void menu_add_normal(gchar *name, gint id, gchar *label, GSList *actions)
e->data.normal.actions = actions;
self->entries = g_list_append(self->entries, e);
return e;
}
void menu_add_submenu(gchar *name, gint id, gchar *submenu)
ObMenuEntry* menu_add_submenu(gchar *name, gint id, gchar *submenu)
{
ObMenu *self;
ObMenuEntry *e;
@ -320,9 +322,10 @@ void menu_add_submenu(gchar *name, gint id, gchar *submenu)
e->data.submenu.name = g_strdup(submenu);
self->entries = g_list_append(self->entries, e);
return e;
}
void menu_add_separator(gchar *name, gint id)
ObMenuEntry* menu_add_separator(gchar *name, gint id)
{
ObMenu *self;
ObMenuEntry *e;
@ -332,6 +335,7 @@ void menu_add_separator(gchar *name, gint id)
e = menu_entry_new(self, OB_MENU_ENTRY_TYPE_SEPARATOR, id);
self->entries = g_list_append(self->entries, e);
return e;
}
void menu_set_update_func(gchar *name, ObMenuUpdateFunc func)

View file

@ -93,7 +93,7 @@ void menu_shutdown();
void menu_parse();
gboolean menu_new(gchar *name, gchar *title, gpointer data);
ObMenu* menu_new(gchar *name, gchar *title, gpointer data);
void menu_free(gchar *name);
gboolean menu_open_plugin(ObParseInst *i, gchar *name, gchar *plugin);
@ -106,9 +106,10 @@ void menu_show(gchar *name, gint x, gint y, struct _ObClient *client);
/* functions for building menus */
void menu_clear_entries(gchar *name);
void menu_add_normal(gchar *name, gint id, gchar *label, GSList *actions);
void menu_add_submenu(gchar *name, gint id, gchar *submenu);
void menu_add_separator(gchar *name, gint id);
ObMenuEntry* menu_add_normal(gchar *name, gint id, gchar *label,
GSList *actions);
ObMenuEntry* menu_add_submenu(gchar *name, gint id, gchar *submenu);
ObMenuEntry* menu_add_separator(gchar *name, gint id);
ObMenuEntry* menu_find_entry_id(ObMenu *self, gint id);

View file

@ -44,11 +44,10 @@ static void desk_menu_update(ObMenuFrame *frame, gpointer data)
act = action_from_string("activate");
act->data.activate.c = c;
acts = g_slist_prepend(NULL, act);
menu_add_normal(menu->name, i,
(c->iconic ? c->icon_title : c->title), acts);
e = menu_add_normal(menu->name, i,
(c->iconic ? c->icon_title : c->title), acts);
if ((icon = client_icon(c, 32, 32))) {
e = menu_find_entry_id(menu, i);
e->data.normal.icon_width = icon->width;
e->data.normal.icon_height = icon->height;
e->data.normal.icon_data = icon->data;