aboutsummaryrefslogtreecommitdiff
path: root/src/textview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-10-20 07:44:53 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-10-20 07:44:53 +0000
commitb9112be97d8a5d786658378212d3dd95dbff1ee9 (patch)
tree74917f71c3a9779f155740b3bee2f6fbf7a183c8 /src/textview.c
parent36aecc8ea3dcab2bc0cc306414541672a689c760 (diff)
textview.c: fixed a problem that the view was scrolled to top when it got focus.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@669 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/textview.c')
-rw-r--r--src/textview.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/textview.c b/src/textview.c
index 43641078..9ee523a3 100644
--- a/src/textview.c
+++ b/src/textview.c
@@ -203,6 +203,9 @@ static void textview_popup_menu_activate_image_cb
(GtkMenuItem *menuitem,
gpointer data);
+static void textview_adj_value_changed (GtkAdjustment *adj,
+ gpointer data);
+
static void textview_smooth_scroll_do (TextView *textview,
gfloat old_value,
gfloat last_value,
@@ -282,6 +285,10 @@ TextView *textview_create(void)
g_signal_connect(G_OBJECT(text), "populate-popup",
G_CALLBACK(textview_populate_popup), textview);
+ g_signal_connect(G_OBJECT(GTK_TEXT_VIEW(text)->vadjustment),
+ "value-changed",
+ G_CALLBACK(textview_adj_value_changed), textview);
+
gtk_widget_show(scrolledwin);
vbox = gtk_vbox_new(FALSE, 0);
@@ -1484,11 +1491,17 @@ static void textview_smooth_scroll_do(TextView *textview,
/* gdk_key_repeat_disable(); */
+ g_signal_handlers_block_by_func(vadj, textview_adj_value_changed,
+ textview);
+
for (i = step; i <= change_value; i += step) {
vadj->value = old_value + (up ? -i : i);
g_signal_emit_by_name(G_OBJECT(vadj), "value_changed", 0);
}
+ g_signal_handlers_unblock_by_func(vadj, textview_adj_value_changed,
+ textview);
+
vadj->value = last_value;
g_signal_emit_by_name(G_OBJECT(vadj), "value_changed", 0);
@@ -2044,6 +2057,13 @@ static void textview_popup_menu_activate_image_cb(GtkMenuItem *menuitem,
g_free(src);
}
+static void textview_adj_value_changed(GtkAdjustment *adj, gpointer data)
+{
+ TextView *textview = (TextView *)data;
+
+ gtk_text_view_place_cursor_onscreen(GTK_TEXT_VIEW(textview->text));
+}
+
static gboolean textview_uri_security_check(TextView *textview, RemoteURI *uri)
{
GtkTextBuffer *buffer;