[前][次][番号順一覧][スレッド一覧]

sylpheed-jp:432

From: Makoto Setoh <setoh@xxxxxxxxxx>
Date: Wed, 14 Mar 2001 13:51:29 +0900
Subject: [sylpheed-jp:00432] スムーススクロールのパッチ

瀬藤@MCRです。

山本さま、卒業おめでとうございます。
Sylpheed いつも便利に使わせていただいております。

卒業記念というわけではないですが、スペースキー、BS キーによる
メールの表示を半画面単位でスムーススクロールにするパッチを作ってみました。
CVS 版ではなくて、sylpheed-0.4.62 版に対するものです。(すみません..)

スムースといっても単純に1行ずつスクロールするようにしただけなので、
もしかすると古いマシンなどでは少々重く感じるかも知れません。

# 私のマシン P3-700 ではスムースにいってます。(^^;

このパッチを当てると無条件に上記の仕様になります。
本来なら設定画面にて切り替えられる方が望ましいはずですが、
私の力量ではそこまでは出来ませんでした。

とりあえず、短いので本文に添付します。
興味のある方はお試しください。

--- src-org/textview.c	Wed Mar 14 13:09:44 2001
+++ src/textview.c	Wed Mar 14 13:19:54 2001
@@ -933,21 +933,48 @@
 	GtkText *text = GTK_TEXT(textview->text);
 	gfloat upper;
 
+        gint old_value = 0;
+        gint last_value = 0;
+        gint change_value = 0;
+        gint i;
+
 	if (!up) {
 		upper = text->vadj->upper - text->vadj->page_size;
 		if (text->vadj->value < upper) {
-			text->vadj->value += text->vadj->page_increment;
+                        old_value = text->vadj->value;
+
+			text->vadj->value += text->vadj->page_increment / 2;
 			text->vadj->value = MIN(text->vadj->value, upper);
-			gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
+
+		        gdk_key_repeat_disable();
+                        last_value = text->vadj->value;
+                        change_value = last_value - old_value;
+			for ( i = 1; i <= change_value; i++ ) {
+
+                            text->vadj->value = old_value + i;
+			    gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
 						"value_changed");
+			}
+                        gdk_key_repeat_restore();
 		} else
 			return FALSE;
 	} else {
 		if (text->vadj->value > 0.0) {
-			text->vadj->value -= text->vadj->page_increment;
+                        old_value = text->vadj->value;
+
+			text->vadj->value -= text->vadj->page_increment / 2;
 			text->vadj->value = MAX(text->vadj->value, 0.0);
-			gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
+
+		        gdk_key_repeat_disable();
+                        last_value = text->vadj->value;
+                        change_value = old_value - last_value;
+
+                        for ( i = 1; i <= change_value; i++ ) {
+                            text->vadj->value = old_value - i;
+			    gtk_signal_emit_by_name(GTK_OBJECT(text->vadj),
 						"value_changed");
+			}
+                        gdk_key_repeat_restore();
 		} else
 			return FALSE;
 	}


--
 三菱電機コントロールソフトウェア(株)伊丹事業所
  技術第2課 新事業開拓グループ 瀬藤 誠
  setoh@xxxxxxxxxx  http://www.mcr.co.jp/


[前][次][番号順一覧][スレッド一覧]

->     432 2001-03-14 13:51 [setoh@xxxxxxxxxx    ] スムーススクロールのパッチ              
   @   433 2001-03-14 16:28 ┗[gm@xxxxxxxxxx       ]                                       
       434 2001-03-14 16:33  ┗[gm@xxxxxxxxxx       ]                                     
       435 2001-03-16 10:11   ┗[setoh@xxxxxxxxxx    ]