all repos — openbox @ ec9dd7fdd7531d2ca951a0b812bf8e63b6e9a377

openbox fork - make it a bit more like ryudo

new method for loading menu files etc
Dana Jansens danakj@orodu.net
commit

ec9dd7fdd7531d2ca951a0b812bf8e63b6e9a377

parent

fb035e4b0f91fa68a833f681f1f7bd7c71325bdb

M data/rc3data/rc3

@@ -326,7 +326,14 @@ </context>

</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>
M openbox/config.hopenbox/config.h

@@ -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();
M openbox/event.copenbox/event.c

@@ -1102,14 +1102,15 @@ max_fd = MAX(ice_fd, 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;
M openbox/event.hopenbox/event.h

@@ -7,21 +7,21 @@ /*! Time at which the last event with a timestamp occured. */

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();
M openbox/menu.copenbox/menu.c

@@ -193,7 +193,7 @@ parse_tree(menu_parse_inst, doc, node->xmlChildrenNode);

} } -gboolean menu_new(gchar *name, gchar *title, gpointer data) +ObMenu* menu_new(gchar *name, gchar *title, gpointer data) { ObMenu *self;

@@ -206,7 +206,7 @@ self->data = data;

g_hash_table_replace(menu_hash, self->name, self); - return TRUE; + return self; } void menu_free(gchar *name)

@@ -295,7 +295,8 @@ self->entries = g_list_delete_link(self->entries, self->entries);

} } -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 @@ e->data.normal.label = g_strdup(label);

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 @@ e = menu_entry_new(self, OB_MENU_ENTRY_TYPE_SUBMENU, id);

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 @@

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)
M openbox/menu.hopenbox/menu.h

@@ -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);
M plugins/menu/client_list_menu.cplugins/menu/client_list_menu.c

@@ -44,11 +44,10 @@

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;