</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>
/*! 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();
#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;
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();
}
}
-gboolean menu_new(gchar *name, gchar *title, gpointer data)
+ObMenu* menu_new(gchar *name, gchar *title, gpointer data)
{
ObMenu *self;
g_hash_table_replace(menu_hash, self->name, self);
- return TRUE;
+ return self;
}
void menu_free(gchar *name)
}
}
-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;
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;
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;
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)
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);
/* 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);
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;