diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-02-23 05:06:58 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-02-23 05:06:58 +0000 |
commit | e04f6d71cb0f782c82855677d9c3fbabf8b29f51 (patch) | |
tree | 874898216842f9c19bb1d248d484a47f7958cf65 /src | |
parent | d759c99df0ad6f2b774691c82daf9fc18f57498d (diff) |
re-enabled the line number limit of logwindow.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@122 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/logwindow.c | 36 | ||||
-rw-r--r-- | src/prefs_common.c | 3 | ||||
-rw-r--r-- | src/prefs_common.h | 2 |
3 files changed, 25 insertions, 16 deletions
diff --git a/src/logwindow.c b/src/logwindow.c index 41cdf254..277adfe3 100644 --- a/src/logwindow.c +++ b/src/logwindow.c @@ -1,6 +1,6 @@ /* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client - * Copyright (C) 1999-2003 Hiroyuki Yamamoto + * Copyright (C) 1999-2005 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -32,10 +32,10 @@ #include <gtk/gtkstyle.h> #include "logwindow.h" +#include "prefs_common.h" #include "utils.h" #include "gtkutils.h" -#define MAX_LINES 500 #define TRIM_LINES 25 static LogWindow *logwindow; @@ -91,7 +91,7 @@ LogWindow *log_window_create(void) logwin->window = window; logwin->scrolledwin = scrolledwin; logwin->text = text; - logwin->lines = 0; + logwin->lines = 1; logwindow = logwin; @@ -107,8 +107,6 @@ void log_window_init(LogWindow *logwin) gboolean success[3]; gint i; - //gtkut_widget_disable_theme_engine(logwin->text); - logwin->msg_color = color[0]; logwin->warn_color = color[1]; logwin->error_color = color[2]; @@ -147,30 +145,36 @@ void log_window_show(LogWindow *logwin) GtkTextMark *mark; buffer = gtk_text_view_get_buffer(text); - - gtk_widget_hide(logwin->window); - mark = gtk_text_buffer_get_mark(buffer, "end"); gtk_text_view_scroll_mark_onscreen(text, mark); - gtk_widget_show(logwin->window); + gtk_window_present(GTK_WINDOW(logwin->window)); } void log_window_append(const gchar *str, LogType type) { GtkTextView *text; GtkTextBuffer *buffer; - GtkTextMark *mark; GtkTextIter iter; GdkColor *color = NULL; gchar *head = NULL; const gchar *tag; + gint line_limit = prefs_common.logwin_line_limit; g_return_if_fail(logwindow != NULL); text = GTK_TEXT_VIEW(logwindow->text); buffer = gtk_text_view_get_buffer(text); - gtk_text_buffer_get_iter_at_offset(buffer, &iter, -1); + + if (line_limit > 0 && logwindow->lines >= line_limit) { + GtkTextIter start, end; + + gtk_text_buffer_get_start_iter(buffer, &start); + end = start; + gtk_text_iter_forward_lines(&end, TRIM_LINES); + gtk_text_buffer_delete(buffer, &start, &end); + logwindow->lines = gtk_text_buffer_get_line_count(buffer); + } switch (type) { case LOG_MSG: @@ -193,9 +197,7 @@ void log_window_append(const gchar *str, LogType type) break; } - if (logwindow->lines == MAX_LINES) { - // - } + gtk_text_buffer_get_end_iter(buffer, &iter); if (head) gtk_text_buffer_insert_with_tags_by_name @@ -203,9 +205,11 @@ void log_window_append(const gchar *str, LogType type) gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, str, -1, tag, NULL); - mark = gtk_text_buffer_get_mark(buffer, "end"); - if (GTK_WIDGET_VISIBLE(text)) + if (GTK_WIDGET_VISIBLE(text)) { + GtkTextMark *mark; + mark = gtk_text_buffer_get_mark(buffer, "end"); gtk_text_view_scroll_mark_onscreen(text, mark); + } logwindow->lines++; } diff --git a/src/prefs_common.c b/src/prefs_common.c index 459f1d00..3b9d7105 100644 --- a/src/prefs_common.c +++ b/src/prefs_common.c @@ -653,6 +653,9 @@ static PrefParam param[] = { P_INT, &other.spinbtn_iotimeout, prefs_set_data_from_spinbtn, prefs_set_spinbtn}, + {"logwindow_line_limit", "1000", &prefs_common.logwin_line_limit, + P_INT, NULL, NULL, NULL}, + {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL} }; diff --git a/src/prefs_common.h b/src/prefs_common.h index b8075649..259410a3 100644 --- a/src/prefs_common.h +++ b/src/prefs_common.h @@ -220,6 +220,8 @@ struct _PrefsCommon gint io_timeout_secs; + gint logwin_line_limit; + /* Filtering */ GSList *fltlist; |