From: Dana Jansens Date: Thu, 28 Aug 2003 17:32:49 +0000 (+0000) Subject: new method for loading menu files etc X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=ec9dd7fdd7531d2ca951a0b812bf8e63b6e9a377;p=chaz%2Fopenbox new method for loading menu files etc --- diff --git a/data/rc3 b/data/rc3 index f379d4c2..49f004a4 100644 --- a/data/rc3 +++ b/data/rc3 @@ -326,7 +326,14 @@ - ~/.openbox/menu + + + + menu + + + /etc/X11/openbox/openbox-menu diff --git a/openbox/config.h b/openbox/config.h index 98a5340b..777d895e 100644 --- a/openbox/config.h +++ b/openbox/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(); diff --git a/openbox/event.c b/openbox/event.c index bbde397e..094d19fe 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -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; diff --git a/openbox/event.h b/openbox/event.h index b8f567a8..6aade180 100644 --- a/openbox/event.h +++ b/openbox/event.h @@ -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(); diff --git a/openbox/menu.c b/openbox/menu.c index 84c5ded5..4ffcca0d 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -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) diff --git a/openbox/menu.h b/openbox/menu.h index 74519343..4780bda0 100644 --- a/openbox/menu.h +++ b/openbox/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); diff --git a/plugins/menu/client_list_menu.c b/plugins/menu/client_list_menu.c index 054353fd..5b9637bf 100644 --- a/plugins/menu/client_list_menu.c +++ b/plugins/menu/client_list_menu.c @@ -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;