Mercurial > pidgin.yaz
comparison pidgin/gtkconv.c @ 21077:488796f5ba33
propagate from branch 'im.pidgin.pidgin' (head 4d50bf3b08569aa2108a9f5da47fb1548d0c7dd9)
to branch 'org.maemo.garage.pidgin.pidgin.dialog-transience' (head 2de97b7c8c13f4714a53d342a4dc68ecd8fc2248)
author | Gabriel Schulhof <nix@go-nix.ca> |
---|---|
date | Tue, 09 Oct 2007 18:01:51 +0000 |
parents | b84655373d7b 9da2ac85ce81 |
children | 8c9aad9479c0 c5f9e1eb59d5 |
comparison
equal
deleted
inserted
replaced
21076:b84655373d7b | 21077:488796f5ba33 |
---|---|
2496 CONV_ICON_COLUMN, infopane_status, -1); | 2496 CONV_ICON_COLUMN, infopane_status, -1); |
2497 | 2497 |
2498 gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), | 2498 gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), |
2499 &(gtkconv->infopane_iter), | 2499 &(gtkconv->infopane_iter), |
2500 CONV_EMBLEM_COLUMN, emblem, -1); | 2500 CONV_EMBLEM_COLUMN, emblem, -1); |
2501 if (emblem) | |
2502 g_object_unref(emblem); | |
2501 | 2503 |
2502 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons")) { | 2504 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons")) { |
2505 emblem = pidgin_create_prpl_icon(gtkconv->active_conv->account, PIDGIN_PRPL_ICON_SMALL); | |
2503 gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), | 2506 gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), |
2504 &(gtkconv->infopane_iter), | 2507 &(gtkconv->infopane_iter), |
2505 CONV_PROTOCOL_ICON_COLUMN, pidgin_create_prpl_icon(gtkconv->active_conv->account, PIDGIN_PRPL_ICON_SMALL), -1); | 2508 CONV_PROTOCOL_ICON_COLUMN, emblem, -1); |
2509 if (emblem) | |
2510 g_object_unref(emblem); | |
2506 } | 2511 } |
2507 | 2512 |
2508 /* XXX seanegan Why do I have to do this? */ | 2513 /* XXX seanegan Why do I have to do this? */ |
2509 gtk_widget_queue_draw(gtkconv->infopane); | 2514 gtk_widget_queue_draw(gtkconv->infopane); |
2510 | 2515 |
4356 menuitem = gtk_separator_menu_item_new(); | 4361 menuitem = gtk_separator_menu_item_new(); |
4357 gtk_widget_show(menuitem); | 4362 gtk_widget_show(menuitem); |
4358 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 1); | 4363 gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, 1); |
4359 } | 4364 } |
4360 | 4365 |
4361 | |
4362 static void resize_imhtml_cb(PidginConversation *gtkconv) | 4366 static void resize_imhtml_cb(PidginConversation *gtkconv) |
4363 { | 4367 { |
4364 GtkTextBuffer *buffer; | 4368 GtkTextBuffer *buffer; |
4365 GtkTextIter iter; | 4369 GtkTextIter iter; |
4366 int wrapped_lines; | 4370 int wrapped_lines; |
4367 int lines; | 4371 int lines; |
4368 GdkRectangle oneline; | 4372 GdkRectangle oneline; |
4369 GtkRequisition sr; | 4373 GtkRequisition sr; |
4370 int height; | 4374 int height, diff; |
4371 int pad_top, pad_inside, pad_bottom; | 4375 int pad_top, pad_inside, pad_bottom; |
4372 | 4376 |
4373 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); | 4377 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->entry)); |
4374 | 4378 |
4375 wrapped_lines = 1; | 4379 wrapped_lines = 1; |
4376 gtk_text_buffer_get_start_iter(buffer, &iter); | 4380 gtk_text_buffer_get_start_iter(buffer, &iter); |
4377 gtk_text_view_get_iter_location(GTK_TEXT_VIEW(gtkconv->entry), &iter, &oneline); | 4381 gtk_text_view_get_iter_location(GTK_TEXT_VIEW(gtkconv->entry), &iter, &oneline); |
4378 while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(gtkconv->entry), &iter)) | 4382 while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(gtkconv->entry), &iter)) |
4379 wrapped_lines++; | 4383 wrapped_lines++; |
4380 | 4384 |
4381 lines = gtk_text_buffer_get_line_count(buffer); | 4385 lines = gtk_text_buffer_get_line_count(buffer); |
4382 | 4386 |
4383 /* Show a maximum of 4 lines */ | 4387 /* Show a maximum of 4 lines */ |
4384 lines = MIN(lines, 4); | 4388 lines = MIN(lines, 4); |
4385 wrapped_lines = MIN(wrapped_lines, 4); | 4389 wrapped_lines = MIN(wrapped_lines, 4); |
4386 | 4390 |
4387 pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(gtkconv->entry)); | 4391 pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(gtkconv->entry)); |
4388 pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(gtkconv->entry)); | 4392 pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(gtkconv->entry)); |
4389 pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(gtkconv->entry)); | 4393 pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(gtkconv->entry)); |
4390 | 4394 |
4391 height = (oneline.height + pad_top + pad_bottom) * lines; | 4395 height = (oneline.height + pad_top + pad_bottom) * lines; |
4392 height += (oneline.height + pad_inside) * (wrapped_lines - lines); | 4396 height += (oneline.height + pad_inside) * (wrapped_lines - lines); |
4393 | 4397 |
4394 gtkconv->auto_resize = TRUE; | 4398 gtkconv->auto_resize = TRUE; |
4395 g_idle_add(reset_auto_resize_cb, gtkconv); | 4399 g_idle_add(reset_auto_resize_cb, gtkconv); |
4396 gtk_widget_size_request(gtkconv->lower_hbox, &sr); | 4400 |
4397 if (sr.height < height + PIDGIN_HIG_BOX_SPACE) { | 4401 diff = height - gtkconv->entry->allocation.height; |
4402 | |
4403 if (diff > 0) { | |
4404 gtk_widget_size_request(gtkconv->lower_hbox, &sr); | |
4398 gtkconv->entry_growing = TRUE; | 4405 gtkconv->entry_growing = TRUE; |
4399 gtk_widget_set_size_request(gtkconv->lower_hbox, -1, height + PIDGIN_HIG_BOX_SPACE); | 4406 |
4407 /* uncomment this to auto resize even after the user manually | |
4408 resizes | |
4409 gtk_paned_set_position(GTK_PANED(gtkconv->lower_hbox->parent->parent), | |
4410 -1); | |
4411 */ | |
4412 gtk_widget_set_size_request(gtkconv->lower_hbox, -1, | |
4413 diff + gtkconv->lower_hbox->allocation.height); | |
4400 } | 4414 } |
4401 } | 4415 } |
4402 | 4416 |
4403 static void | 4417 static void |
4404 setup_chat_topic(PidginConversation *gtkconv, GtkWidget *vbox) | 4418 setup_chat_topic(PidginConversation *gtkconv, GtkWidget *vbox) |
4725 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); | 4739 g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL); |
4726 | 4740 |
4727 #if GTK_CHECK_VERSION(2, 6, 0) | 4741 #if GTK_CHECK_VERSION(2, 6, 0) |
4728 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); | 4742 g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); |
4729 #endif | 4743 #endif |
4730 | |
4731 | 4744 |
4732 rend = gtk_cell_renderer_pixbuf_new(); | 4745 rend = gtk_cell_renderer_pixbuf_new(); |
4733 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkconv->infopane), rend, FALSE); | 4746 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(gtkconv->infopane), rend, FALSE); |
4734 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "pixbuf", CONV_PROTOCOL_ICON_COLUMN, NULL); | 4747 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(gtkconv->infopane), rend, "pixbuf", CONV_PROTOCOL_ICON_COLUMN, NULL); |
4735 g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL); | 4748 g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL); |