new method for loading menu files etc
This commit is contained in:
parent
fb035e4b0f
commit
ec9dd7fdd7
7 changed files with 35 additions and 23 deletions
9
data/rc3
9
data/rc3
|
@ -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>
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue