diff finch/libgnt/gntwm.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 9b2376dde204
children 4d6828b8da3e
line wrap: on
line diff
--- a/finch/libgnt/gntwm.c	Wed Oct 03 05:42:31 2007 +0000
+++ b/finch/libgnt/gntwm.c	Wed Oct 03 06:51:26 2007 +0000
@@ -1853,8 +1853,17 @@
 		ret = gnt_widget_key_pressed(GNT_WIDGET(wm->menu), keys);
 	else if (wm->_list.window)
 		ret = gnt_widget_key_pressed(wm->_list.window, keys);
-	else if (wm->cws->ordered)
-		ret = gnt_widget_key_pressed(GNT_WIDGET(wm->cws->ordered->data), keys);
+	else if (wm->cws->ordered) {
+		GntWidget *win = wm->cws->ordered->data;
+		GntMenu *menu = GNT_WINDOW(win)->menu;
+		if (menu) {
+			const char *id = gnt_window_get_accel_item(GNT_WINDOW(win), keys);
+			if (id)
+				ret = (gnt_menu_get_item(menu, id) != NULL);
+		}
+		if (!ret)
+			ret = gnt_widget_key_pressed(win, keys);
+	}
 	return ret;
 }