Mercurial > pidgin.yaz
comparison pidgin/gtkutils.c @ 31816:917c597beb97
Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
committer: John Bailey <rekkanoryo@rekkanoryo.org>
author | Gabriel Schulhof <nix@go-nix.ca> |
---|---|
date | Sat, 08 Jan 2011 03:45:42 +0000 |
parents | 695b6e57e255 |
children | 17a4b32f4d46 |
comparison
equal
deleted
inserted
replaced
31815:d169a587901f | 31816:917c597beb97 |
---|---|
243 g_signal_connect_swapped(G_OBJECT(toolbar), "show", G_CALLBACK(gtk_widget_show), sep); | 243 g_signal_connect_swapped(G_OBJECT(toolbar), "show", G_CALLBACK(gtk_widget_show), sep); |
244 g_signal_connect_swapped(G_OBJECT(toolbar), "hide", G_CALLBACK(gtk_widget_hide), sep); | 244 g_signal_connect_swapped(G_OBJECT(toolbar), "hide", G_CALLBACK(gtk_widget_hide), sep); |
245 gtk_widget_show(sep); | 245 gtk_widget_show(sep); |
246 } | 246 } |
247 | 247 |
248 sw = gtk_scrolled_window_new(NULL, NULL); | |
249 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
250 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | |
251 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
252 gtk_widget_show(sw); | |
253 | |
254 imhtml = gtk_imhtml_new(NULL, NULL); | 248 imhtml = gtk_imhtml_new(NULL, NULL); |
255 gtk_imhtml_set_editable(GTK_IMHTML(imhtml), editable); | 249 gtk_imhtml_set_editable(GTK_IMHTML(imhtml), editable); |
256 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE); | 250 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE); |
257 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR); | 251 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR); |
258 #ifdef USE_GTKSPELL | 252 #ifdef USE_GTKSPELL |
265 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), imhtml); | 259 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), imhtml); |
266 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default"); | 260 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default"); |
267 } | 261 } |
268 pidgin_setup_imhtml(imhtml); | 262 pidgin_setup_imhtml(imhtml); |
269 | 263 |
270 gtk_container_add(GTK_CONTAINER(sw), imhtml); | 264 sw = pidgin_make_scrollable(imhtml, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, -1); |
265 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | |
271 | 266 |
272 if (imhtml_ret != NULL) | 267 if (imhtml_ret != NULL) |
273 *imhtml_ret = imhtml; | 268 *imhtml_ret = imhtml; |
274 | 269 |
275 if (editable && (toolbar_ret != NULL)) | 270 if (editable && (toolbar_ret != NULL)) |
3490 purple_debug_error("winpidgin", "Error iterating HKEY_CLASSES_ROOT subkeys: %ld\n", | 3485 purple_debug_error("winpidgin", "Error iterating HKEY_CLASSES_ROOT subkeys: %ld\n", |
3491 ret); | 3486 ret); |
3492 } | 3487 } |
3493 #endif | 3488 #endif |
3494 | 3489 |
3490 GtkWidget * | |
3491 pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, GtkShadowType shadow_type, int width, int height) | |
3492 { | |
3493 GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL); | |
3494 | |
3495 if (G_LIKELY(sw)) { | |
3496 gtk_widget_show(sw); | |
3497 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), hscrollbar_policy, vscrollbar_policy); | |
3498 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), shadow_type); | |
3499 if (width != -1 || height != -1) | |
3500 gtk_widget_set_size_request(sw, width, height); | |
3501 if (child) { | |
3502 if (GTK_WIDGET_GET_CLASS(child)->set_scroll_adjustments_signal) | |
3503 gtk_container_add(GTK_CONTAINER(sw), child); | |
3504 else | |
3505 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), child); | |
3506 } | |
3507 return sw; | |
3508 } | |
3509 | |
3510 return child; | |
3511 } | |
3512 | |
3495 void pidgin_utils_init(void) | 3513 void pidgin_utils_init(void) |
3496 { | 3514 { |
3497 gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu); | 3515 gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu); |
3498 gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu); | 3516 gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu); |
3499 gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu); | 3517 gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu); |