summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBerke Viktor <bviktor@hexchat.org>2012-07-19 09:14:34 +0200
committerBerke Viktor <bviktor@hexchat.org>2012-07-19 09:14:56 +0200
commitef81a24f643a5373c751ff827ccf07e479a5e75f (patch)
treef9f370425e0b2ac46f97900bc3b0fdd4f057faa0
parent89584e565ae97a0095c8519b0c519d0a01c49d9d (diff)
Add option to retain colors in scrollback
-rw-r--r--src/common/cfgfiles.c2
-rw-r--r--src/common/text.c10
-rw-r--r--src/common/xchat.h1
-rw-r--r--src/fe-gtk/setup.c1
4 files changed, 12 insertions, 2 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c
index 1ab285ad..56f327f1 100644
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -586,6 +586,7 @@ const struct prefs vars[] = {
 	{"text_max_indent", P_OFFINT (max_auto_indent), TYPE_INT},
 	{"text_max_lines", P_OFFINT (max_lines), TYPE_INT},
 	{"text_replay", P_OFFINT (text_replay), TYPE_BOOL},
+	{"text_replay_strip_color", P_OFFINT (text_replay_strip_color), TYPE_BOOL},
 	{"text_search_case_match", P_OFFINT (text_search_case_match), TYPE_BOOL},
 	{"text_search_backward", P_OFFINT (text_search_backward), TYPE_BOOL},
 	{"text_search_highlight_all", P_OFFINT (text_search_highlight_all), TYPE_BOOL},
@@ -677,6 +678,7 @@ load_config (void)
 	prefs.recon_delay = 10;
 	prefs.autocopy_text = 1;
 	prefs.text_replay = 1;
+	prefs.text_replay_strip_color = 1;
 	prefs.tabchannels = 1;
 	prefs.tab_layout = 2;	/* 0=Tabs 1=Reserved 2=Tree */
 	prefs.tab_sort = 1;
diff --git a/src/common/text.c b/src/common/text.c
index 25dd5cf1..c437634e 100644
--- a/src/common/text.c
+++ b/src/common/text.c
@@ -338,7 +338,10 @@ scrollback_load (session *sess)
 			text = strchr (buf + 3, ' ');
 			if (text)
 			{
-				text = strip_color (text + 1, -1, STRIP_COLOR);
+				if (prefs.text_replay_strip_color)
+				{
+					text = strip_color (text + 1, -1, STRIP_COLOR);
+				}
 				fe_print_text (sess, text, stamp);
 				g_free (text);
 			}
@@ -373,7 +376,10 @@ scrollback_load (session *sess)
 			text = strchr (buf + 3, ' ');
 			if (text)
 			{
-				text = strip_color (text + 1, -1, STRIP_COLOR);
+				if (prefs.text_replay_strip_color)
+				{
+					text = strip_color (text + 1, -1, STRIP_COLOR);
+				}
 				cleaned_text = text_replace_non_bmp (text, -1, &cleaned_len);
 				if (cleaned_text != NULL)
 				{
diff --git a/src/common/xchat.h b/src/common/xchat.h
index b4f79f0f..2349e23b 100644
--- a/src/common/xchat.h
+++ b/src/common/xchat.h
@@ -284,6 +284,7 @@ struct xchatprefs
 	unsigned int windows_as_tabs;
 	unsigned int indent_nicks;
 	unsigned int text_replay;
+	unsigned int text_replay_strip_color;
 	unsigned int show_marker;
 	unsigned int show_separator;
 	unsigned int thin_separator;
diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c
index c11bb474..6f361141 100644
--- a/src/fe-gtk/setup.c
+++ b/src/fe-gtk/setup.c
@@ -446,6 +446,7 @@ static const setting logging_settings[] =
 {
 	{ST_HEADER,	N_("Logging"),0,0,0},
 	{ST_TOGGLE,	N_("Display scrollback from previous session"), P_OFFINTNL(text_replay), 0, 0, 0},
+	{ST_TOGGLE,	N_("Strip colors when displaying scrollback"), P_OFFINTNL(text_replay_strip_color), 0, 0, 0},
 	{ST_TOGGLE,	N_("Enable logging of conversations to disk"), P_OFFINTNL(logging), 0, 0, 2},
 	{ST_ENTRY,	N_("Log filename:"), P_OFFSETNL(logmask), 0, 0, sizeof prefs.logmask},
 	{ST_LABEL,	N_("%s=Server %c=Channel %n=Network.")},