From 550cb4ae6091d85f5d092913d3469766a5e94669 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Mon, 2 Mar 2009 15:49:36 +0330 Subject: [PATCH] txtwin: add % command --- txtwin.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/txtwin.c b/txtwin.c index 25f456a..1e5c90c 100644 --- a/txtwin.c +++ b/txtwin.c @@ -26,6 +26,7 @@ enum location { LOC_PAGE, LOC_STEP, LOC_LINE, + LOC_PERCENT, LOC_BEG, LOC_END }; @@ -48,8 +49,9 @@ static int get_arg(struct txtwin *tw, int def) static void scroll(struct txtwin *tw, enum location loc, int n) { int val = gtk_adjustment_get_value(tw->adjst); - int max = gtk_adjustment_get_upper(tw->adjst) - - gtk_adjustment_get_page_size(tw->adjst); + int page = gtk_adjustment_get_page_size(tw->adjst); + int end = gtk_adjustment_get_upper(tw->adjst); + int max = end - page; n *= get_arg(tw, 1); switch(loc) { case LOC_PAGE: @@ -61,6 +63,9 @@ static void scroll(struct txtwin *tw, enum location loc, int n) case LOC_LINE: val = get_arg(tw, 0) ? 0 : max; break; + case LOC_PERCENT: + val = get_arg(tw, 0) * end / 100 - page; + break; case LOC_BEG: val = 0; break; @@ -133,6 +138,9 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, case GDK_q: gtk_main_quit(); break; + case GDK_percent: + scroll(tw, LOC_PERCENT, 1); + break; case GDK_Escape: tw->arg = 0; default: -- 2.11.4.GIT