All pastes #930374 Raw Edit

Mine

public diff v1 · immutable
·published 2008-03-06 15:27 UTC
rendered paste body
## old_revision [e4cc3b79eb04e4937c5fa764f6839a8e07397651]## patch "pidgin/gtkconv.c"#  from [c9dd80f7d1cc0314cf6fbcceccb1d4a08f8238af]#    to [7e7c62d13538ddc55fad9764b0d10871587ea6ba]# # patch "pidgin/gtkconvwin.h"#  from [250c2499fcc142e466d0695dc27e203f56ff9156]#    to [88561f8027fc4f712b8c4f7c760e32477fd8bcc7]#============================================================--- pidgin/gtkconv.c	c9dd80f7d1cc0314cf6fbcceccb1d4a08f8238af+++ pidgin/gtkconv.c	7e7c62d13538ddc55fad9764b0d10871587ea6ba@@ -2260,8 +2260,7 @@ pidgin_conv_switch_active_conversation(P 	g_object_set_data(G_OBJECT(entry), "transient_buddy", NULL); 	regenerate_options_items(gtkconv->win); -	gtk_window_set_title(GTK_WINDOW(gtkconv->win->window),-	                     gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));+	pidgin_conv_window_update_title(gtkconv->win); }  static void@@ -2520,6 +2519,7 @@ update_tab_icon(PurpleConversation *conv 	} } +#if 0 /* This gets added as an idle handler when doing something that  * redraws the icon. It sets the auto_resize gboolean to TRUE.  * This way, when the size_allocate callback gets triggered, it notices@@ -2532,6 +2532,7 @@ static gboolean reset_auto_resize_cb(gpo 	gtkconv->auto_resize = FALSE; 	return FALSE; }+#endif  static gboolean redraw_icon(gpointer data)@@ -4396,8 +4397,10 @@ static gboolean resize_imhtml_cb(PidginC 	if (wrapped_lines > lines) 		height += (oneline.height + pad_inside) * (wrapped_lines - lines); +#if 0 	gtkconv->auto_resize = TRUE; 	g_idle_add(reset_auto_resize_cb, gtkconv);+#endif  	diff = height - gtkconv->entry->allocation.height; @@ -4738,6 +4741,8 @@ setup_common_pane(PidginConversation *gt  	g_signal_connect_swapped(G_OBJECT(gtkconv->entry_buffer), "changed", 				 G_CALLBACK(resize_imhtml_cb), gtkconv);+	g_signal_connect_swapped(G_OBJECT(gtkconv->entry), "realize",+			G_CALLBACK(resize_imhtml_cb), gtkconv);  	default_formatize(gtkconv); 	g_signal_connect_after(G_OBJECT(gtkconv->entry), "format_function_clear",@@ -5014,7 +5019,6 @@ private_gtkconv_new(PurpleConversation * 		gtk_widget_show(gtkconv->toolbar); 	else 		gtk_widget_hide(gtkconv->toolbar);-	g_idle_add((GSourceFunc)resize_imhtml_cb, gtkconv);  	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons")) 		gtk_widget_show(gtkconv->infopane_hbox);@@ -6580,7 +6584,7 @@ pidgin_conv_update_fields(PurpleConversa  		gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); 		if (pidgin_conv_window_is_active_conversation(conv))-			gtk_window_set_title(GTK_WINDOW(win->window), title);+			pidgin_conv_window_update_title(win);  		g_free(title); 	}@@ -9529,7 +9533,7 @@ static GList *conv_placement_fncs = NULL } ConvPlacementData;  static GList *conv_placement_fncs = NULL;-static PidginConvPlacementFunc place_conv = NULL;+static PidginConversationWindowManager manager;  /* This one places conversations in the last made window. */ static void@@ -9885,26 +9889,38 @@ pidgin_conv_placement_set_current_func(P  	/* If tabs are enabled, set the function, otherwise, NULL it out. */ 	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs"))-		place_conv = func;+		manager.place_conv = func; 	else-		place_conv = NULL;+		manager.place_conv = NULL; }  PidginConvPlacementFunc pidgin_conv_placement_get_current_func(void) {-	return place_conv;+	return manager.place_conv; }  void pidgin_conv_placement_place(PidginConversation *gtkconv) {-	if (place_conv)-		place_conv(gtkconv);+	if (manager.place_conv)+		manager.place_conv(gtkconv); 	else 		conv_placement_new_window(gtkconv); } +void+pidgin_conv_window_update_title(PidginWindow *window)+{+	if (manager.set_title)+		manager.set_title(window);+	else {+		PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(window);+		gtk_window_set_title(GTK_WINDOW(window->window),+				gtk_label_get_text(GTK_LABEL(gtkconv->tab_label)));+	}+}+ gboolean pidgin_conv_is_hidden(PidginConversation *gtkconv) {@@ -10011,3 +10027,14 @@ generate_nick_colors(guint *color_count,  	return colors; }++void+pidgin_conv_window_set_manager(PidginWindow *window, PidginConversationWindowManager *new_manager)+{+	if (new_manager)+		manager = *new_manager;+	else {+		memset(&manager, 0, sizeof(manager));+	}+}+============================================================--- pidgin/gtkconvwin.h	250c2499fcc142e466d0695dc27e203f56ff9156+++ pidgin/gtkconvwin.h	88561f8027fc4f712b8c4f7c760e32477fd8bcc7@@ -134,7 +134,15 @@ typedef void (*PidginConvPlacementFunc)( /*@{*/  typedef void (*PidginConvPlacementFunc)(PidginConversation *);+typedef void (*PidginConvTitleFunc)(PidginWindow *window);+typedef void (*PidginConvIconFunc)(PidginWindow *window); +typedef struct {+	PidginConvPlacementFunc place_conv;+	PidginConvTitleFunc set_title;+	PidginConvIconFunc set_icon;   /* Currently unused */+} PidginConversationWindowManager;+ GList *pidgin_conv_placement_get_options(void); void pidgin_conv_placement_add_fnc(const char *id, const char *name, PidginConvPlacementFunc fnc); void pidgin_conv_placement_remove_fnc(const char *id);@@ -143,6 +151,8 @@ void pidgin_conv_placement_place(PidginC void pidgin_conv_placement_set_current_func(PidginConvPlacementFunc func); PidginConvPlacementFunc pidgin_conv_placement_get_current_func(void); void pidgin_conv_placement_place(PidginConversation *gtkconv);+void pidgin_conv_window_update_title(PidginWindow *window);+void pidgin_conv_window_set_manager(PidginWindow *window, PidginConversationWindowManager *manager);  /*@}*/