Mercurial > pidgin.yaz
comparison src/gtkimhtml.c @ 13224:2f6c932e5742
[gaim-migrate @ 15588]
Function-sized #defines are kinda ugly to work with.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sat, 11 Feb 2006 07:51:04 +0000 |
parents | 3a3538be5b6a |
children | d04cfb5fa85b |
comparison
equal
deleted
inserted
replaced
13223:3a3538be5b6a | 13224:2f6c932e5742 |
---|---|
4254 void gtk_imhtml_font_grow(GtkIMHtml *imhtml) | 4254 void gtk_imhtml_font_grow(GtkIMHtml *imhtml) |
4255 { | 4255 { |
4256 imhtml_emit_signal_for_format(imhtml, GTK_IMHTML_GROW); | 4256 imhtml_emit_signal_for_format(imhtml, GTK_IMHTML_GROW); |
4257 } | 4257 } |
4258 | 4258 |
4259 #define gtk_imhtml_toggle_str_tag(imhtml, color, edit_field, remove_func, find_func, button) { \ | 4259 static gboolean gtk_imhtml_toggle_str_tag(GtkIMHtml *imhtml, const char *value, char **edit_field, |
4260 GObject *object; \ | 4260 void (*remove_func)(GtkIMHtml *imhtml, GtkTextIter *i, GtkTextIter *e, gboolean homo), |
4261 GtkTextIter start, end; \ | 4261 GtkTextTag *(find_func)(GtkIMHtml *imhtml, gchar *color), GtkIMHtmlButtons button) |
4262 \ | 4262 { |
4263 g_free(edit_field); \ | 4263 GObject *object; |
4264 edit_field = NULL; \ | 4264 GtkTextIter start; |
4265 \ | 4265 GtkTextIter end; |
4266 if (color && strcmp(color, "") != 0) { \ | 4266 |
4267 edit_field = g_strdup(color); \ | 4267 g_free(*edit_field); |
4268 \ | 4268 *edit_field = NULL; |
4269 if (imhtml->wbfo) { \ | 4269 |
4270 gtk_text_buffer_get_bounds(imhtml->text_buffer, &start, &end); \ | 4270 if (value && strcmp(value, "") != 0) |
4271 remove_func(imhtml, &start, &end, TRUE); \ | 4271 { |
4272 gtk_text_buffer_apply_tag(imhtml->text_buffer, \ | 4272 *edit_field = g_strdup(value); |
4273 find_func(imhtml, edit_field), &start, &end); \ | 4273 |
4274 } else { \ | 4274 if (imhtml->wbfo) |
4275 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &start, \ | 4275 { |
4276 gtk_text_buffer_get_mark(imhtml->text_buffer, "insert")); \ | 4276 gtk_text_buffer_get_bounds(imhtml->text_buffer, &start, &end); |
4277 if (imhtml->editable && gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, &start, &end)) { \ | 4277 remove_func(imhtml, &start, &end, TRUE); |
4278 remove_func(imhtml, &start, &end, FALSE); \ | 4278 gtk_text_buffer_apply_tag(imhtml->text_buffer, |
4279 gtk_text_buffer_apply_tag(imhtml->text_buffer, \ | 4279 find_func(imhtml, *edit_field), &start, &end); |
4280 find_func(imhtml, \ | 4280 } |
4281 edit_field), \ | 4281 else |
4282 &start, &end); \ | 4282 { |
4283 } \ | 4283 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &start, |
4284 } \ | 4284 gtk_text_buffer_get_mark(imhtml->text_buffer, "insert")); |
4285 } else { \ | 4285 if (imhtml->editable && gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, &start, &end)) |
4286 if (imhtml->wbfo) { \ | 4286 { |
4287 gtk_text_buffer_get_bounds(imhtml->text_buffer, &start, &end); \ | 4287 remove_func(imhtml, &start, &end, FALSE); |
4288 remove_func(imhtml, &start, &end, TRUE); \ | 4288 gtk_text_buffer_apply_tag(imhtml->text_buffer, |
4289 } else { \ | 4289 find_func(imhtml, |
4290 if (imhtml->editable && gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, &start, &end)) \ | 4290 *edit_field), |
4291 remove_func(imhtml, &start, &end, TRUE); \ | 4291 &start, &end); |
4292 } \ | 4292 } |
4293 } \ | 4293 } |
4294 \ | 4294 } |
4295 object = g_object_ref(G_OBJECT(imhtml)); \ | 4295 else |
4296 g_signal_emit(object, signals[TOGGLE_FORMAT], 0, button); \ | 4296 { |
4297 g_object_unref(object); \ | 4297 if (imhtml->wbfo) |
4298 \ | 4298 { |
4299 return edit_field != NULL; \ | 4299 gtk_text_buffer_get_bounds(imhtml->text_buffer, &start, &end); |
4300 remove_func(imhtml, &start, &end, TRUE); | |
4301 } | |
4302 else | |
4303 { | |
4304 if (imhtml->editable && gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, &start, &end)) | |
4305 remove_func(imhtml, &start, &end, TRUE); | |
4306 } | |
4307 } | |
4308 | |
4309 object = g_object_ref(G_OBJECT(imhtml)); | |
4310 g_signal_emit(object, signals[TOGGLE_FORMAT], 0, button); | |
4311 g_object_unref(object); | |
4312 | |
4313 return *edit_field != NULL; | |
4300 } | 4314 } |
4301 | 4315 |
4302 gboolean gtk_imhtml_toggle_forecolor(GtkIMHtml *imhtml, const char *color) | 4316 gboolean gtk_imhtml_toggle_forecolor(GtkIMHtml *imhtml, const char *color) |
4303 { | 4317 { |
4304 gtk_imhtml_toggle_str_tag(imhtml, color, imhtml->edit.forecolor, remove_font_forecolor, find_font_forecolor_tag, GTK_IMHTML_FORECOLOR); | 4318 return gtk_imhtml_toggle_str_tag(imhtml, color, &imhtml->edit.forecolor, |
4319 remove_font_forecolor, find_font_forecolor_tag, | |
4320 GTK_IMHTML_FORECOLOR); | |
4305 } | 4321 } |
4306 | 4322 |
4307 gboolean gtk_imhtml_toggle_backcolor(GtkIMHtml *imhtml, const char *color) | 4323 gboolean gtk_imhtml_toggle_backcolor(GtkIMHtml *imhtml, const char *color) |
4308 { | 4324 { |
4309 gtk_imhtml_toggle_str_tag(imhtml, color, imhtml->edit.backcolor, remove_font_backcolor, find_font_backcolor_tag, GTK_IMHTML_BACKCOLOR); | 4325 return gtk_imhtml_toggle_str_tag(imhtml, color, &imhtml->edit.backcolor, |
4326 remove_font_backcolor, find_font_backcolor_tag, | |
4327 GTK_IMHTML_BACKCOLOR); | |
4310 } | 4328 } |
4311 | 4329 |
4312 gboolean gtk_imhtml_toggle_background(GtkIMHtml *imhtml, const char *color) | 4330 gboolean gtk_imhtml_toggle_background(GtkIMHtml *imhtml, const char *color) |
4313 { | 4331 { |
4314 gtk_imhtml_toggle_str_tag(imhtml, color, imhtml->edit.background, remove_font_background, find_font_background_tag, GTK_IMHTML_BACKGROUND); | 4332 return gtk_imhtml_toggle_str_tag(imhtml, color, &imhtml->edit.background, |
4333 remove_font_background, find_font_background_tag, | |
4334 GTK_IMHTML_BACKGROUND); | |
4315 } | 4335 } |
4316 | 4336 |
4317 gboolean gtk_imhtml_toggle_fontface(GtkIMHtml *imhtml, const char *face) | 4337 gboolean gtk_imhtml_toggle_fontface(GtkIMHtml *imhtml, const char *face) |
4318 { | 4338 { |
4319 gtk_imhtml_toggle_str_tag(imhtml, face, imhtml->edit.fontface, remove_font_face, find_font_face_tag, GTK_IMHTML_FACE); | 4339 return gtk_imhtml_toggle_str_tag(imhtml, face, &imhtml->edit.fontface, |
4340 remove_font_face, find_font_face_tag, | |
4341 GTK_IMHTML_FACE); | |
4320 } | 4342 } |
4321 | 4343 |
4322 void gtk_imhtml_toggle_link(GtkIMHtml *imhtml, const char *url) | 4344 void gtk_imhtml_toggle_link(GtkIMHtml *imhtml, const char *url) |
4323 { | 4345 { |
4324 GObject *object; | 4346 GObject *object; |