comparison src/gtkconv.c @ 8061:ea073d234191

[gaim-migrate @ 8749] <b><i><u>what you see is what you get</u></i></b> committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Sat, 10 Jan 2004 06:06:02 +0000
parents fa6395637e2c
children 73781ed9fdf7
comparison
equal deleted inserted replaced
8060:b66733e6e6f2 8061:ea073d234191
351 check_everything(buffer); 351 check_everything(buffer);
352 352
353 return FALSE; 353 return FALSE;
354 } 354 }
355 355
356 static void default_formatize(GaimConversation *conv) {
357 GaimGtkConversation *c = GAIM_GTK_CONVERSATION(conv);
358 GaimConnection *gc = gaim_conversation_get_gc(conv);
359
360 if (gc && gc->flags & GAIM_CONNECTION_HTML) {
361 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) {
362 gtk_imhtml_toggle_bold(GTK_IMHTML(c->entry));
363 }
364
365 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) {
366 gtk_imhtml_toggle_italic(GTK_IMHTML(c->entry));
367 }
368
369 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) {
370 gtk_imhtml_toggle_underline(GTK_IMHTML(c->entry));
371 }
372
373 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough")) {
374 /* Tell me noone uses <s> by default ... maybe I won't do
375 _toggle_strikethrough and not let them */
376 /* g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf);
377 strcpy(buf, buf2); */
378 }
379
380 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") || c->has_font) {
381 gtk_imhtml_toggle_fontface(GTK_IMHTML(c->entry), c->fontface);
382 }
383
384 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) {
385 gtk_imhtml_font_set_size(GTK_IMHTML(c->entry), gaim_prefs_get_int("/gaim/gtk/conversations/font_size"));
386 }
387
388 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) {
389 char *color = g_strdup_printf("#%02x%02x%02x",
390 c->fg_color.red / 256,
391 c->fg_color.green / 256,
392 c->fg_color.blue / 256);
393 gtk_imhtml_toggle_forecolor(GTK_IMHTML(c->entry), color);
394 g_free(color);
395 }
396
397 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) {
398 char *color = g_strdup_printf("#%02x%02x%02x",
399 c->bg_color.red / 256,
400 c->bg_color.green / 256,
401 c->bg_color.blue / 256);
402 gtk_imhtml_toggle_backcolor(GTK_IMHTML(c->entry), color);
403 g_free(color);
404 }
405 }
406 }
407
356 static void 408 static void
357 send_cb(GtkWidget *widget, GaimConversation *conv) 409 send_cb(GtkWidget *widget, GaimConversation *conv)
358 { 410 {
359 GaimGtkConversation *gtkconv; 411 GaimGtkConversation *gtkconv;
360 char *buf, *buf2; 412 char *buf;
361 GtkTextIter start_iter, end_iter;
362 int limit;
363 GaimConnection *gc = gaim_conversation_get_gc(conv); 413 GaimConnection *gc = gaim_conversation_get_gc(conv);
364 414
365 gtkconv = GAIM_GTK_CONVERSATION(conv); 415 gtkconv = GAIM_GTK_CONVERSATION(conv);
366 416
367 gtk_text_buffer_get_start_iter(gtkconv->entry_buffer, &start_iter); 417 if (gc && gc->flags & GAIM_CONNECTION_HTML)
368 gtk_text_buffer_get_end_iter(gtkconv->entry_buffer, &end_iter); 418 buf = gtk_imhtml_get_markup(GTK_IMHTML(gtkconv->entry));
369 buf2 = gtk_text_buffer_get_text(gtkconv->entry_buffer, 419 else
370 &start_iter, &end_iter, FALSE); 420 buf = gtk_imhtml_get_text(GTK_IMHTML(gtkconv->entry));
371 421
372 set_toggle(gtkconv->toolbar.bold, FALSE); 422 /* set_toggle(gtkconv->toolbar.bold, FALSE);
373 set_toggle(gtkconv->toolbar.italic, FALSE); 423 set_toggle(gtkconv->toolbar.italic, FALSE);
374 set_toggle(gtkconv->toolbar.underline, FALSE); 424 set_toggle(gtkconv->toolbar.underline, FALSE);
375 set_toggle(gtkconv->toolbar.larger_size, FALSE); 425 set_toggle(gtkconv->toolbar.larger_size, FALSE);
376 set_toggle(gtkconv->toolbar.normal_size, FALSE); 426 set_toggle(gtkconv->toolbar.normal_size, FALSE);
377 set_toggle(gtkconv->toolbar.smaller_size,FALSE); 427 set_toggle(gtkconv->toolbar.smaller_size,FALSE);
378 set_toggle(gtkconv->toolbar.font, FALSE); 428 set_toggle(gtkconv->toolbar.font, FALSE);
379 set_toggle(gtkconv->toolbar.fgcolor, FALSE); 429 set_toggle(gtkconv->toolbar.fgcolor, FALSE);
380 set_toggle(gtkconv->toolbar.bgcolor, FALSE); 430 set_toggle(gtkconv->toolbar.bgcolor, FALSE);
381 set_toggle(gtkconv->toolbar.link, FALSE); 431 set_toggle(gtkconv->toolbar.link, FALSE);
382 432 */
383 gtk_widget_grab_focus(gtkconv->entry); 433 gtk_widget_grab_focus(gtkconv->entry);
384
385 limit = 32 * 1024; /* This will be done again in gaim_conv_im_send. *shrug* */
386
387 buf = g_malloc(limit);
388 strncpy(buf, buf2, limit);
389
390 g_free(buf2);
391 434
392 if (strlen(buf) == 0) { 435 if (strlen(buf) == 0) {
393 g_free(buf); 436 g_free(buf);
394 437
395 return; 438 return;
396 } 439 }
397 440
398 buf2 = g_malloc(limit);
399
400 if (gc && gc->flags & GAIM_CONNECTION_HTML) {
401 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_bold")) {
402 g_snprintf(buf2, limit, "<B>%s</B>", buf);
403 strcpy(buf, buf2);
404 }
405
406 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_italic")) {
407 g_snprintf(buf2, limit, "<I>%s</I>", buf);
408 strcpy(buf, buf2);
409 }
410
411 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_underline")) {
412 g_snprintf(buf2, limit, "<U>%s</U>", buf);
413 strcpy(buf, buf2);
414 }
415
416 if (gaim_prefs_get_bool("/gaim/gtk/conversations/send_strikethrough")) {
417 g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf);
418 strcpy(buf, buf2);
419 }
420
421 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_font") ||
422 gtkconv->has_font) {
423
424 g_snprintf(buf2, limit,
425 "<FONT FACE=\"%s\">%s</FONT>", gtkconv->fontface, buf);
426 strcpy(buf, buf2);
427 }
428
429 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_size")) {
430 g_snprintf(buf2, limit,
431 "<FONT SIZE=\"%d\">%s</FONT>",
432 gaim_prefs_get_int("/gaim/gtk/conversations/font_size"),
433 buf);
434 strcpy(buf, buf2);
435 }
436
437 if (gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_fgcolor")) {
438 g_snprintf(buf2, limit,
439 "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>",
440 gtkconv->fg_color.red / 256,
441 gtkconv->fg_color.green / 256,
442 gtkconv->fg_color.blue / 256, buf);
443 strcpy(buf, buf2);
444 }
445
446 if (!(gc->flags & GAIM_CONNECTION_NO_BGCOLOR) && gaim_prefs_get_bool("/gaim/gtk/conversations/use_custom_bgcolor")) {
447 g_snprintf(buf2, limit,
448 "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>",
449 gtkconv->bg_color.red / 256,
450 gtkconv->bg_color.green / 256,
451 gtkconv->bg_color.blue / 256, buf);
452 strcpy(buf, buf2);
453 }
454 }
455
456 g_free(buf2);
457
458 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) 441 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
459 gaim_conv_im_send(GAIM_CONV_IM(conv), buf); 442 gaim_conv_im_send(GAIM_CONV_IM(conv), buf);
460 else 443 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
461 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf); 444 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf);
462 445
463 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send")) 446 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))
464 gaim_conv_window_hide(gaim_conversation_get_window(conv)); 447 gaim_conv_window_hide(gaim_conversation_get_window(conv));
465 448
466 g_free(buf); 449 g_free(buf);
467 450
468 gtk_text_buffer_set_text(gtkconv->entry_buffer, "", -1); 451 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
452 default_formatize(conv);
469 } 453 }
470 454
471 static void 455 static void
472 add_remove_cb(GtkWidget *widget, GaimConversation *conv) 456 add_remove_cb(GtkWidget *widget, GaimConversation *conv)
473 { 457 {
1351 1335
1352 if (conv->send_history->next && 1336 if (conv->send_history->next &&
1353 conv->send_history->next->data) { 1337 conv->send_history->next->data) {
1354 1338
1355 conv->send_history = conv->send_history->next; 1339 conv->send_history = conv->send_history->next;
1356 gtk_text_buffer_set_text(gtkconv->entry_buffer, 1340 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
1357 conv->send_history->data, -1); 1341 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->entry), conv->send_history->data, 0, NULL);
1358 } 1342 }
1359 1343
1360 break; 1344 break;
1361 1345
1362 case GDK_Down: 1346 case GDK_Down:
1364 break; 1348 break;
1365 1349
1366 if (conv->send_history->prev) { 1350 if (conv->send_history->prev) {
1367 conv->send_history = conv->send_history->prev; 1351 conv->send_history = conv->send_history->prev;
1368 1352
1369 if (conv->send_history->data) 1353 if (conv->send_history->data) {
1370 gtk_text_buffer_set_text(gtkconv->entry_buffer, 1354 gtk_imhtml_clear(GTK_IMHTML(gtkconv->entry));
1371 conv->send_history->data, -1); 1355 gtk_imhtml_append_text_with_images(GTK_IMHTML(gtkconv->entry), conv->send_history->data, 0, NULL);
1356 }
1372 } 1357 }
1373 1358
1374 break; 1359 break;
1375 } 1360 }
1376 1361
2302 * Utility functions 2287 * Utility functions
2303 **************************************************************************/ 2288 **************************************************************************/
2304 static void 2289 static void
2305 do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv) 2290 do_bold(GtkWidget *bold, GaimGtkConversation *gtkconv)
2306 { 2291 {
2307 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(bold))) 2292 gtk_imhtml_toggle_bold(GTK_IMHTML(gtkconv->entry));
2308 gaim_gtk_surround(gtkconv, "<B>", "</B>");
2309 else
2310 gaim_gtk_advance_past(gtkconv, "<B>", "</B>");
2311
2312 gtk_widget_grab_focus(gtkconv->entry); 2293 gtk_widget_grab_focus(gtkconv->entry);
2313 } 2294 }
2314 2295
2315 static void 2296 static void
2316 do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv) 2297 do_italic(GtkWidget *italic, GaimGtkConversation *gtkconv)
2317 { 2298 {
2318 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(italic))) 2299 gtk_imhtml_toggle_italic(GTK_IMHTML(gtkconv->entry));
2319 gaim_gtk_surround(gtkconv, "<I>", "</I>");
2320 else
2321 gaim_gtk_advance_past(gtkconv, "<I>", "</I>");
2322
2323 gtk_widget_grab_focus(gtkconv->entry); 2300 gtk_widget_grab_focus(gtkconv->entry);
2324 } 2301 }
2325 2302
2326 static void 2303 static void
2327 do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv) 2304 do_underline(GtkWidget *underline, GaimGtkConversation *gtkconv)
2328 { 2305 {
2329 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(underline))) 2306 gtk_imhtml_toggle_underline(GTK_IMHTML(gtkconv->entry));
2330 gaim_gtk_surround(gtkconv, "<U>", "</U>");
2331 else
2332 gaim_gtk_advance_past(gtkconv, "<U>", "</U>");
2333
2334 gtk_widget_grab_focus(gtkconv->entry); 2307 gtk_widget_grab_focus(gtkconv->entry);
2335 } 2308 }
2336 2309
2337 static void 2310 static void
2338 do_small(GtkWidget *smalltb, GaimGtkConversation *gtkconv) 2311 do_small(GtkWidget *smalltb, GaimGtkConversation *gtkconv)
2339 { 2312 {
2340 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smalltb))) 2313 gtk_imhtml_font_shrink(GTK_IMHTML(gtkconv->entry));
2341 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"1\">", "</FONT>");
2342 else
2343 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"1\">", "</FONT>");
2344
2345 gtk_widget_grab_focus(gtkconv->entry); 2314 gtk_widget_grab_focus(gtkconv->entry);
2346 } 2315 }
2347 2316
2348 static void 2317 static void
2349 do_normal(GtkWidget *normal, GaimGtkConversation *gtkconv) 2318 do_big(GtkWidget *large, GaimGtkConversation *gtkconv)
2350 { 2319 {
2351 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(normal))) 2320 gtk_imhtml_font_grow(GTK_IMHTML(gtkconv->entry));
2352 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"3\">", "</FONT>");
2353 else
2354 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"3\">", "</FONT>");
2355
2356 gtk_widget_grab_focus(gtkconv->entry); 2321 gtk_widget_grab_focus(gtkconv->entry);
2357 } 2322 }
2358 2323
2359 static void 2324 static void
2360 do_big(GtkWidget *large, GaimGtkConversation *gtkconv)
2361 {
2362 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(large)))
2363 gaim_gtk_surround(gtkconv, "<FONT SIZE=\"5\">", "</FONT>");
2364 else
2365 gaim_gtk_advance_past(gtkconv, "<FONT SIZE=\"5\">", "</FONT>");
2366
2367 gtk_widget_grab_focus(gtkconv->entry);
2368 }
2369
2370 static void
2371 toggle_font(GtkWidget *font, GaimConversation *conv) 2325 toggle_font(GtkWidget *font, GaimConversation *conv)
2372 { 2326 {
2373 GaimGtkConversation *gtkconv; 2327 GaimGtkConversation *gtkconv;
2374 2328
2375 gtkconv = GAIM_GTK_CONVERSATION(conv); 2329 gtkconv = GAIM_GTK_CONVERSATION(conv);
2376 2330
2377 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(font))) 2331 show_font_dialog(conv, font);
2378 show_font_dialog(conv, font);
2379 else if (gtkconv->dialogs.font != NULL)
2380 cancel_font(font, conv);
2381 else
2382 gaim_gtk_advance_past(gtkconv, "<FONT FACE>", "</FONT>");
2383 } 2332 }
2384 2333
2385 static void 2334 static void
2386 toggle_fg_color(GtkWidget *color, GaimConversation *conv) 2335 toggle_fg_color(GtkWidget *color, GaimConversation *conv)
2387 { 2336 {
3438 g_signal_connect(G_OBJECT(button), "clicked", 3387 g_signal_connect(G_OBJECT(button), "clicked",
3439 G_CALLBACK(do_big), gtkconv); 3388 G_CALLBACK(do_big), gtkconv);
3440 3389
3441 gtkconv->toolbar.larger_size = button; 3390 gtkconv->toolbar.larger_size = button;
3442 3391
3443 /* Normal font size */ 3392 /* Normal font size
3444 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_NORMAL); 3393 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_NORMAL);
3445 gtk_size_group_add_widget(sg, button); 3394 gtk_size_group_add_widget(sg, button);
3446 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 3395 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
3447 gtk_tooltips_set_tip(gtkconv->tooltips, button, 3396 gtk_tooltips_set_tip(gtkconv->tooltips, button,
3448 _("Normal font size"), NULL); 3397 _("Normal font size"), NULL);
3449 3398
3450 g_signal_connect(G_OBJECT(button), "clicked", 3399 g_signal_connect(G_OBJECT(button), "clicked",
3451 G_CALLBACK(do_normal), gtkconv); 3400 G_CALLBACK(do_normal), gtkconv);
3452 3401
3453 gtkconv->toolbar.normal_size = button; 3402 gtkconv->toolbar.normal_size = button;
3403 */
3454 3404
3455 /* Decrease font size */ 3405 /* Decrease font size */
3456 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_SMALLER); 3406 button = gaim_pixbuf_toolbar_button_from_stock(GAIM_STOCK_TEXT_SMALLER);
3457 gtk_size_group_add_widget(sg, button); 3407 gtk_size_group_add_widget(sg, button);
3458 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 3408 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
3771 FALSE, FALSE, 0); 3721 FALSE, FALSE, 0);
3772 3722
3773 /* Setup the entry widget. */ 3723 /* Setup the entry widget. */
3774 sw = gtk_scrolled_window_new(NULL, NULL); 3724 sw = gtk_scrolled_window_new(NULL, NULL);
3775 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 3725 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
3776 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 3726 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3777 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); 3727 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
3728 GTK_SHADOW_IN);
3778 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); 3729 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
3779 gtk_widget_show(sw); 3730 gtk_widget_show(sw);
3780 3731
3781 gtkconv->entry_buffer = gtk_text_buffer_new(NULL); 3732 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
3782 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer); 3733 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
3783 3734 gaim_setup_imhtml(gtkconv->entry);
3735 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
3736 default_formatize(conv);
3784 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR); 3737 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
3785 gtk_widget_set_size_request(gtkconv->entry, -1, 3738 gtk_widget_set_size_request(gtkconv->entry, -1,
3786 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"), 3739 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/chat/entry_height"),
3787 25)); 3740 25));
3788 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); 3741 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);
3872 FALSE, FALSE, 0); 3825 FALSE, FALSE, 0);
3873 3826
3874 /* Setup the entry widget. */ 3827 /* Setup the entry widget. */
3875 sw = gtk_scrolled_window_new(NULL, NULL); 3828 sw = gtk_scrolled_window_new(NULL, NULL);
3876 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 3829 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
3877 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); 3830 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
3878 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); 3831 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
3832 GTK_SHADOW_IN);
3879 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0); 3833 gtk_box_pack_start(GTK_BOX(vbox2), sw, TRUE, TRUE, 0);
3880 gtk_widget_show(sw); 3834 gtk_widget_show(sw);
3881 3835
3882 gtkconv->entry_buffer = gtk_text_buffer_new(NULL); 3836 gtkconv->entry = gtk_imhtml_new(NULL, NULL);
3883 gtkconv->entry = gtk_text_view_new_with_buffer(gtkconv->entry_buffer); 3837 gtkconv->entry_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry));
3884 3838 gaim_setup_imhtml(gtkconv->entry);
3839 gtk_imhtml_set_editable(GTK_IMHTML(gtkconv->entry), TRUE);
3840 default_formatize(conv);
3885 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR); 3841 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(gtkconv->entry), GTK_WRAP_WORD_CHAR);
3886 gtk_widget_set_size_request(gtkconv->entry, -1, 3842 gtk_widget_set_size_request(gtkconv->entry, -1,
3887 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"), 3843 MAX(gaim_prefs_get_int("/gaim/gtk/conversations/im/entry_height"),
3888 25)); 3844 25));
3889 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv); 3845 g_object_set_data(G_OBJECT(gtkconv->entry_buffer), "user_data", conv);