From 61c4624f6d95cd33602c662e7f272ee5d73120a7 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Sat, 28 Feb 2009 21:46:55 +0330 Subject: [PATCH] txtwin: add page movements --- txtwin.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/txtwin.c b/txtwin.c index 9a13eb7..d381d4d 100644 --- a/txtwin.c +++ b/txtwin.c @@ -18,12 +18,14 @@ static void on_window_destroy(GtkWidget *widget, gpointer data) gtk_main_quit(); } -static void scroll(struct txtwin *tw, int count) +static void scroll(struct txtwin *tw, int page, int count) { int val = gtk_adjustment_get_value(tw->adjst); int max = gtk_adjustment_get_upper(tw->adjst) - gtk_adjustment_get_page_size(tw->adjst); - val += count * gtk_adjustment_get_step_increment(tw->adjst); + int step = page ? gtk_adjustment_get_page_increment(tw->adjst) : + gtk_adjustment_get_step_increment(tw->adjst); + val += count * step; if (val > max) val = max; if (val < 0) @@ -35,12 +37,26 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer data) { struct txtwin *tw = data; + int mod = event->state & gtk_accelerator_get_default_mod_mask(); + if (mod == GDK_CONTROL_MASK) { + switch(event->keyval) { + case GDK_f: + scroll(tw, 1, 1); + break; + case GDK_b: + scroll(tw, 1, -1); + break; + default: + break; + } + return 1; + } switch(event->keyval) { case GDK_j: - scroll(tw, 1); + scroll(tw, 0, 1); break; case GDK_k: - scroll(tw, -1); + scroll(tw, 0, -1); break; case GDK_q: gtk_main_quit(); -- 2.11.4.GIT