--- a/pidgin/gtkconv.c Wed Apr 21 18:43:42 2021 -0500
+++ b/pidgin/gtkconv.c Wed Apr 21 18:44:51 2021 -0500
@@ -157,9 +157,7 @@
static void conv_set_unseen(PurpleConversation *gtkconv, PidginUnseenState state);
static void gtkconv_set_unseen(PidginConversation *gtkconv, PidginUnseenState state);
static void update_typing_icon(PidginConversation *gtkconv);
-static void update_typing_message(PidginConversation *gtkconv, const char *message);
gboolean pidgin_conv_has_focus(PurpleConversation *conv);
-static GtkTextTag *get_buddy_tag(PurpleChatConversation *chat, const char *who, PurpleMessageFlags flag, gboolean create);
static void pidgin_conv_update_fields(PurpleConversation *conv, PidginConvFields fields);
static void focus_out_from_menubar(GtkWidget *wid, PidginConvWindow *win);
static void pidgin_conv_tab_pack(PidginConvWindow *win, PidginConversation *gtkconv);
@@ -2575,87 +2573,6 @@
-typing_animation(gpointer data) {
- PidginConversation *gtkconv = data;
- PidginConvWindow *gtkwin = gtkconv->win;
- const char *stock_id = NULL;
- if(gtkconv != pidgin_conv_window_get_active_gtkconv(gtkwin)) {
- stock_id = PIDGIN_STOCK_ANIMATION_TYPING0;
- stock_id = PIDGIN_STOCK_ANIMATION_TYPING1;
- stock_id = PIDGIN_STOCK_ANIMATION_TYPING2;
- stock_id = PIDGIN_STOCK_ANIMATION_TYPING3;
- stock_id = PIDGIN_STOCK_ANIMATION_TYPING4;
- if (gtkwin->menu->typing_icon == NULL) {
- gtkwin->menu->typing_icon = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_MENU);
- pidgin_menu_tray_append(PIDGIN_MENU_TRAY(gtkwin->menu->tray),
- gtkwin->menu->typing_icon,
- _("User is typing..."));
- gtk_image_set_from_stock(GTK_IMAGE(gtkwin->menu->typing_icon), stock_id, GTK_ICON_SIZE_MENU);
- gtk_widget_show(gtkwin->menu->typing_icon);
-update_typing_message(PidginConversation *gtkconv, const char *message)
- /* TODO WEBKIT: this is not handled at all */
- GtkTextMark *stmark, *enmark;
- if (g_object_get_data(G_OBJECT(gtkconv->imhtml), "disable-typing-notification"))
- buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml));
- stmark = gtk_text_buffer_get_mark(buffer, "typing-notification-start");
- enmark = gtk_text_buffer_get_mark(buffer, "typing-notification-end");
- if (stmark && enmark) {
- GtkTextIter start, end;
- gtk_text_buffer_get_iter_at_mark(buffer, &start, stmark);
- gtk_text_buffer_get_iter_at_mark(buffer, &end, enmark);
- gtk_text_buffer_delete_mark(buffer, stmark);
- gtk_text_buffer_delete_mark(buffer, enmark);
- gtk_text_buffer_delete(buffer, &start, &end);
- } else if (message && *message == '\n' && message[1] == ' ' && message[2] == '\0')
- message = "\n "; /* The blank space is required to avoid a GTK+/Pango bug */
- gtk_text_buffer_get_end_iter(buffer, &iter);
- gtk_text_buffer_create_mark(buffer, "typing-notification-start", &iter, TRUE);
- gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, message, -1, "TYPING-NOTIFICATION", NULL);
- gtk_text_buffer_get_end_iter(buffer, &iter);
- gtk_text_buffer_create_mark(buffer, "typing-notification-end", &iter, TRUE);
update_typing_icon(PidginConversation *gtkconv)
@@ -2668,11 +2585,6 @@
im = PURPLE_IM_CONVERSATION(gtkconv->active_conv);
if (purple_im_conversation_get_typing_state(im) == PURPLE_IM_NOT_TYPING) {
- update_typing_message(gtkconv, NULL);
- update_typing_message(gtkconv, "\n ");
@@ -2682,7 +2594,6 @@
message = g_strdup_printf(_("\n%s has stopped typing"), purple_conversation_get_title(PURPLE_CONVERSATION(im)));
- update_typing_message(gtkconv, message);
@@ -2996,23 +2907,7 @@
alias_key = g_utf8_collate_key(tmp, -1);
- /* TODO WEBKIT: No tags in webkit stuff, yet. */
- GtkTextTag *tag = gtk_text_tag_table_lookup(
- gtk_text_buffer_get_tag_table(GTK_IMHTML(gtkconv->webview)->text_buffer),
- g_object_get(tag, "foreground-rgba", &color, NULL);
- if ((tag = get_buddy_tag(chat, name, 0, FALSE)))
- g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_NORMAL, NULL);
- if ((tag = get_buddy_tag(chat, name, PURPLE_MESSAGE_NICK, FALSE)))
- g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_NORMAL, NULL);
- get_nick_color(name, &color);
+ get_nick_color(name, &color); gtk_list_store_insert_with_values(ls, &iter,
@@ -3228,7 +3123,6 @@
PurpleConversation *conv = PURPLE_CONVERSATION(chat);
@@ -3267,11 +3161,6 @@
blist_node_aliased_cb((PurpleBlistNode *)buddy, NULL, chat);
- texttag = get_buddy_tag(chat, purple_buddy_get_name(buddy), 0, FALSE); /* XXX: do we want the normalized name? */
- g_object_set(texttag, "weight", is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, NULL);
@@ -3298,26 +3187,6 @@
-minimum_entry_lines_pref_cb(const char *name,
- GList *l = purple_conversations_get_all();
- PurpleConversation *conv;
- conv = (PurpleConversation *)l->data;
- if (PIDGIN_IS_PIDGIN_CONVERSATION(conv))
- resize_webview_cb(PIDGIN_CONVERSATION(conv));
setup_chat_topic(PidginConversation *gtkconv, GtkWidget *vbox)
PurpleConversation *conv = gtkconv->active_conv;
@@ -3794,137 +3663,6 @@
-get_text_tag_color(GtkTextTag *tag)
- static char colcode[] = "#XXXXXX";
- g_object_get(G_OBJECT(tag), "foreground-set", &set, "foreground-rgba", &color, NULL);
- g_snprintf(colcode, sizeof(colcode), "#%02x%02x%02x",
- (unsigned int)(color->red * 255),
- (unsigned int)(color->green * 255),
- (unsigned int)(color->blue * 255));
-/* The callback for an event on a link tag. */
-static gboolean buddytag_event(GtkTextTag *tag, GObject *imhtml,
- GdkEvent *event, GtkTextIter *arg2, gpointer data)
- if (event->type == GDK_BUTTON_PRESS
- || event->type == GDK_2BUTTON_PRESS) {
- GdkEventButton *btn_event = (GdkEventButton*) event;
- PurpleConversation *conv = data;
- g_object_get(G_OBJECT(tag), "name", &name, NULL);
- /* strlen("BUDDY " or "HILIT ") == 6 */
- g_return_val_if_fail((name != NULL) && (strlen(name) > 6), FALSE);
- /* emit chat-nick-clicked signal */
- if (event->type == GDK_BUTTON_PRESS) {
- gint plugin_return = GPOINTER_TO_INT(purple_signal_emit_return_1(
- pidgin_conversations_get_handle(), "chat-nick-clicked",
- data, buddyname, btn_event->button));
- if (btn_event->button == GDK_BUTTON_PRIMARY && event->type == GDK_2BUTTON_PRESS) {
- chat_do_im(PIDGIN_CONVERSATION(conv), buddyname);
- } else if (btn_event->button == GDK_BUTTON_MIDDLE && event->type == GDK_2BUTTON_PRESS) {
- chat_do_info(PIDGIN_CONVERSATION(conv), buddyname);
- } else if (gdk_event_triggers_context_menu(event)) {
- GtkTextIter start, end;
- /* we shouldn't display the popup
- * if the user has selected something: */
- if (!gtk_text_buffer_get_selection_bounds(
- gtk_text_iter_get_buffer(arg2),
- GtkWidget *menu = NULL;
- purple_conversation_get_connection(conv);
- menu = create_chat_menu(conv, buddyname, gc);
- gtk_menu_popup_at_pointer(GTK_MENU(menu), event);
- /* Don't propagate the event any further */
-static GtkTextTag *get_buddy_tag(PurpleChatConversation *chat, const char *who, PurpleMessageFlags flag,
- PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
- gboolean highlight = (flag & PURPLE_MESSAGE_NICK);
- GtkTextBuffer *buffer = GTK_IMHTML(gtkconv->imhtml)->text_buffer;
- str = g_strdup_printf(highlight ? "HILIT %s" : "BUDDY %s", who);
- buddytag = gtk_text_tag_table_lookup(
- gtk_text_buffer_get_tag_table(buffer), str);
- if (buddytag == NULL && create) {
- buddytag = gtk_text_buffer_create_tag(buffer, str,
- "foreground", get_text_tag_color(gtk_text_tag_table_lookup(
- gtk_text_buffer_get_tag_table(buffer), "highlight-name")),
- "weight", PANGO_WEIGHT_BOLD,
- buddytag = gtk_text_buffer_create_tag(
- "foreground-rgba", get_nick_color(gtkconv, who),
- "weight", purple_blist_find_buddy(purple_conversation_get_account(conv), who) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
- g_object_set_data(G_OBJECT(buddytag), "cursor", "");
- g_signal_connect(G_OBJECT(buddytag), "event",
- G_CALLBACK(buddytag_event), conv);
writing_msg(PurpleConversation *conv, PurpleMessage *msg, gpointer _unused)
@@ -3963,25 +3701,6 @@
g_return_if_fail(gtkconv != NULL);
flags = purple_message_get_flags(pmsg);
- if (gtkconv->attach_timer) {
- /* We are currently in the process of filling up the buffer with the message
- * history of the conversation. So we do not need to add the message here.
- * Instead, this message will be added to the message-list, which in turn will
- * be processed and displayed by the attach-callback.
- if (conv != gtkconv->active_conv)
- /* Set the active conversation to the one that just messaged us. */
- /* TODO: consider not doing this if the account is offline or something */
- if (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV))
- pidgin_conv_switch_active_conversation(conv);
account = purple_conversation_get_account(conv);
g_return_if_fail(account != NULL);
gc = purple_account_get_connection(account);
@@ -4065,7 +3784,6 @@
purple_signal_emit(pidgin_conversations_get_handle(),
(PURPLE_IS_IM_CONVERSATION(conv) ? "displayed-im-msg" : "displayed-chat-msg"),
- update_typing_message(gtkconv, NULL);
static gboolean get_iter_from_chatuser(PurpleChatUser *cb, GtkTreeIter *iter)
@@ -4143,7 +3861,6 @@
PurpleChatUser *old_chatuser, *new_chatuser;
gtkconv = PIDGIN_CONVERSATION(PURPLE_CONVERSATION(chat));
gtkchat = gtkconv->u.chat;
@@ -4153,11 +3870,6 @@
if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter))
- if ((tag = get_buddy_tag(chat, old_name, 0, FALSE)))
- g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
- if ((tag = get_buddy_tag(chat, old_name, PURPLE_MESSAGE_NICK, FALSE)))
- g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
old_chatuser = purple_chat_conversation_find_user(chat, old_name);
@@ -4185,7 +3897,6 @@
gtkconv = PIDGIN_CONVERSATION(PURPLE_CONVERSATION(chat));
gtkchat = gtkconv->u.chat;
@@ -4213,11 +3924,6 @@
- if ((tag = get_buddy_tag(chat, l->data, 0, FALSE)))
- g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
- if ((tag = get_buddy_tag(chat, l->data, PURPLE_MESSAGE_NICK, FALSE)))
- g_object_set(G_OBJECT(tag), "style", PANGO_STYLE_ITALIC, NULL);
g_snprintf(tmp, sizeof(tmp),
@@ -4370,34 +4076,6 @@
PurpleConnectionFlags features = purple_conversation_get_features(conv);
- /* Deal with the toolbar */
- if (features & PURPLE_CONNECTION_FLAG_HTML)
- buttons = PIDGIN_WEBVIEW_ALL; /* Everything on */
- if (features & PURPLE_CONNECTION_FLAG_NO_BGCOLOR)
- buttons &= ~PIDGIN_WEBVIEW_BACKCOLOR;
- if (features & PURPLE_CONNECTION_FLAG_NO_FONTSIZE)
- buttons &= ~PIDGIN_WEBVIEW_GROW;
- buttons &= ~PIDGIN_WEBVIEW_SHRINK;
- if (features & PURPLE_CONNECTION_FLAG_NO_URLDESC)
- buttons &= ~PIDGIN_WEBVIEW_LINKDESC
- buttons = PIDGIN_WEBVIEW_SMILEY | PIDGIN_WEBVIEW_IMAGE;
- if (features & PURPLE_CONNECTION_FLAG_NO_IMAGES)
- buttons &= ~PIDGIN_WEBVIEW_IMAGE;
- if (features & PURPLE_CONNECTION_FLAG_ALLOW_CUSTOM_SMILEY)
- buttons |= PIDGIN_WEBVIEW_CUSTOM_SMILEY;
- buttons &= ~PIDGIN_WEBVIEW_CUSTOM_SMILEY;
- pidgin_webview_set_format_functions(PIDGIN_WEBVIEW(gtkconv->entry), buttons);
/* Deal with menu items */
gtk_action_set_sensitive(win->menu->view_log, TRUE);
@@ -5376,9 +5054,6 @@
purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/tab_side",
- purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/minimum_entry_lines",
- minimum_entry_lines_pref_cb, NULL);
purple_prefs_connect_callback(handle, PIDGIN_PREFS_ROOT "/conversations/im/hide_new",