| 1010 static void |
1010 static void |
| 1011 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
1011 menu_save_as_cb(gpointer data, guint action, GtkWidget *widget) |
| 1012 { |
1012 { |
| 1013 PidginWindow *win = data; |
1013 PidginWindow *win = data; |
| 1014 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win); |
1014 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win); |
| |
1015 PurpleBuddy *buddy = purple_find_buddy(conv->account, conv->name); |
| |
1016 const char *name; |
| 1015 gchar *buf; |
1017 gchar *buf; |
| 1016 |
1018 gchar *c; |
| 1017 buf = g_strdup_printf("%s.html", purple_normalize(conv->account, conv->name)); |
1019 |
| 1018 |
1020 if (buddy != NULL) |
| |
1021 name = purple_buddy_get_contact_alias(buddy); |
| |
1022 else |
| |
1023 name = purple_normalize(conv->account, conv->name); |
| |
1024 |
| |
1025 buf = g_strdup_printf("%s.html", name); |
| |
1026 for (c = buf ; *c ; c++) |
| |
1027 { |
| |
1028 if (*c == '/' || *c == '\\') |
| |
1029 *c = ' '; |
| |
1030 } |
| 1019 purple_request_file(PIDGIN_CONVERSATION(conv), _("Save Conversation"), |
1031 purple_request_file(PIDGIN_CONVERSATION(conv), _("Save Conversation"), |
| 1020 purple_escape_filename(buf), |
1032 buf, |
| 1021 TRUE, G_CALLBACK(savelog_writefile_cb), NULL, |
1033 TRUE, G_CALLBACK(savelog_writefile_cb), NULL, |
| 1022 NULL, NULL, conv, |
1034 NULL, NULL, conv, |
| 1023 conv); |
1035 conv); |
| 1024 |
1036 |
| 1025 g_free(buf); |
1037 g_free(buf); |
| 1769 */ |
1782 */ |
| 1770 diff = (forward ? 1 : -1) + total; |
1783 diff = (forward ? 1 : -1) + total; |
| 1771 |
1784 |
| 1772 for (i = (initial + diff) % total; i != initial; i = (i + diff) % total) { |
1785 for (i = (initial + diff) % total; i != initial; i = (i + diff) % total) { |
| 1773 next_gtkconv = pidgin_conv_window_get_gtkconv_at_index(win, i); |
1786 next_gtkconv = pidgin_conv_window_get_gtkconv_at_index(win, i); |
| 1774 if (next_gtkconv->unseen_state > 0) |
1787 if (next_gtkconv->unseen_state > unseen_state) { |
| 1775 break; |
1788 most_active = next_gtkconv; |
| 1776 } |
1789 unseen_state = most_active->unseen_state; |
| 1777 |
1790 if(PIDGIN_UNSEEN_NICK == unseen_state) /* highest possible state */ |
| 1778 if (i == initial) { /* no new messages */ |
1791 break; |
| |
1792 } |
| |
1793 } |
| |
1794 |
| |
1795 if (most_active == NULL) { /* no new messages */ |
| 1779 i = (i + diff) % total; |
1796 i = (i + diff) % total; |
| 1780 next_gtkconv = pidgin_conv_window_get_gtkconv_at_index(win, i); |
1797 most_active = pidgin_conv_window_get_gtkconv_at_index(win, i); |
| 1781 } |
1798 } |
| 1782 |
1799 |
| 1783 if (next_gtkconv != NULL && next_gtkconv != gtkconv) |
1800 if (most_active != NULL && most_active != gtkconv) |
| 1784 pidgin_conv_window_switch_gtkconv(win, next_gtkconv); |
1801 pidgin_conv_window_switch_gtkconv(win, most_active); |
| 1785 } |
1802 } |
| 1786 |
1803 |
| 1787 static gboolean |
1804 static gboolean |
| 1788 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data) |
1805 entry_key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer data) |
| 1789 { |
1806 { |
| 3975 update_chat_alias((PurpleBuddy *)bnode, conv, gc, prpl_info); |
3992 update_chat_alias((PurpleBuddy *)bnode, conv, gc, prpl_info); |
| 3976 } |
3993 } |
| 3977 } |
3994 } |
| 3978 else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
3995 else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 3979 update_chat_alias((PurpleBuddy *)node, conv, gc, prpl_info); |
3996 update_chat_alias((PurpleBuddy *)node, conv, gc, prpl_info); |
| |
3997 else if (PURPLE_BLIST_NODE_IS_CHAT(node) && |
| |
3998 purple_conversation_get_account(conv) == ((PurpleChat*)node)->account) |
| |
3999 { |
| |
4000 if (old_alias == NULL || g_utf8_collate(old_alias, purple_conversation_get_title(conv)) == 0) |
| |
4001 pidgin_conv_update_fields(conv, PIDGIN_CONV_SET_TITLE); |
| |
4002 } |
| 3980 } |
4003 } |
| 3981 |
4004 |
| 3982 static void |
4005 static void |
| 3983 buddy_cb_common(PurpleBuddy *buddy, PurpleConversation *conv, gboolean is_buddy) |
4006 buddy_cb_common(PurpleBuddy *buddy, PurpleConversation *conv, gboolean is_buddy) |
| 3984 { |
4007 { |
| 4226 |
4250 |
| 4227 col = gtk_tree_view_column_new_with_attributes(NULL, rend, |
4251 col = gtk_tree_view_column_new_with_attributes(NULL, rend, |
| 4228 "pixbuf", CHAT_USERS_ICON_COLUMN, NULL); |
4252 "pixbuf", CHAT_USERS_ICON_COLUMN, NULL); |
| 4229 gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); |
4253 gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); |
| 4230 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); |
4254 gtk_tree_view_append_column(GTK_TREE_VIEW(list), col); |
| 4231 gtk_widget_set_size_request(lbox, |
4255 ul_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width"); |
| 4232 purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/userlist_width"), -1); |
4256 gtk_widget_set_size_request(lbox, ul_width, -1); |
| |
4257 |
| |
4258 /* Hack to prevent completely collapsed userlist coming back with a 1 pixel width. |
| |
4259 * I would have liked to use the GtkPaned "max-position", but for some reason that didn't work */ |
| |
4260 if (ul_width == 0) |
| |
4261 gtk_paned_set_position(GTK_PANED(hpaned), 999999); |
| 4233 |
4262 |
| 4234 g_signal_connect(G_OBJECT(list), "button_press_event", |
4263 g_signal_connect(G_OBJECT(list), "button_press_event", |
| 4235 G_CALLBACK(right_click_chat_cb), gtkconv); |
4264 G_CALLBACK(right_click_chat_cb), gtkconv); |
| 4236 g_signal_connect(G_OBJECT(list), "popup-menu", |
4265 g_signal_connect(G_OBJECT(list), "popup-menu", |
| 4237 G_CALLBACK(gtkconv_chat_popup_menu_cb), gtkconv); |
4266 G_CALLBACK(gtkconv_chat_popup_menu_cb), gtkconv); |
| 4656 |
4697 |
| 4657 gtk_drag_dest_set(gtkconv->entry, 0, |
4698 gtk_drag_dest_set(gtkconv->entry, 0, |
| 4658 te, sizeof(te) / sizeof(GtkTargetEntry), |
4699 te, sizeof(te) / sizeof(GtkTargetEntry), |
| 4659 GDK_ACTION_COPY); |
4700 GDK_ACTION_COPY); |
| 4660 |
4701 |
| |
4702 g_signal_connect(G_OBJECT(pane), "button_press_event", |
| |
4703 G_CALLBACK(ignore_middle_click), NULL); |
| 4661 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
4704 g_signal_connect(G_OBJECT(pane), "drag_data_received", |
| 4662 G_CALLBACK(conv_dnd_recv), gtkconv); |
4705 G_CALLBACK(conv_dnd_recv), gtkconv); |
| 4663 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
4706 g_signal_connect(G_OBJECT(gtkconv->imhtml), "drag_data_received", |
| 4664 G_CALLBACK(conv_dnd_recv), gtkconv); |
4707 G_CALLBACK(conv_dnd_recv), gtkconv); |
| 4665 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", |
4708 g_signal_connect(G_OBJECT(gtkconv->entry), "drag_data_received", |
| 7397 return TRUE; |
7439 return TRUE; |
| 7398 } |
7440 } |
| 7399 |
7441 |
| 7400 dest_notebook = GTK_NOTEBOOK(dest_win->notebook); |
7442 dest_notebook = GTK_NOTEBOOK(dest_win->notebook); |
| 7401 |
7443 |
| 7402 gdk_window_get_origin(GTK_WIDGET(dest_notebook)->window, &nb_x, &nb_y); |
|
| 7403 |
|
| 7404 arrow1_x = arrow2_x = nb_x; |
|
| 7405 arrow1_y = arrow2_y = nb_y; |
|
| 7406 |
|
| 7407 page_num = pidgin_conv_get_tab_at_xy(dest_win, |
7444 page_num = pidgin_conv_get_tab_at_xy(dest_win, |
| 7408 e->x_root, e->y_root, &to_right); |
7445 e->x_root, e->y_root, &to_right); |
| 7409 to_right = to_right && (win != dest_win); |
7446 to_right = to_right && (win != dest_win); |
| 7410 |
7447 |
| 7411 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || |
7448 if (gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_TOP || |
| 7412 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { |
7449 gtk_notebook_get_tab_pos(dest_notebook) == GTK_POS_BOTTOM) { |
| 7413 |
7450 horiz_tabs = TRUE; |
| 7414 horiz_tabs = TRUE; |
7451 } |
| 7415 } |
|
| 7416 |
7452 |
| 7417 gtkconv = pidgin_conv_window_get_gtkconv_at_index(dest_win, page_num); |
7453 gtkconv = pidgin_conv_window_get_gtkconv_at_index(dest_win, page_num); |
| 7418 tab = gtkconv->tabby; |
7454 tab = gtkconv->tabby; |
| 7419 |
7455 |
| 7420 if (horiz_tabs) { |
7456 if (horiz_tabs) { |
| 7421 arrow1_x = arrow2_x = nb_x + tab->allocation.x; |
|
| 7422 |
|
| 7423 if (((gpointer)win == (gpointer)dest_win && win->drag_tab < page_num) || to_right) { |
7457 if (((gpointer)win == (gpointer)dest_win && win->drag_tab < page_num) || to_right) { |
| 7424 arrow1_x += tab->allocation.width; |
7458 dnd_hints_show_relative(HINT_ARROW_DOWN, tab, HINT_POSITION_RIGHT, HINT_POSITION_TOP); |
| 7425 arrow2_x += tab->allocation.width; |
7459 dnd_hints_show_relative(HINT_ARROW_UP, tab, HINT_POSITION_RIGHT, HINT_POSITION_BOTTOM); |
| |
7460 } else { |
| |
7461 dnd_hints_show_relative(HINT_ARROW_DOWN, tab, HINT_POSITION_LEFT, HINT_POSITION_TOP); |
| |
7462 dnd_hints_show_relative(HINT_ARROW_UP, tab, HINT_POSITION_LEFT, HINT_POSITION_BOTTOM); |
| 7426 } |
7463 } |
| 7427 |
|
| 7428 arrow1_y = nb_y + tab->allocation.y; |
|
| 7429 arrow2_y = nb_y + tab->allocation.y + tab->allocation.height; |
|
| 7430 } else { |
7464 } else { |
| 7431 arrow1_x = nb_x + tab->allocation.x; |
|
| 7432 arrow2_x = nb_x + tab->allocation.x + tab->allocation.width; |
|
| 7433 arrow1_y = arrow2_y = nb_y + tab->allocation.y; |
|
| 7434 |
|
| 7435 if (((gpointer)win == (gpointer)dest_win && win->drag_tab < page_num) || to_right) { |
7465 if (((gpointer)win == (gpointer)dest_win && win->drag_tab < page_num) || to_right) { |
| 7436 arrow1_y += tab->allocation.height; |
7466 dnd_hints_show_relative(HINT_ARROW_RIGHT, tab, HINT_POSITION_LEFT, HINT_POSITION_BOTTOM); |
| 7437 arrow2_y += tab->allocation.height; |
7467 dnd_hints_show_relative(HINT_ARROW_LEFT, tab, HINT_POSITION_RIGHT, HINT_POSITION_BOTTOM); |
| |
7468 } else { |
| |
7469 dnd_hints_show_relative(HINT_ARROW_RIGHT, tab, HINT_POSITION_LEFT, HINT_POSITION_TOP); |
| |
7470 dnd_hints_show_relative(HINT_ARROW_LEFT, tab, HINT_POSITION_RIGHT, HINT_POSITION_TOP); |
| 7438 } |
7471 } |
| 7439 } |
|
| 7440 |
|
| 7441 if (horiz_tabs) { |
|
| 7442 dnd_hints_show(HINT_ARROW_DOWN, arrow1_x, arrow1_y); |
|
| 7443 dnd_hints_show(HINT_ARROW_UP, arrow2_x, arrow2_y); |
|
| 7444 } else { |
|
| 7445 dnd_hints_show(HINT_ARROW_RIGHT, arrow1_x, arrow1_y); |
|
| 7446 dnd_hints_show(HINT_ARROW_LEFT, arrow2_x, arrow2_y); |
|
| 7447 } |
7472 } |
| 7448 } |
7473 } |
| 7449 |
7474 |
| 7450 return TRUE; |
7475 return TRUE; |
| 7451 } |
7476 } |
| 7802 item = gtk_menu_item_new_with_label(_("Close this tab")); |
7827 item = gtk_menu_item_new_with_label(_("Close this tab")); |
| 7803 gtk_widget_show(item); |
7828 gtk_widget_show(item); |
| 7804 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
7829 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
| 7805 g_signal_connect(G_OBJECT(item), "activate", |
7830 g_signal_connect(G_OBJECT(item), "activate", |
| 7806 G_CALLBACK(close_tab_cb), menu); |
7831 G_CALLBACK(close_tab_cb), menu); |
| |
7832 |
| |
7833 return FALSE; |
| |
7834 } |
| |
7835 |
| |
7836 static void |
| |
7837 remove_edit_entry(PidginConversation *gtkconv, GtkWidget *entry) |
| |
7838 { |
| |
7839 g_signal_handlers_disconnect_matched(G_OBJECT(entry), G_SIGNAL_MATCH_DATA, |
| |
7840 0, 0, NULL, NULL, gtkconv); |
| |
7841 gtk_widget_show(gtkconv->tab_label); |
| |
7842 gtk_widget_grab_focus(gtkconv->entry); |
| |
7843 gtk_widget_destroy(entry); |
| |
7844 } |
| |
7845 |
| |
7846 static gboolean |
| |
7847 alias_focus_cb(GtkWidget *widget, GdkEventFocus *event, gpointer user_data) |
| |
7848 { |
| |
7849 remove_edit_entry(user_data, widget); |
| |
7850 return FALSE; |
| |
7851 } |
| |
7852 |
| |
7853 static gboolean |
| |
7854 alias_key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data) |
| |
7855 { |
| |
7856 if (event->keyval == GDK_Escape) { |
| |
7857 remove_edit_entry(user_data, widget); |
| |
7858 return TRUE; |
| |
7859 } |
| |
7860 return FALSE; |
| |
7861 } |
| |
7862 |
| |
7863 static void |
| |
7864 alias_cb(GtkEntry *entry, gpointer user_data) |
| |
7865 { |
| |
7866 PidginConversation *gtkconv; |
| |
7867 PurpleConversation *conv; |
| |
7868 PurpleAccount *account; |
| |
7869 const char *name; |
| |
7870 |
| |
7871 gtkconv = (PidginConversation *)user_data; |
| |
7872 if (gtkconv == NULL) { |
| |
7873 return; |
| |
7874 } |
| |
7875 conv = gtkconv->active_conv; |
| |
7876 account = purple_conversation_get_account(conv); |
| |
7877 name = purple_conversation_get_name(conv); |
| |
7878 |
| |
7879 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
| |
7880 PurpleBuddy *buddy; |
| |
7881 buddy = purple_find_buddy(account, name); |
| |
7882 if (buddy != NULL) { |
| |
7883 purple_blist_alias_buddy(buddy, |
| |
7884 gtk_entry_get_text(entry)); |
| |
7885 } |
| |
7886 serv_alias_buddy(buddy); |
| |
7887 } else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) { |
| |
7888 PurpleChat *chat; |
| |
7889 |
| |
7890 chat = purple_blist_find_chat(account, name); |
| |
7891 if (chat != NULL) { |
| |
7892 purple_blist_alias_chat(chat, |
| |
7893 gtk_entry_get_text(entry)); |
| |
7894 } |
| |
7895 } |
| |
7896 remove_edit_entry(user_data, GTK_WIDGET(entry)); |
| |
7897 } |
| |
7898 |
| |
7899 static gboolean |
| |
7900 alias_double_click_cb(GtkNotebook *notebook, GdkEventButton *event, PidginConversation *gtkconv) |
| |
7901 { |
| |
7902 GtkWidget *entry = NULL; |
| |
7903 |
| |
7904 if (event->button != 1 || event->type != GDK_2BUTTON_PRESS) { |
| |
7905 return FALSE; |
| |
7906 } |
| |
7907 |
| |
7908 if (!GTK_WIDGET_VISIBLE(gtkconv->tab_label)) { |
| |
7909 /* There's already an entry for alias. Let's not create another one. */ |
| |
7910 return FALSE; |
| |
7911 } |
| |
7912 |
| |
7913 /* alias label */ |
| |
7914 entry = gtk_entry_new(); |
| |
7915 gtk_entry_set_has_frame(GTK_ENTRY(entry), FALSE); |
| |
7916 gtk_entry_set_width_chars(GTK_ENTRY(entry), 10); |
| |
7917 gtk_entry_set_alignment(GTK_ENTRY(entry), 0.5); |
| |
7918 |
| |
7919 gtk_box_pack_start(GTK_BOX(gtkconv->tabby), entry, TRUE, TRUE, 0); |
| |
7920 /* after the tab label */ |
| |
7921 gtk_box_reorder_child(GTK_BOX(gtkconv->tabby), entry, 2); |
| |
7922 |
| |
7923 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(alias_cb), gtkconv); |
| |
7924 g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(alias_focus_cb), gtkconv); |
| |
7925 g_signal_connect(G_OBJECT(entry), "key-press-event", G_CALLBACK(alias_key_press_cb), gtkconv); |
| |
7926 gtk_entry_set_text(GTK_ENTRY(entry), |
| |
7927 gtk_label_get_text(GTK_LABEL(gtkconv->tab_label))); |
| |
7928 gtk_widget_show(entry); |
| |
7929 gtk_widget_hide(gtkconv->tab_label); |
| |
7930 gtk_widget_grab_focus(entry); |
| 7807 |
7931 |
| 7808 return FALSE; |
7932 return FALSE; |
| 7809 } |
7933 } |
| 7810 |
7934 |
| 7811 static void |
7935 static void |
| 8194 } else { |
8318 } else { |
| 8195 first = gtkconv->icon; |
8319 first = gtkconv->icon; |
| 8196 third = gtkconv->close; |
8320 third = gtkconv->close; |
| 8197 } |
8321 } |
| 8198 |
8322 |
| |
8323 ebox = gtk_event_box_new(); |
| |
8324 gtk_event_box_set_visible_window(GTK_EVENT_BOX(ebox), FALSE); |
| |
8325 gtk_container_add(GTK_CONTAINER(ebox), gtkconv->tabby); |
| |
8326 g_signal_connect(G_OBJECT(ebox), "button-press-event", |
| |
8327 G_CALLBACK(alias_double_click_cb), gtkconv); |
| |
8328 |
| 8199 if (gtkconv->tab_label->parent == NULL) { |
8329 if (gtkconv->tab_label->parent == NULL) { |
| 8200 /* Pack if it's a new widget */ |
8330 /* Pack if it's a new widget */ |
| 8201 gtk_box_pack_start(GTK_BOX(gtkconv->tabby), first, FALSE, FALSE, 0); |
8331 gtk_box_pack_start(GTK_BOX(gtkconv->tabby), first, FALSE, FALSE, 0); |
| 8202 gtk_box_pack_start(GTK_BOX(gtkconv->tabby), gtkconv->tab_label, TRUE, TRUE, 0); |
8332 gtk_box_pack_start(GTK_BOX(gtkconv->tabby), gtkconv->tab_label, TRUE, TRUE, 0); |
| 8203 gtk_box_pack_start(GTK_BOX(gtkconv->tabby), third, FALSE, FALSE, 0); |
8333 gtk_box_pack_start(GTK_BOX(gtkconv->tabby), third, FALSE, FALSE, 0); |
| 8204 |
8334 |
| 8205 /* Add this pane to the conversation's notebook. */ |
8335 /* Add this pane to the conversation's notebook. */ |
| 8206 gtk_notebook_append_page(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, gtkconv->tabby); |
8336 gtk_notebook_append_page(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, ebox); |
| 8207 } else { |
8337 } else { |
| 8208 /* reparent old widgets on preference changes */ |
8338 /* reparent old widgets on preference changes */ |
| 8209 gtk_widget_reparent(first, gtkconv->tabby); |
8339 gtk_widget_reparent(first, gtkconv->tabby); |
| 8210 gtk_widget_reparent(gtkconv->tab_label, gtkconv->tabby); |
8340 gtk_widget_reparent(gtkconv->tab_label, gtkconv->tabby); |
| 8211 gtk_widget_reparent(third, gtkconv->tabby); |
8341 gtk_widget_reparent(third, gtkconv->tabby); |
| 8212 gtk_box_set_child_packing(GTK_BOX(gtkconv->tabby), first, FALSE, FALSE, 0, GTK_PACK_START); |
8342 gtk_box_set_child_packing(GTK_BOX(gtkconv->tabby), first, FALSE, FALSE, 0, GTK_PACK_START); |
| 8213 gtk_box_set_child_packing(GTK_BOX(gtkconv->tabby), gtkconv->tab_label, TRUE, TRUE, 0, GTK_PACK_START); |
8343 gtk_box_set_child_packing(GTK_BOX(gtkconv->tabby), gtkconv->tab_label, TRUE, TRUE, 0, GTK_PACK_START); |
| 8214 gtk_box_set_child_packing(GTK_BOX(gtkconv->tabby), third, FALSE, FALSE, 0, GTK_PACK_START); |
8344 gtk_box_set_child_packing(GTK_BOX(gtkconv->tabby), third, FALSE, FALSE, 0, GTK_PACK_START); |
| 8215 |
8345 |
| 8216 /* Reset the tabs label to the new version */ |
8346 /* Reset the tabs label to the new version */ |
| 8217 gtk_notebook_set_tab_label(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, gtkconv->tabby); |
8347 gtk_notebook_set_tab_label(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, ebox); |
| 8218 } |
8348 } |
| 8219 |
8349 |
| 8220 gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, !tabs_side && !angle, TRUE, GTK_PACK_START); |
8350 gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, !tabs_side && !angle, TRUE, GTK_PACK_START); |
| 8221 |
8351 |
| 8222 /* show the widgets */ |
8352 /* show the widgets */ |
| 8223 gtk_widget_show(gtkconv->icon); |
8353 gtk_widget_show(gtkconv->icon); |
| 8224 gtk_widget_show(gtkconv->tab_label); |
8354 gtk_widget_show(gtkconv->tab_label); |
| 8225 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/close_on_tabs")) |
8355 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/close_on_tabs")) |
| 8226 gtk_widget_show(gtkconv->close); |
8356 gtk_widget_show(gtkconv->close); |
| 8227 gtk_widget_show(gtkconv->tabby); |
8357 gtk_widget_show(gtkconv->tabby); |
| |
8358 gtk_widget_show(ebox); |
| 8228 } |
8359 } |
| 8229 |
8360 |
| 8230 void |
8361 void |
| 8231 pidgin_conv_window_remove_gtkconv(PidginWindow *win, PidginConversation *gtkconv) |
8362 pidgin_conv_window_remove_gtkconv(PidginWindow *win, PidginConversation *gtkconv) |
| 8232 { |
8363 { |