From: <ebl...@us...> - 2006-08-20 02:24:19
|
Revision: 16896 Author: eblanton Date: 2006-08-19 19:24:15 -0700 (Sat, 19 Aug 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16896&view=rev Log Message: ----------- Bind ^n and ^p for gnttree navigation Modified Paths: -------------- trunk/console/libgnt/gnttree.c Modified: trunk/console/libgnt/gnttree.c =================================================================== --- trunk/console/libgnt/gnttree.c 2006-08-20 02:13:05 UTC (rev 16895) +++ trunk/console/libgnt/gnttree.c 2006-08-20 02:24:15 UTC (rev 16896) @@ -2,6 +2,7 @@ #include "gntmarshal.h" #include <string.h> +#include <ctype.h> 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) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |