summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStu Tomlinson <nosnilmot@pidgin.im>2007-05-11 20:06:57 +0000
committerStu Tomlinson <nosnilmot@pidgin.im>2007-05-11 20:06:57 +0000
commiteb3002bf2c2d78b834a5d59db8a7226522fe286c (patch)
tree43b36667dab32b0de1b270c9ca37fb4ac1d5db02
parentf522203cfcfdbf3ce730ad77206775cf23088fd4 (diff)
downloadpidgin-eb3002bf2c2d78b834a5d59db8a7226522fe286c.tar.gz
Ignore bold, underline and other formatting type things in SPAN tags if
"Show formatting on incoming messages" is turned off. This makes handling of these things consistent with other formatting tags. Fixes #520.
-rw-r--r--pidgin/gtkimhtml.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/pidgin/gtkimhtml.c b/pidgin/gtkimhtml.c
index 44a431cf93..15a564c54f 100644
--- a/pidgin/gtkimhtml.c
+++ b/pidgin/gtkimhtml.c
@@ -2761,7 +2761,8 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
}
if (textdec && font->underline != 1
&& g_ascii_strcasecmp(textdec, "underline") == 0
- && (imhtml->format_functions & GTK_IMHTML_UNDERLINE))
+ && (imhtml->format_functions & GTK_IMHTML_UNDERLINE)
+ && !(options & GTK_IMHTML_NO_FORMATTING))
{
gtk_imhtml_toggle_underline(imhtml);
font->underline = 1;
@@ -2790,7 +2791,7 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
else
font->bold = 0;
}
- if ((font->bold && oldfont && !oldfont->bold) || (oldfont && oldfont->bold && !font->bold) || (font->bold && !oldfont))
+ if (((font->bold && oldfont && !oldfont->bold) || (oldfont && oldfont->bold && !font->bold) || (font->bold && !oldfont)) && !(options & GTK_IMHTML_NO_FORMATTING))
{
gtk_imhtml_toggle_bold(imhtml);
}
@@ -2816,33 +2817,36 @@ void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
if (!oldfont) {
gtk_imhtml_font_set_size(imhtml, 3);
- if (font->underline)
+ if (font->underline && !(options & GTK_IMHTML_NO_FORMATTING))
gtk_imhtml_toggle_underline(imhtml);
- if (font->bold)
+ if (font->bold && !(options & GTK_IMHTML_NO_FORMATTING))
gtk_imhtml_toggle_bold(imhtml);
- gtk_imhtml_toggle_fontface(imhtml, NULL);
- gtk_imhtml_toggle_forecolor(imhtml, NULL);
- gtk_imhtml_toggle_backcolor(imhtml, NULL);
+ if (!(options & GTK_IMHTML_NO_FONTS))
+ gtk_imhtml_toggle_fontface(imhtml, NULL);
+ if (!(options & GTK_IMHTML_NO_COLOURS))
+ gtk_imhtml_toggle_forecolor(imhtml, NULL);
+ if (!(options & GTK_IMHTML_NO_COLOURS))
+ gtk_imhtml_toggle_backcolor(imhtml, NULL);
}
else
{
- if (font->size != oldfont->size)
+ if ((font->size != oldfont->size) && !(options & GTK_IMHTML_NO_SIZES))
gtk_imhtml_font_set_size(imhtml, oldfont->size);
- if (font->underline != oldfont->underline)
+ if ((font->underline != oldfont->underline) && !(options & GTK_IMHTML_NO_FORMATTING))
gtk_imhtml_toggle_underline(imhtml);
- if ((font->bold && !oldfont->bold) || (oldfont->bold && !font->bold))
+ if (((font->bold && !oldfont->bold) || (oldfont->bold && !font->bold)) && !(options & GTK_IMHTML_NO_FORMATTING))
gtk_imhtml_toggle_bold(imhtml);
- if (font->face && (!oldfont->face || strcmp(font->face, oldfont->face) != 0))
+ if (font->face && (!oldfont->face || strcmp(font->face, oldfont->face) != 0) && !(options & GTK_IMHTML_NO_FONTS))
gtk_imhtml_toggle_fontface(imhtml, oldfont->face);
- if (font->fore && (!oldfont->fore || strcmp(font->fore, oldfont->fore) != 0))
+ if (font->fore && (!oldfont->fore || strcmp(font->fore, oldfont->fore) != 0) && !(options & GTK_IMHTML_NO_COLOURS))
gtk_imhtml_toggle_forecolor(imhtml, oldfont->fore);
- if (font->back && (!oldfont->back || strcmp(font->back, oldfont->back) != 0))
+ if (font->back && (!oldfont->back || strcmp(font->back, oldfont->back) != 0) && !(options & GTK_IMHTML_NO_COLOURS))
gtk_imhtml_toggle_backcolor(imhtml, oldfont->back);
}