# HG changeset patch # User Ethan Blanton # Date 1156040655 0 # Node ID e9304dd009922d1700c29de7a94e521f962d1770 # Parent a3f9ebb0babd2b94bf3c4b71071502acb36f801f [gaim-migrate @ 16896] Bind ^n and ^p for gnttree navigation committer: Tailor Script diff -r a3f9ebb0babd -r e9304dd00992 console/libgnt/gnttree.c --- a/console/libgnt/gnttree.c Sun Aug 20 02:13:05 2006 +0000 +++ b/console/libgnt/gnttree.c Sun Aug 20 02:24:15 2006 +0000 @@ -2,6 +2,7 @@ #include "gntmarshal.h" #include +#include enum { @@ -468,10 +469,10 @@ GntTree *tree = GNT_TREE(widget); GntTreeRow *old = tree->current; GntTreeRow *row; + int dist; if (text[0] == 27) { - int dist; if (strcmp(text+1, GNT_KEY_DOWN) == 0 && (row = get_next(tree->current)) != NULL) { tree->current = row; @@ -490,9 +491,29 @@ redraw_tree(tree); } } - else if (text[0] == '\r') + else if (iscntrl(text[0])) { - gnt_widget_activate(widget); + if (strcmp(text, GNT_KEY_CTRL_N) == 0 && (row = get_next(tree->current)) != NULL) + { + tree->current = row; + if ((dist = get_distance(tree->current, tree->bottom)) < 0) + gnt_tree_scroll(tree, -dist); + else + redraw_tree(tree); + } + else if (strcmp(text, GNT_KEY_CTRL_P) == 0 && (row = get_prev(tree->current)) != NULL) + { + tree->current = row; + + if ((dist = get_distance(tree->current, tree->top)) > 0) + gnt_tree_scroll(tree, -dist); + else + redraw_tree(tree); + } + else if (text[0] == '\r') + { + gnt_widget_activate(widget); + } } else if (text[0] == ' ' && text[1] == 0) {