about summary refs log tree commit diff stats
path: root/xxxterm.c
diff options
context:
space:
mode:
authorMarco Peereboom <marco@conformal.com>2010-02-11 13:19:20 +0000
committerMarco Peereboom <marco@conformal.com>2010-02-11 13:19:20 +0000
commit73e59272f6e3ba588e4575b9bde6fc3d8b9c6bf2 (patch)
treeebe41e08dd68ba8e0f436c990a8d64a9dd52da09 /xxxterm.c
parent8bd8f48cfb7a253268b232f59dce09ead9c95024 (diff)
downloadxombrero-73e59272f6e3ba588e4575b9bde6fc3d8b9c6bf2.tar.gz
horizontal movement
Diffstat (limited to 'xxxterm.c')
-rw-r--r--xxxterm.c78
1 files changed, 59 insertions, 19 deletions
diff --git a/xxxterm.c b/xxxterm.c
index 6ee613d..379fcb9 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -71,6 +71,10 @@ struct karg {
 #define XT_MOVE_TOP		(4)
 #define XT_MOVE_PAGEDOWN	(5)
 #define XT_MOVE_PAGEUP		(6)
+#define XT_MOVE_LEFT		(7)
+#define XT_MOVE_FARLEFT		(8)
+#define XT_MOVE_RIGHT		(9)
+#define XT_MOVE_FARRIGHT	(10)
 
 /* globals */
 GtkWidget		*main_window;
@@ -82,49 +86,75 @@ quit(struct tab *t, struct karg *args)
 {
 	gtk_main_quit();
 
-	return (0);
+	return (1);
 }
 
 int
 move(struct tab *t, struct karg *args)
 {
-	double			vpos = gtk_adjustment_get_value(t->adjust_v);
-	double			ps = gtk_adjustment_get_page_size(t->adjust_v);
-	double			upper = gtk_adjustment_get_upper(t->adjust_v);
-	double			lower = gtk_adjustment_get_lower(t->adjust_v);
-	double			max = upper - ps;
+	GtkAdjustment		*adjust;
+	double			pos;
+	double			ps;
+	double			upper;
+	double			lower;
+	double			max;
 
-	fprintf(stderr, "move %d vpos %f ps %f upper %f lower %f max %f\n",
-	    args->i, vpos, ps, upper, lower, max);
+	switch (args->i) {
+	case XT_MOVE_DOWN:
+	case XT_MOVE_UP:
+	case XT_MOVE_BOTTOM:
+	case XT_MOVE_TOP:
+	case XT_MOVE_PAGEDOWN:
+	case XT_MOVE_PAGEUP:
+		adjust = t->adjust_v;
+		break;
+	default:
+		adjust = t->adjust_h;
+		break;
+	}
+
+	pos = gtk_adjustment_get_value(adjust);
+	ps = gtk_adjustment_get_page_size(adjust);
+	upper = gtk_adjustment_get_upper(adjust);
+	lower = gtk_adjustment_get_lower(adjust);
+	max = upper - ps;
+
+	fprintf(stderr, "move opcode %d %s pos %f ps %f upper %f lower %f max %f\n",
+	    args->i, adjust == t->adjust_h ? "horizontal" : "vertical", 
+	    pos, ps, upper, lower, max);
 
 	switch (args->i) {
 	case XT_MOVE_DOWN:
-		vpos += 24;
-		gtk_adjustment_set_value(t->adjust_v, MIN(vpos, max));
+	case XT_MOVE_RIGHT:
+		pos += 24;
+		gtk_adjustment_set_value(adjust, MIN(pos, max));
 		break;
 	case XT_MOVE_UP:
-		vpos -= 24;
-		gtk_adjustment_set_value(t->adjust_v, MAX(vpos, lower));
+	case XT_MOVE_LEFT:
+		pos -= 24;
+		gtk_adjustment_set_value(adjust, MAX(pos, lower));
 		break;
 	case XT_MOVE_BOTTOM:
-		gtk_adjustment_set_value(t->adjust_v, max);
+	case XT_MOVE_FARRIGHT:
+		gtk_adjustment_set_value(adjust, max);
 		break;
 	case XT_MOVE_TOP:
-		gtk_adjustment_set_value(t->adjust_v, lower);
+	case XT_MOVE_FARLEFT:
+		gtk_adjustment_set_value(adjust, lower);
 		break;
 	case XT_MOVE_PAGEDOWN:
-		vpos += ps;
-		gtk_adjustment_set_value(t->adjust_v, MIN(vpos, max));
+		pos += ps;
+		gtk_adjustment_set_value(adjust, MIN(pos, max));
 		break;
 	case XT_MOVE_PAGEUP:
-		vpos -= ps;
-		gtk_adjustment_set_value(t->adjust_v, MAX(vpos, lower));
+		pos -= ps;
+		gtk_adjustment_set_value(adjust, MAX(pos, lower));
 		break;
 	default:
 		return (0); /* let webkit deal with it */
 	}
 
-	fprintf(stderr, "new vpos: %f  %f\n", vpos, MIN(vpos, max));
+	fprintf(stderr, "new pos: %f  %f\n", pos, MIN(pos, max));
 
 	return (1); /* handled */
 }
@@ -146,6 +176,8 @@ struct key {
 } keys[] = {
 	{ GDK_SHIFT_MASK,	0,	GDK_colon,	command,	{0} },
 	{ GDK_CONTROL_MASK,	0,	GDK_q,		quit,		{0} },
+
+	/* vertical movement */
 	{ 0,			0,	GDK_j,		move,		{.i = XT_MOVE_DOWN} },
 	{ 0,			0,	GDK_Down,	move,		{.i = XT_MOVE_DOWN} },
 	{ 0,			0,	GDK_Up,		move,		{.i = XT_MOVE_UP} },
@@ -153,9 +185,17 @@ struct key {
 	{ GDK_SHIFT_MASK,	0,	GDK_G,		move,		{.i = XT_MOVE_BOTTOM} },
 	{ 0,			0,	GDK_End,	move,		{.i = XT_MOVE_BOTTOM} },
 	{ 0,			0,	GDK_Home,	move,		{.i = XT_MOVE_TOP} },
+	{ 0,			GDK_g,	GDK_g,		move,		{.i = XT_MOVE_TOP} }, /* XXX make this work */
 	{ 0,			0,	GDK_space,	move,		{.i = XT_MOVE_PAGEDOWN} },
 	{ 0,			0,	GDK_Page_Down,	move,		{.i = XT_MOVE_PAGEDOWN} },
 	{ 0,			0,	GDK_Page_Up,	move,		{.i = XT_MOVE_PAGEUP} },
+	/* horizontal movement */
+	{ 0,			0,	GDK_l,		move,		{.i = XT_MOVE_RIGHT} },
+	{ 0,			0,	GDK_Right,	move,		{.i = XT_MOVE_RIGHT} },
+	{ 0,			0,	GDK_Left,	move,		{.i = XT_MOVE_LEFT} },
+	{ 0,			0,	GDK_h,		move,		{.i = XT_MOVE_LEFT} },
+	{ GDK_SHIFT_MASK,	0,	GDK_dollar,	move,		{.i = XT_MOVE_FARRIGHT} },
+	{ 0,			0,	GDK_0,		move,		{.i = XT_MOVE_FARLEFT} },
 };
 
 void