Mercurial > pidgin
comparison libpurple/protocols/bonjour/jabber.c @ 23999:48da97d84886
Don't arbitrarily default font settings when none are specified for incoming
Bonjour messages. Thanks to Simon Wenner for noticing and figuring out why
this was happening.
Fixes #6601
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 28 Aug 2008 04:12:31 +0000 |
parents | 0dd3df365017 |
children | bb8aa63494e7 |
comparison
equal
deleted
inserted
replaced
23998:18f6ff443104 | 23999:48da97d84886 |
---|---|
169 xmlnode *html_body_node; | 169 xmlnode *html_body_node; |
170 | 170 |
171 html_body_node = xmlnode_get_child(html_node, "body"); | 171 html_body_node = xmlnode_get_child(html_node, "body"); |
172 if (html_body_node != NULL) { | 172 if (html_body_node != NULL) { |
173 xmlnode *html_body_font_node; | 173 xmlnode *html_body_font_node; |
174 const char *ichat_balloon_color = NULL; | 174 |
175 const char *ichat_text_color = NULL; | |
176 const char *font_face = NULL; | |
177 const char *font_size = NULL; | |
178 const char *font_color = NULL; | |
179 | |
180 ichat_balloon_color = xmlnode_get_attrib(html_body_node, "ichatballooncolor"); | |
181 ichat_text_color = xmlnode_get_attrib(html_body_node, "ichattextcolor"); | |
182 html_body_font_node = xmlnode_get_child(html_body_node, "font"); | 175 html_body_font_node = xmlnode_get_child(html_body_node, "font"); |
183 | |
184 /* Types of messages sent by iChat */ | 176 /* Types of messages sent by iChat */ |
185 if (html_body_font_node != NULL) { | 177 if (html_body_font_node != NULL) { |
186 gchar *html_body; | 178 gchar *html_body; |
179 const char *font_face, *font_size, *font_color, | |
180 *ichat_balloon_color, *ichat_text_color; | |
187 | 181 |
188 font_face = xmlnode_get_attrib(html_body_font_node, "face"); | 182 font_face = xmlnode_get_attrib(html_body_font_node, "face"); |
189 /* The absolute iChat font sizes should be converted to 1..7 range */ | 183 /* The absolute iChat font sizes should be converted to 1..7 range */ |
190 font_size = xmlnode_get_attrib(html_body_font_node, "ABSZ"); | 184 font_size = xmlnode_get_attrib(html_body_font_node, "ABSZ"); |
191 if (font_size != NULL) | 185 if (font_size != NULL) |
192 font_size = _font_size_ichat_to_purple(atoi(font_size)); | 186 font_size = _font_size_ichat_to_purple(atoi(font_size)); |
193 font_color = xmlnode_get_attrib(html_body_font_node, "color"); | 187 font_color = xmlnode_get_attrib(html_body_font_node, "color"); |
188 ichat_balloon_color = xmlnode_get_attrib(html_body_node, "ichatballooncolor"); | |
189 ichat_text_color = xmlnode_get_attrib(html_body_node, "ichattextcolor"); | |
190 | |
194 html_body = get_xmlnode_contents(html_body_font_node); | 191 html_body = get_xmlnode_contents(html_body_font_node); |
195 | 192 |
196 if (html_body == NULL) | 193 if (html_body == NULL) |
197 /* This is the kind of formated messages that Purple creates */ | 194 /* This is the kind of formatted messages that Purple creates */ |
198 html_body = xmlnode_to_str(html_body_font_node, NULL); | 195 html_body = xmlnode_to_str(html_body_font_node, NULL); |
199 | 196 |
200 if (html_body != NULL) { | 197 if (html_body != NULL) { |
201 /* Use some sane defaults */ | 198 GString *str = g_string_new("<font"); |
202 if (font_face == NULL) font_face = "Helvetica"; | 199 |
203 if (font_size == NULL) font_size = "3"; | 200 if (font_face) |
204 if (ichat_text_color == NULL) ichat_text_color = "#000000"; | 201 g_string_append_printf(str, " face='%s'", font_face); |
205 if (ichat_balloon_color == NULL) ichat_balloon_color = "#FFFFFF"; | 202 if (font_size) |
206 | 203 g_string_append_printf(str, " size='%s'", font_size); |
207 body = g_strdup_printf("<font face='%s' size='%s' color='%s' back='%s'>%s</font>", | 204 if (ichat_text_color) |
208 font_face, font_size, ichat_text_color, ichat_balloon_color, | 205 g_string_append_printf(str, " color='%s'", ichat_text_color); |
209 html_body); | 206 if (ichat_balloon_color) |
207 g_string_append_printf(str, " back='%s'", ichat_balloon_color); | |
208 g_string_append_printf(str, ">%s</font>", html_body); | |
209 | |
210 body = g_string_free(str, FALSE); | |
210 | 211 |
211 g_free(html_body); | 212 g_free(html_body); |
212 } | 213 } |
213 } | 214 } |
214 } | 215 } |