diff --git a/src/text.c b/src/text.c index bde43ad..21a544d 100644 --- a/src/text.c +++ b/src/text.c @@ -30,6 +30,16 @@ static ZenityTextData *zen_text_data; static void zenity_text_dialog_response ( GtkWidget *widget, int response, gpointer data); +static gboolean +zenity_text_scroll_to_end (gpointer user_data) { + GtkTextIter iter; + gtk_text_buffer_get_end_iter ( + gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data)), &iter); + gtk_text_view_scroll_to_iter ( + GTK_TEXT_VIEW (user_data), &iter, 0.0, FALSE, 0, 0); + return G_SOURCE_REMOVE; +} + static gboolean zenity_text_handle_stdin ( GIOChannel *channel, GIOCondition condition, gpointer data) { @@ -88,6 +98,8 @@ zenity_text_handle_stdin ( } else { gtk_text_buffer_insert (buffer, &end, buf, len); } + + zenity_text_scroll_to_end (text_view); } } @@ -158,9 +170,10 @@ zenity_text (ZenityData *data, ZenityTextData *text_data) { } G_GNUC_END_IGNORE_DEPRECATIONS - if (text_data->uri) + if (text_data->uri) { zenity_util_fill_file_buffer (text_buffer, text_data->uri); - else + g_idle_add (zenity_text_scroll_to_end, text_view); + } else zenity_text_fill_entries_from_stdin (GTK_TEXT_VIEW (text_view)); if (data->extra_label) {