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 }