comparison pidgin/gtkutils.c @ 31839:7281d151e492

merged from im.pidgin.pidgin
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Thu, 17 Mar 2011 20:25:26 +0900
parents fa88dc1dcabb d72d728226dc
children accce7b79737
comparison
equal deleted inserted replaced
31648:fa88dc1dcabb 31839:7281d151e492
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))
3493 purple_debug_error("winpidgin", "Error iterating HKEY_CLASSES_ROOT subkeys: %ld\n", 3488 purple_debug_error("winpidgin", "Error iterating HKEY_CLASSES_ROOT subkeys: %ld\n",
3494 ret); 3489 ret);
3495 } 3490 }
3496 #endif 3491 #endif
3497 3492
3493 GtkWidget *
3494 pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, GtkShadowType shadow_type, int width, int height)
3495 {
3496 GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
3497
3498 if (G_LIKELY(sw)) {
3499 gtk_widget_show(sw);
3500 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), hscrollbar_policy, vscrollbar_policy);
3501 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), shadow_type);
3502 if (width != -1 || height != -1)
3503 gtk_widget_set_size_request(sw, width, height);
3504 if (child) {
3505 if (GTK_WIDGET_GET_CLASS(child)->set_scroll_adjustments_signal)
3506 gtk_container_add(GTK_CONTAINER(sw), child);
3507 else
3508 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), child);
3509 }
3510 return sw;
3511 }
3512
3513 return child;
3514 }
3515
3498 void pidgin_utils_init(void) 3516 void pidgin_utils_init(void)
3499 { 3517 {
3500 gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu); 3518 gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu);
3501 gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu); 3519 gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu);
3502 gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu); 3520 gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu);