diff finch/libgnt/gntmenu.c @ 21212:b65f1bff6412

Allow binding key-shortcuts to menuitems. For example, to bind ctrl+m to the 'Options -> Send IM...' menu, you would add: [buddylist::menu] c-m = send-im in ~/.gntrc
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Wed, 03 Oct 2007 06:51:26 +0000
parents 44b4e8bd759b
children 4c7604b4841c
line wrap: on
line diff
--- a/finch/libgnt/gntmenu.c	Wed Oct 03 05:42:31 2007 +0000
+++ b/finch/libgnt/gntmenu.c	Wed Oct 03 06:51:26 2007 +0000
@@ -459,3 +459,33 @@
 	menu->list = g_list_append(menu->list, item);
 }
 
+GntMenuItem *gnt_menu_get_item(GntMenu *menu, const char *id)
+{
+	GntMenuItem *item = NULL;
+	GList *iter = menu->list;
+
+	if (!id || !*id)
+		return NULL;
+
+	for (; iter; iter = iter->next) {
+		GntMenu *sub;
+		item = iter->data;
+		sub = gnt_menuitem_get_submenu(item);
+		if (sub) {
+			item = gnt_menu_get_item(sub, id);
+			if (item)
+				break;
+		} else {
+			const char *itid = gnt_menuitem_get_id(item);
+			if (itid && strcmp(itid, id) == 0)
+				break;
+		}
+		item = NULL;
+	}
+
+	if (item)
+		menuitem_activate(menu, item);
+
+	return item;
+}
+