| 6482 } |
6481 } |
| 6483 gtk_list_store_set(gtkconv->infopane_model, &(gtkconv->infopane_iter), |
6482 gtk_list_store_set(gtkconv->infopane_model, &(gtkconv->infopane_iter), |
| 6484 CONV_TEXT_COLUMN, markup, -1); |
6483 CONV_TEXT_COLUMN, markup, -1); |
| 6485 /* XXX seanegan Why do I have to do this? */ |
6484 /* XXX seanegan Why do I have to do this? */ |
| 6486 gtk_widget_queue_draw(gtkconv->infopane); |
6485 gtk_widget_queue_draw(gtkconv->infopane); |
| 6487 |
6486 |
| 6488 if (title != markup) |
6487 if (title != markup) |
| 6489 g_free(markup); |
6488 g_free(markup); |
| 6490 |
6489 |
| 6491 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) |
6490 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) |
| 6492 gtk_widget_realize(gtkconv->tab_label); |
6491 gtk_widget_realize(gtkconv->tab_label); |
| 6493 |
6492 |
| 6494 accessibility_obj = gtk_widget_get_accessible(gtkconv->tab_cont); |
6493 accessibility_obj = gtk_widget_get_accessible(gtkconv->tab_cont); |
| 6495 if (im != NULL && |
6494 if (im != NULL && |
| 6496 purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
6495 purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
| 6497 atk_object_set_description(accessibility_obj, _("Typing")); |
6496 atk_object_set_description(accessibility_obj, _("Typing")); |
| 6498 style = "color=\"#4e9a06\""; |
6497 style = "tab-label-typing"; |
| 6499 } else if (im != NULL && |
6498 } else if (im != NULL && |
| 6500 purple_conv_im_get_typing_state(im) == PURPLE_TYPED) { |
6499 purple_conv_im_get_typing_state(im) == PURPLE_TYPED) { |
| 6501 atk_object_set_description(accessibility_obj, _("Stopped Typing")); |
6500 atk_object_set_description(accessibility_obj, _("Stopped Typing")); |
| 6502 style = "color=\"#c4a000\""; |
6501 style = "tab-label-typed"; |
| 6503 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_NICK) { |
6502 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_NICK) { |
| 6504 atk_object_set_description(accessibility_obj, _("Nick Said")); |
6503 atk_object_set_description(accessibility_obj, _("Nick Said")); |
| 6505 style = "color=\"#204a87\""; |
6504 style = "tab-label-attention"; |
| 6506 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT) { |
6505 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT) { |
| 6507 atk_object_set_description(accessibility_obj, _("Unread Messages")); |
6506 atk_object_set_description(accessibility_obj, _("Unread Messages")); |
| 6508 if (gtkconv->active_conv->type == PURPLE_CONV_TYPE_CHAT) |
6507 if (gtkconv->active_conv->type == PURPLE_CONV_TYPE_CHAT) |
| 6509 style = "color=\"#cc0000\""; |
6508 style = "color=\"#cc0000\""; |
| 6510 else |
6509 else |
| 6511 style = "color=\"#204a87\""; |
6510 style = "tab-label-attention"; |
| 6512 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) { |
6511 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) { |
| 6513 atk_object_set_description(accessibility_obj, _("New Event")); |
6512 atk_object_set_description(accessibility_obj, _("New Event")); |
| 6514 style = "color=\"#888a85\""; |
6513 style = "tab-label-event"; |
| 6515 } else { |
6514 } else { |
| 6516 style = NULL; |
6515 style = NULL; |
| 6517 } |
6516 } |
| 6518 |
6517 |
| |
6518 gtk_widget_set_name(gtkconv->tab_label, style); |
| |
6519 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
| |
6520 gtk_widget_set_state(gtkconv->tab_label, GTK_STATE_ACTIVE); |
| |
6521 |
| 6519 if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT || |
6522 if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT || |
| 6520 gtkconv->unseen_state == PIDGIN_UNSEEN_NICK || |
6523 gtkconv->unseen_state == PIDGIN_UNSEEN_NICK || |
| 6521 gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) |
6524 gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) { |
| 6522 bold = TRUE; |
6525 PangoAttrList *list = pango_attr_list_new(); |
| 6523 |
6526 PangoAttribute *attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD); |
| 6524 if (style || bold) |
6527 attr->start_index = 0; |
| 6525 { |
6528 attr->end_index = -1; |
| 6526 char *html_title,*label; |
6529 pango_attr_list_insert(list, attr); |
| 6527 |
6530 gtk_label_set_attributes(GTK_LABEL(gtkconv->tab_label), list); |
| 6528 html_title = g_markup_escape_text(title, -1); |
6531 pango_attr_list_unref(list); |
| 6529 label = g_strdup_printf("<span %s %s>%s</span>", |
6532 } else |
| 6530 style ? style : "", |
6533 gtk_label_set_attributes(GTK_LABEL(gtkconv->tab_label), NULL); |
| 6531 bold ? "weight=\"bold\"" : "", |
|
| 6532 html_title); |
|
| 6533 g_free(html_title); |
|
| 6534 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
|
| 6535 g_free(label); |
|
| 6536 } |
|
| 6537 else |
|
| 6538 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
|
| 6539 |
6534 |
| 6540 if (pidgin_conv_window_is_active_conversation(conv)) |
6535 if (pidgin_conv_window_is_active_conversation(conv)) |
| 6541 update_typing_icon(gtkconv); |
6536 update_typing_icon(gtkconv); |
| 6542 |
6537 |
| 6543 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
6538 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
| 7746 PURPLE_SIGNAL_PRIORITY_LOWEST); |
7741 PURPLE_SIGNAL_PRIORITY_LOWEST); |
| 7747 purple_signal_connect(purple_conversations_get_handle(), "wrote-im-msg", handle, |
7742 purple_signal_connect(purple_conversations_get_handle(), "wrote-im-msg", handle, |
| 7748 PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL); |
7743 PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL); |
| 7749 purple_signal_connect(purple_conversations_get_handle(), "wrote-chat-msg", handle, |
7744 purple_signal_connect(purple_conversations_get_handle(), "wrote-chat-msg", handle, |
| 7750 PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL); |
7745 PURPLE_CALLBACK(wrote_msg_update_unseen_cb), NULL); |
| |
7746 |
| |
7747 { |
| |
7748 /* Set default tab colors */ |
| |
7749 GString *str = g_string_new(NULL); |
| |
7750 GtkSettings *settings = gtk_settings_get_default(); |
| |
7751 struct { |
| |
7752 const char *stylename; |
| |
7753 const char *labelname; |
| |
7754 const char *color; |
| |
7755 } styles[] = { |
| |
7756 {"pidgin_tab_label_typing_default", "tab-label-typing", "#4e9a06"}, |
| |
7757 {"pidgin_tab_label_typed_default", "tab-label-typed", "#c4a000"}, |
| |
7758 {"pidgin_tab_label_attention_default", "tab-label-attention", "#204a87"}, |
| |
7759 {"pidgin_tab_label_event_default", "tab-label-event", "#888a85"}, |
| |
7760 {NULL, NULL, NULL} |
| |
7761 }; |
| |
7762 int iter; |
| |
7763 for (iter = 0; styles[iter].stylename; iter++) { |
| |
7764 if (!gtk_rc_get_style_by_paths(settings, styles[iter].labelname, NULL, G_TYPE_NONE)) |
| |
7765 /* Apparently both ACTIVE and NORMAL are required */ |
| |
7766 g_string_append_printf(str, "style \"%s\" {\n" |
| |
7767 "fg[ACTIVE] = \"%s\"\n" |
| |
7768 "}\n" |
| |
7769 "widget \"*%s\" style \"%s\"\n", |
| |
7770 styles[iter].stylename, |
| |
7771 styles[iter].color, |
| |
7772 styles[iter].labelname, styles[iter].stylename); |
| |
7773 } |
| |
7774 gtk_rc_parse_string(str->str); |
| |
7775 g_string_free(str, TRUE); |
| |
7776 #if GTK_CHECK_VERSION(2,4,0) |
| |
7777 gtk_rc_reset_styles(settings); |
| |
7778 #endif |
| |
7779 } |
| 7751 } |
7780 } |
| 7752 |
7781 |
| 7753 void |
7782 void |
| 7754 pidgin_conversations_uninit(void) |
7783 pidgin_conversations_uninit(void) |
| 7755 { |
7784 { |