# HG changeset patch # User Sadrul Habib Chowdhury # Date 1186986287 0 # Node ID 03d81500766d2fcf1b9cba264f49ef062d029e7d # Parent da310fe624f13d3e6830811772f7bd5149b94177# Parent ae0f058f604ec048cd8433d72647fb35e91f9c59 merge of 'e2805167b5c9997ce6241fa2156f3fd3cc4f3568' and 'fd8ddafcb9fc8b13e4ac74a6ba991658a73f4b07' diff -r da310fe624f1 -r 03d81500766d pidgin/gtkconv.c --- a/pidgin/gtkconv.c Mon Aug 13 05:50:32 2007 +0000 +++ b/pidgin/gtkconv.c Mon Aug 13 06:24:47 2007 +0000 @@ -4413,17 +4413,36 @@ gtk_container_add(GTK_CONTAINER(sw), list); } -static int tooltip_timeout = 0; +/* Stuff used to display tooltips on the infopane */ +static struct { + int timeout; + PidginConversation *gtkconv; /* This is the Pidgin conversation that + triggered the tooltip */ +} tooltip; + +static void +reset_tooltip() +{ + if (tooltip.timeout != 0) { + g_source_remove(tooltip.timeout); + tooltip.timeout = 0; + } + tooltip.gtkconv = NULL; +} static gboolean pidgin_conv_tooltip_timeout(PidginConversation *gtkconv) { PurpleBlistNode *node = NULL; - PurpleConversation *conv = gtkconv->active_conv; - if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) { - node = (PurpleBlistNode*)(purple_blist_find_chat(conv->account, conv->name)); + PurpleConversation *conv; + + g_return_val_if_fail (tooltip.gtkconv == gtkconv, FALSE); + + conv = gtkconv->active_conv; + if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) { + node = (PurpleBlistNode*)(purple_blist_find_chat(conv->account, conv->name)); } else { - node = (PurpleBlistNode*)(purple_find_buddy(conv->account, conv->name)); + node = (PurpleBlistNode*)(purple_find_buddy(conv->account, conv->name)); } if (node) @@ -4435,10 +4454,7 @@ pidgin_conv_leave_cb (GtkWidget *w, GdkEventCrossing *e, PidginConversation *gtkconv) { pidgin_blist_tooltip_destroy(); - if (tooltip_timeout) { - g_source_remove(tooltip_timeout); - tooltip_timeout = 0; - } + reset_tooltip(); } static gboolean @@ -4450,10 +4466,11 @@ if (delay == 0) return FALSE; - if (tooltip_timeout != 0) - g_source_remove(tooltip_timeout); - - tooltip_timeout = g_timeout_add(delay, (GSourceFunc)pidgin_conv_tooltip_timeout, gtkconv); + if (tooltip.timeout != 0) + g_source_remove(tooltip.timeout); + + tooltip.timeout = g_timeout_add(delay, (GSourceFunc)pidgin_conv_tooltip_timeout, gtkconv); + tooltip.gtkconv = gtkconv; return FALSE; } @@ -4490,11 +4507,10 @@ g_signal_connect(G_OBJECT(event_box), "button_press_event", G_CALLBACK(infopane_press_cb), gtkconv); - g_signal_connect(G_OBJECT(event_box), "motion-notify-event", - G_CALLBACK(pidgin_conv_motion_cb), gtkconv); - g_signal_connect(G_OBJECT(event_box), "leave-notify-event", - G_CALLBACK(pidgin_conv_leave_cb), gtkconv); - + g_signal_connect(G_OBJECT(event_box), "motion-notify-event", + G_CALLBACK(pidgin_conv_motion_cb), gtkconv); + g_signal_connect(G_OBJECT(event_box), "leave-notify-event", + G_CALLBACK(pidgin_conv_leave_cb), gtkconv); gtkconv->infopane = gtk_cell_view_new(); gtkconv->infopane_model = gtk_list_store_new(CONV_NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_PIXBUF); @@ -4988,6 +5004,9 @@ g_list_foreach(gtkconv->send_history, (GFunc)g_free, NULL); g_list_free(gtkconv->send_history); + if (tooltip.gtkconv == gtkconv) + reset_tooltip(); + g_free(gtkconv); } @@ -6608,10 +6627,10 @@ GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK); g_signal_connect(G_OBJECT(event), "button-press-event", G_CALLBACK(icon_menu), gtkconv); - g_signal_connect(G_OBJECT(event), "motion-notify-event", - G_CALLBACK(pidgin_conv_motion_cb), gtkconv); - g_signal_connect(G_OBJECT(event), "leave-notify-event", - G_CALLBACK(pidgin_conv_leave_cb), gtkconv); + g_signal_connect(G_OBJECT(event), "motion-notify-event", + G_CALLBACK(pidgin_conv_motion_cb), gtkconv); + g_signal_connect(G_OBJECT(event), "leave-notify-event", + G_CALLBACK(pidgin_conv_leave_cb), gtkconv); gtk_widget_show(event); gtkconv->u.im->icon = gtk_image_new_from_pixbuf(scale); diff -r da310fe624f1 -r 03d81500766d pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Mon Aug 13 05:50:32 2007 +0000 +++ b/pidgin/gtkprefs.c Mon Aug 13 06:24:47 2007 +0000 @@ -1039,6 +1039,7 @@ #endif vbox = pidgin_make_frame(ret, _("Default Formatting")); + gtk_box_set_child_packing(GTK_BOX(vbox->parent), vbox, TRUE, TRUE, 0, GTK_PACK_START); frame = pidgin_create_imhtml(TRUE, &imhtml, &toolbar, NULL); gtk_widget_set_name(imhtml, "pidgin_prefs_font_imhtml");