Removed nested structs in pidgin - this caused an error in g-ir-compiler soc.2013.gobjectification.plugins

Wed, 25 Sep 2013 19:09:00 +0530

author
Ankit Vani <a@nevitus.org>
date
Wed, 25 Sep 2013 19:09:00 +0530
branch
soc.2013.gobjectification.plugins
changeset 36827
6141c40def26
parent 36826
c2c1d063ff6a
child 36828
45f079428ed4

Removed nested structs in pidgin - this caused an error in g-ir-compiler

pidgin/gtkconv.c file | annotate | diff | comparison | revisions
pidgin/gtkconv.h file | annotate | diff | comparison | revisions
pidgin/gtkconvwin.h file | annotate | diff | comparison | revisions
--- a/pidgin/gtkconv.c	Wed Sep 25 16:21:44 2013 +0530
+++ b/pidgin/gtkconv.c	Wed Sep 25 19:09:00 2013 +0530
@@ -1179,8 +1179,8 @@
 {
 	PidginWindow *gtkwin = data;
 	PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(gtkwin);
-	gtk_widget_show_all(gtkconv->quickfind.container);
-	gtk_widget_grab_focus(gtkconv->quickfind.entry);
+	gtk_widget_show_all(gtkconv->quickfind_container);
+	gtk_widget_grab_focus(gtkconv->quickfind_entry);
 }
 
 #ifdef USE_VV
@@ -1193,9 +1193,9 @@
 
 	purple_protocol_initiate_media(account,
 			purple_conversation_get_name(conv),
-			action == win->menu.audio_call ? PURPLE_MEDIA_AUDIO :
-			action == win->menu.video_call ? PURPLE_MEDIA_VIDEO :
-			action == win->menu.audio_video_call ? PURPLE_MEDIA_AUDIO |
+			action == win->menu->audio_call ? PURPLE_MEDIA_AUDIO :
+			action == win->menu->video_call ? PURPLE_MEDIA_VIDEO :
+			action == win->menu->audio_video_call ? PURPLE_MEDIA_AUDIO |
 			PURPLE_MEDIA_VIDEO : PURPLE_MEDIA_NONE);
 }
 #endif
@@ -1220,7 +1220,7 @@
 
 	if (PURPLE_IS_IM_CONVERSATION(conv)) {
 		int index;
-		if ((GtkAction *)obj == win->menu.get_attention)
+		if ((GtkAction *)obj == win->menu->get_attention)
 			index = 0;
 		else
 			index = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(obj), "index"));
@@ -2290,7 +2290,7 @@
 	gtkconv->active_conv = conv;
 
 	purple_conversation_set_logging(conv,
-		gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(gtkconv->win->menu.logging)));
+		gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(gtkconv->win->menu->logging)));
 
 	entry = GTK_WEBVIEW(gtkconv->entry);
 	protocol_name = purple_account_get_protocol_name(purple_conversation_get_account(conv));
@@ -3235,18 +3235,18 @@
 
 	if (!strcmp(method, "none"))
 	{
-		gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu.sounds),
+		gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu->sounds),
 		                             FALSE);
-		gtk_action_set_sensitive(win->menu.sounds, FALSE);
+		gtk_action_set_sensitive(win->menu->sounds, FALSE);
 	}
 	else
 	{
 		PidginConversation *gtkconv = pidgin_conv_window_get_active_gtkconv(win);
 
 		if (gtkconv != NULL)
-			gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu.sounds),
+			gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu->sounds),
 			                             gtkconv->make_sound);
-		gtk_action_set_sensitive(win->menu.sounds, TRUE);
+		gtk_action_set_sensitive(win->menu->sounds, TRUE);
 	}
 }
 
@@ -3368,24 +3368,24 @@
 				purple_protocol_get_media_caps(account,
 				purple_conversation_get_name(conv));
 
-		gtk_action_set_sensitive(win->menu.audio_call,
+		gtk_action_set_sensitive(win->menu->audio_call,
 				caps & PURPLE_MEDIA_CAPS_AUDIO
 				? TRUE : FALSE);
-		gtk_action_set_sensitive(win->menu.video_call,
+		gtk_action_set_sensitive(win->menu->video_call,
 				caps & PURPLE_MEDIA_CAPS_VIDEO
 				? TRUE : FALSE);
-		gtk_action_set_sensitive(win->menu.audio_video_call,
+		gtk_action_set_sensitive(win->menu->audio_video_call,
 				caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO
 				? TRUE : FALSE);
 	} else if (PURPLE_IS_CHAT_CONVERSATION(conv)) {
 		/* for now, don't care about chats... */
-		gtk_action_set_sensitive(win->menu.audio_call, FALSE);
-		gtk_action_set_sensitive(win->menu.video_call, FALSE);
-		gtk_action_set_sensitive(win->menu.audio_video_call, FALSE);
+		gtk_action_set_sensitive(win->menu->audio_call, FALSE);
+		gtk_action_set_sensitive(win->menu->video_call, FALSE);
+		gtk_action_set_sensitive(win->menu->audio_video_call, FALSE);
 	} else {
-		gtk_action_set_sensitive(win->menu.audio_call, FALSE);
-		gtk_action_set_sensitive(win->menu.video_call, FALSE);
-		gtk_action_set_sensitive(win->menu.audio_video_call, FALSE);
+		gtk_action_set_sensitive(win->menu->audio_call, FALSE);
+		gtk_action_set_sensitive(win->menu->video_call, FALSE);
+		gtk_action_set_sensitive(win->menu->audio_video_call, FALSE);
 	}
 #endif
 }
@@ -3404,7 +3404,7 @@
 	if (!conv)
 		return;
 
-	attention = gtk_ui_manager_get_widget(win->menu.ui,
+	attention = gtk_ui_manager_get_widget(win->menu->ui,
 	                                      "/Conversation/ConversationMenu/GetAttention");
 
 	/* Remove the previous entries */
@@ -3454,7 +3454,7 @@
 	GtkWidget *more_menu;
 
 	gtkconv = pidgin_conv_window_get_active_gtkconv(win);
-	more_menu = gtk_ui_manager_get_widget(win->menu.ui,
+	more_menu = gtk_ui_manager_get_widget(win->menu->ui,
 	                                      "/Conversation/ConversationMenu/MoreMenu");
 	gtk_widget_show(more_menu);
 	menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(more_menu));
@@ -3513,7 +3513,7 @@
 		action_items = g_list_delete_link(action_items, action_items);
 	}
 
-	item = gtk_ui_manager_get_widget(win->menu.ui, "/Conversation/OptionsMenu");
+	item = gtk_ui_manager_get_widget(win->menu->ui, "/Conversation/OptionsMenu");
 	menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(item));
 
 	list = purple_conversation_get_extended_menu(conv);
@@ -3543,7 +3543,7 @@
 	/* The following are to make sure the 'More' submenu is not regenerated every time
 	 * the focus shifts from 'Conversations' to some other menu and back. */
 	g_signal_handlers_block_by_func(G_OBJECT(item), G_CALLBACK(menubar_activated), data);
-	g_signal_connect(G_OBJECT(win->menu.menubar), "deactivate", G_CALLBACK(focus_out_from_menubar), data);
+	g_signal_connect(G_OBJECT(win->menu->menubar), "deactivate", G_CALLBACK(focus_out_from_menubar), data);
 }
 
 static void
@@ -3551,9 +3551,9 @@
 {
 	/* The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
 	 * the 'Conversation' menu pops up. */
-	GtkWidget *menuitem = gtk_ui_manager_get_widget(win->menu.ui, "/Conversation/ConversationMenu");
+	GtkWidget *menuitem = gtk_ui_manager_get_widget(win->menu->ui, "/Conversation/ConversationMenu");
 	g_signal_handlers_unblock_by_func(G_OBJECT(menuitem), G_CALLBACK(menubar_activated), win);
-	g_signal_handlers_disconnect_by_func(G_OBJECT(win->menu.menubar),
+	g_signal_handlers_disconnect_by_func(G_OBJECT(win->menu->menubar),
 				G_CALLBACK(focus_out_from_menubar), win);
 }
 
@@ -3579,133 +3579,133 @@
 	                                    G_N_ELEMENTS(menu_toggle_entries),
 	                                    win);
 
-	win->menu.ui = gtk_ui_manager_new();
-	gtk_ui_manager_insert_action_group(win->menu.ui, action_group, 0);
-
-	accel_group = gtk_ui_manager_get_accel_group(win->menu.ui);
+	win->menu->ui = gtk_ui_manager_new();
+	gtk_ui_manager_insert_action_group(win->menu->ui, action_group, 0);
+
+	accel_group = gtk_ui_manager_get_accel_group(win->menu->ui);
 	gtk_window_add_accel_group(GTK_WINDOW(win->window), accel_group);
 	g_signal_connect(G_OBJECT(accel_group), "accel-changed",
 	                 G_CALLBACK(pidgin_save_accels_cb), NULL);
 
 	error = NULL;
-	if (!gtk_ui_manager_add_ui_from_string(win->menu.ui, conversation_menu, -1, &error))
+	if (!gtk_ui_manager_add_ui_from_string(win->menu->ui, conversation_menu, -1, &error))
 	{
 		g_message("building menus failed: %s", error->message);
 		g_error_free(error);
 		exit(EXIT_FAILURE);
 	}
 
-	win->menu.menubar =
-		gtk_ui_manager_get_widget(win->menu.ui, "/Conversation");
+	win->menu->menubar =
+		gtk_ui_manager_get_widget(win->menu->ui, "/Conversation");
 
 	/* Make sure the 'Conversation -> More' menuitems are regenerated whenever
 	 * the 'Conversation' menu pops up because the entries can change after the
 	 * conversation is created. */
-	menuitem = gtk_ui_manager_get_widget(win->menu.ui, "/Conversation/ConversationMenu");
+	menuitem = gtk_ui_manager_get_widget(win->menu->ui, "/Conversation/ConversationMenu");
 	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(menubar_activated), win);
 
-	win->menu.view_log =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->view_log =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/ViewLog");
 
 #ifdef USE_VV
-	win->menu.audio_call =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->audio_call =
+		gtk_ui_manager_get_action(win->menu->ui,
 					    "/Conversation/ConversationMenu/MediaMenu/AudioCall");
-	win->menu.video_call =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->video_call =
+		gtk_ui_manager_get_action(win->menu->ui,
 					    "/Conversation/ConversationMenu/MediaMenu/VideoCall");
-	win->menu.audio_video_call =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->audio_video_call =
+		gtk_ui_manager_get_action(win->menu->ui,
 					    "/Conversation/ConversationMenu/MediaMenu/AudioVideoCall");
 #endif
 
 	/* --- */
 
-	win->menu.send_file =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->send_file =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/SendFile");
 
-	win->menu.get_attention =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->get_attention =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/GetAttention");
 
-	win->menu.add_pounce =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->add_pounce =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/AddBuddyPounce");
 
 	/* --- */
 
-	win->menu.get_info =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->get_info =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/GetInfo");
 
-	win->menu.invite =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->invite =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/Invite");
 
 	/* --- */
 
-	win->menu.alias =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->alias =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/Alias");
 
-	win->menu.block =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->block =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/Block");
 
-	win->menu.unblock =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->unblock =
+		gtk_ui_manager_get_action(win->menu->ui,
 					    "/Conversation/ConversationMenu/Unblock");
 
-	win->menu.add =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->add =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/Add");
 
-	win->menu.remove =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->remove =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/ConversationMenu/Remove");
 
 	/* --- */
 
-	win->menu.insert_link =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->insert_link =
+		gtk_ui_manager_get_action(win->menu->ui,
 				"/Conversation/ConversationMenu/InsertLink");
 
-	win->menu.insert_image =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->insert_image =
+		gtk_ui_manager_get_action(win->menu->ui,
 				"/Conversation/ConversationMenu/InsertImage");
 
 	/* --- */
 
-	win->menu.logging =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->logging =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/OptionsMenu/EnableLogging");
-	win->menu.sounds =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->sounds =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/OptionsMenu/EnableSounds");
 	method = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method");
 	if (method != NULL && !strcmp(method, "none"))
 	{
-		gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu.sounds),
+		gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu->sounds),
 		                               FALSE);
-		gtk_action_set_sensitive(win->menu.sounds, FALSE);
+		gtk_action_set_sensitive(win->menu->sounds, FALSE);
 	}
 	purple_prefs_connect_callback(win, PIDGIN_PREFS_ROOT "/sound/method",
 				    sound_method_pref_changed_cb, win);
 
-	win->menu.show_formatting_toolbar =
-		gtk_ui_manager_get_action(win->menu.ui,
+	win->menu->show_formatting_toolbar =
+		gtk_ui_manager_get_action(win->menu->ui,
 		                          "/Conversation/OptionsMenu/ShowFormattingToolbars");
 
-	win->menu.tray = pidgin_menu_tray_new();
-	gtk_menu_shell_append(GTK_MENU_SHELL(win->menu.menubar),
-	                      win->menu.tray);
-	gtk_widget_show(win->menu.tray);
-
-	gtk_widget_show(win->menu.menubar);
-
-	return win->menu.menubar;
+	win->menu->tray = pidgin_menu_tray_new();
+	gtk_menu_shell_append(GTK_MENU_SHELL(win->menu->menubar),
+	                      win->menu->tray);
+	gtk_widget_show(win->menu->tray);
+
+	gtk_widget_show(win->menu->menubar);
+
+	return win->menu->menubar;
 }
 
 
@@ -3769,15 +3769,15 @@
 		stock_id = PIDGIN_STOCK_ANIMATION_TYPING4;
 		break;
 	}
-	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,
+	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..."));
 	} else {
-		gtk_image_set_from_stock(GTK_IMAGE(gtkwin->menu.typing_icon), stock_id, GTK_ICON_SIZE_MENU);
-	}
-	gtk_widget_show(gtkwin->menu.typing_icon);
+		gtk_image_set_from_stock(GTK_IMAGE(gtkwin->menu->typing_icon), stock_id, GTK_ICON_SIZE_MENU);
+	}
+	gtk_widget_show(gtkwin->menu->typing_icon);
 	return TRUE;
 }
 #endif
@@ -3869,15 +3869,15 @@
 	if (account == NULL)
 		return FALSE;
 
-	if (win->menu.send_to == NULL)
+	if (win->menu->send_to == NULL)
 		return FALSE;
 
 	if (!(b = purple_blist_find_buddy(account, purple_conversation_get_name(conv))))
 		return FALSE;
 
-	gtk_widget_show(win->menu.send_to);
-
-	menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(win->menu.send_to));
+	gtk_widget_show(win->menu->send_to);
+
+	menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(win->menu->send_to));
 
 	for (child = gtk_container_get_children(GTK_CONTAINER(menu));
 		 child != NULL;
@@ -4017,17 +4017,17 @@
 
 	g_return_if_fail(gtkconv != NULL);
 
-	if (win->menu.send_to != NULL)
-		gtk_widget_destroy(win->menu.send_to);
+	if (win->menu->send_to != NULL)
+		gtk_widget_destroy(win->menu->send_to);
 
 	/* Build the Send To menu */
-	win->menu.send_to = gtk_menu_item_new_with_mnemonic(_("S_end To"));
-	gtk_widget_show(win->menu.send_to);
+	win->menu->send_to = gtk_menu_item_new_with_mnemonic(_("S_end To"));
+	gtk_widget_show(win->menu->send_to);
 
 	menu = gtk_menu_new();
-	gtk_menu_shell_insert(GTK_MENU_SHELL(win->menu.menubar),
-	                      win->menu.send_to, 2);
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(win->menu.send_to), menu);
+	gtk_menu_shell_insert(GTK_MENU_SHELL(win->menu->menubar),
+	                      win->menu->send_to, 2);
+	gtk_menu_item_set_submenu(GTK_MENU_ITEM(win->menu->send_to), menu);
 
 	gtk_widget_show(menu);
 
@@ -4085,10 +4085,10 @@
 
 	g_object_unref(sg);
 
-	gtk_widget_show(win->menu.send_to);
+	gtk_widget_show(win->menu->send_to);
 	/* TODO: This should never be insensitive.  Possibly hidden or not. */
 	if (!group)
-		gtk_widget_set_sensitive(win->menu.send_to, FALSE);
+		gtk_widget_set_sensitive(win->menu->send_to, FALSE);
 	update_send_to_selection(win);
 }
 
@@ -5021,10 +5021,10 @@
 static gboolean
 pidgin_conv_end_quickfind(PidginConversation *gtkconv)
 {
-	gtk_widget_modify_base(gtkconv->quickfind.entry, GTK_STATE_NORMAL, NULL);
+	gtk_widget_modify_base(gtkconv->quickfind_entry, GTK_STATE_NORMAL, NULL);
 
 	webkit_web_view_unmark_text_matches(WEBKIT_WEB_VIEW(gtkconv->webview));
-	gtk_widget_hide(gtkconv->quickfind.container);
+	gtk_widget_hide(gtkconv->quickfind_container);
 
 	gtk_widget_grab_focus(gtkconv->entry);
 	return TRUE;
@@ -5037,13 +5037,13 @@
 		case GDK_KEY_Return:
 		case GDK_KEY_KP_Enter:
 			if (webkit_web_view_search_text(WEBKIT_WEB_VIEW(gtkconv->webview), gtk_entry_get_text(GTK_ENTRY(entry)), FALSE, TRUE, TRUE)) {
-				gtk_widget_modify_base(gtkconv->quickfind.entry, GTK_STATE_NORMAL, NULL);
+				gtk_widget_modify_base(gtkconv->quickfind_entry, GTK_STATE_NORMAL, NULL);
 			} else {
 				GdkColor col;
 				col.red = 0xffff;
 				col.green = 0xafff;
 				col.blue = 0xafff;
-				gtk_widget_modify_base(gtkconv->quickfind.entry, GTK_STATE_NORMAL, &col);
+				gtk_widget_modify_base(gtkconv->quickfind_entry, GTK_STATE_NORMAL, &col);
 			}
 			break;
 		case GDK_KEY_Escape:
@@ -5073,8 +5073,8 @@
 	entry = gtk_entry_new();
 	gtk_box_pack_start(GTK_BOX(widget), entry, TRUE, TRUE, 0);
 
-	gtkconv->quickfind.entry = entry;
-	gtkconv->quickfind.container = widget;
+	gtkconv->quickfind_entry = entry;
+	gtkconv->quickfind_container = widget;
 
 	/* Hook to signals and stuff */
 	g_signal_connect(G_OBJECT(entry), "key_press_event",
@@ -5978,8 +5978,8 @@
 	g_list_foreach(gtkconv->send_history, (GFunc)g_free, NULL);
 	g_list_free(gtkconv->send_history);
 
-	if (gtkconv->attach.timer) {
-		g_source_remove(gtkconv->attach.timer);
+	if (gtkconv->attach_timer) {
+		g_source_remove(gtkconv->attach_timer);
 	}
 
 	g_array_unref(gtkconv->nick_colors);
@@ -6382,7 +6382,7 @@
 	gtkconv = PIDGIN_CONVERSATION(conv);
 	g_return_if_fail(gtkconv != NULL);
 
-	if (gtkconv->attach.timer) {
+	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
@@ -7142,7 +7142,7 @@
 	if (gc != NULL)
 		protocol = purple_connection_get_protocol(gc);
 
-	if (win->menu.send_to != NULL)
+	if (win->menu->send_to != NULL)
 		update_send_to_selection(win);
 
 	/*
@@ -7157,57 +7157,57 @@
 		/* Show stuff that applies to IMs, hide stuff that applies to chats */
 
 		/* Deal with menu items */
-		gtk_action_set_visible(win->menu.view_log, TRUE);
-		gtk_action_set_visible(win->menu.send_file, TRUE);
-		gtk_action_set_visible(win->menu.get_attention, TRUE);
-		gtk_action_set_visible(win->menu.add_pounce, TRUE);
-		gtk_action_set_visible(win->menu.get_info, TRUE);
-		gtk_action_set_visible(win->menu.invite, FALSE);
-		gtk_action_set_visible(win->menu.alias, TRUE);
+		gtk_action_set_visible(win->menu->view_log, TRUE);
+		gtk_action_set_visible(win->menu->send_file, TRUE);
+		gtk_action_set_visible(win->menu->get_attention, TRUE);
+		gtk_action_set_visible(win->menu->add_pounce, TRUE);
+		gtk_action_set_visible(win->menu->get_info, TRUE);
+		gtk_action_set_visible(win->menu->invite, FALSE);
+		gtk_action_set_visible(win->menu->alias, TRUE);
 		if (purple_account_privacy_check(account, purple_conversation_get_name(conv))) {
-			gtk_action_set_visible(win->menu.unblock, FALSE);
-			gtk_action_set_visible(win->menu.block, TRUE);
+			gtk_action_set_visible(win->menu->unblock, FALSE);
+			gtk_action_set_visible(win->menu->block, TRUE);
 		} else {
-			gtk_action_set_visible(win->menu.block, FALSE);
-			gtk_action_set_visible(win->menu.unblock, TRUE);
+			gtk_action_set_visible(win->menu->block, FALSE);
+			gtk_action_set_visible(win->menu->unblock, TRUE);
 		}
 
 		if (purple_blist_find_buddy(account, purple_conversation_get_name(conv)) == NULL) {
-			gtk_action_set_visible(win->menu.add, TRUE);
-			gtk_action_set_visible(win->menu.remove, FALSE);
+			gtk_action_set_visible(win->menu->add, TRUE);
+			gtk_action_set_visible(win->menu->remove, FALSE);
 		} else {
-			gtk_action_set_visible(win->menu.remove, TRUE);
-			gtk_action_set_visible(win->menu.add, FALSE);
-		}
-
-		gtk_action_set_visible(win->menu.insert_link, TRUE);
-		gtk_action_set_visible(win->menu.insert_image, TRUE);
+			gtk_action_set_visible(win->menu->remove, TRUE);
+			gtk_action_set_visible(win->menu->add, FALSE);
+		}
+
+		gtk_action_set_visible(win->menu->insert_link, TRUE);
+		gtk_action_set_visible(win->menu->insert_image, TRUE);
 	} else {
 		/* Show stuff that applies to Chats, hide stuff that applies to IMs */
 
 		/* Deal with menu items */
-		gtk_action_set_visible(win->menu.view_log, TRUE);
-		gtk_action_set_visible(win->menu.send_file, FALSE);
-		gtk_action_set_visible(win->menu.get_attention, FALSE);
-		gtk_action_set_visible(win->menu.add_pounce, FALSE);
-		gtk_action_set_visible(win->menu.get_info, FALSE);
-		gtk_action_set_visible(win->menu.invite, TRUE);
-		gtk_action_set_visible(win->menu.alias, TRUE);
-		gtk_action_set_visible(win->menu.block, FALSE);
-		gtk_action_set_visible(win->menu.unblock, FALSE);
+		gtk_action_set_visible(win->menu->view_log, TRUE);
+		gtk_action_set_visible(win->menu->send_file, FALSE);
+		gtk_action_set_visible(win->menu->get_attention, FALSE);
+		gtk_action_set_visible(win->menu->add_pounce, FALSE);
+		gtk_action_set_visible(win->menu->get_info, FALSE);
+		gtk_action_set_visible(win->menu->invite, TRUE);
+		gtk_action_set_visible(win->menu->alias, TRUE);
+		gtk_action_set_visible(win->menu->block, FALSE);
+		gtk_action_set_visible(win->menu->unblock, FALSE);
 
 		if ((account == NULL) || purple_blist_find_chat(account, purple_conversation_get_name(conv)) == NULL) {
 			/* If the chat is NOT in the buddy list */
-			gtk_action_set_visible(win->menu.add, TRUE);
-			gtk_action_set_visible(win->menu.remove, FALSE);
+			gtk_action_set_visible(win->menu->add, TRUE);
+			gtk_action_set_visible(win->menu->remove, FALSE);
 		} else {
 			/* If the chat IS in the buddy list */
-			gtk_action_set_visible(win->menu.add, FALSE);
-			gtk_action_set_visible(win->menu.remove, TRUE);
-		}
-
-		gtk_action_set_visible(win->menu.insert_link, TRUE);
-		gtk_action_set_visible(win->menu.insert_image, TRUE);
+			gtk_action_set_visible(win->menu->add, FALSE);
+			gtk_action_set_visible(win->menu->remove, TRUE);
+		}
+
+		gtk_action_set_visible(win->menu->insert_link, TRUE);
+		gtk_action_set_visible(win->menu->insert_image, TRUE);
 	}
 
 	/*
@@ -7256,31 +7256,31 @@
 			gtk_webview_set_protocol_name(GTK_WEBVIEW(gtkconv->entry), purple_account_get_protocol_id(account));
 
 		/* Deal with menu items */
-		gtk_action_set_sensitive(win->menu.view_log, TRUE);
-		gtk_action_set_sensitive(win->menu.add_pounce, TRUE);
-		gtk_action_set_sensitive(win->menu.get_info, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, get_info)));
-		gtk_action_set_sensitive(win->menu.invite, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, invite)));
-		gtk_action_set_sensitive(win->menu.insert_link, (features & PURPLE_CONNECTION_FLAG_HTML));
-		gtk_action_set_sensitive(win->menu.insert_image, !(features & PURPLE_CONNECTION_FLAG_NO_IMAGES));
+		gtk_action_set_sensitive(win->menu->view_log, TRUE);
+		gtk_action_set_sensitive(win->menu->add_pounce, TRUE);
+		gtk_action_set_sensitive(win->menu->get_info, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, get_info)));
+		gtk_action_set_sensitive(win->menu->invite, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, invite)));
+		gtk_action_set_sensitive(win->menu->insert_link, (features & PURPLE_CONNECTION_FLAG_HTML));
+		gtk_action_set_sensitive(win->menu->insert_image, !(features & PURPLE_CONNECTION_FLAG_NO_IMAGES));
 
 		if (PURPLE_IS_IM_CONVERSATION(conv))
 		{
-			gtk_action_set_sensitive(win->menu.add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, add_buddy)));
-			gtk_action_set_sensitive(win->menu.remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, remove_buddy)));
-			gtk_action_set_sensitive(win->menu.send_file,
+			gtk_action_set_sensitive(win->menu->add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, add_buddy)));
+			gtk_action_set_sensitive(win->menu->remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, SERVER_IFACE, remove_buddy)));
+			gtk_action_set_sensitive(win->menu->send_file,
 									 (PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, send) &&
 									 (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, XFER_IFACE, can_receive) ||
 									  purple_protocol_xfer_iface_can_receive(protocol, gc, purple_conversation_get_name(conv)))));
-			gtk_action_set_sensitive(win->menu.get_attention, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, ATTENTION_IFACE, send)));
-			gtk_action_set_sensitive(win->menu.alias,
+			gtk_action_set_sensitive(win->menu->get_attention, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, ATTENTION_IFACE, send)));
+			gtk_action_set_sensitive(win->menu->alias,
 									 (account != NULL) &&
 									 (purple_blist_find_buddy(account, purple_conversation_get_name(conv)) != NULL));
 		}
 		else
 		{
-			gtk_action_set_sensitive(win->menu.add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join)));
-			gtk_action_set_sensitive(win->menu.remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join)));
-			gtk_action_set_sensitive(win->menu.alias,
+			gtk_action_set_sensitive(win->menu->add, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join)));
+			gtk_action_set_sensitive(win->menu->remove, (PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join)));
+			gtk_action_set_sensitive(win->menu->alias,
 									 (account != NULL) &&
 									 (purple_blist_find_chat(account, purple_conversation_get_name(conv)) != NULL));
 		}
@@ -7290,17 +7290,17 @@
 		/* Or it's a chat that we've left. */
 
 		/* Then deal with menu items */
-		gtk_action_set_sensitive(win->menu.view_log, TRUE);
-		gtk_action_set_sensitive(win->menu.send_file, FALSE);
-		gtk_action_set_sensitive(win->menu.get_attention, FALSE);
-		gtk_action_set_sensitive(win->menu.add_pounce, TRUE);
-		gtk_action_set_sensitive(win->menu.get_info, FALSE);
-		gtk_action_set_sensitive(win->menu.invite, FALSE);
-		gtk_action_set_sensitive(win->menu.alias, FALSE);
-		gtk_action_set_sensitive(win->menu.add, FALSE);
-		gtk_action_set_sensitive(win->menu.remove, FALSE);
-		gtk_action_set_sensitive(win->menu.insert_link, TRUE);
-		gtk_action_set_sensitive(win->menu.insert_image, FALSE);
+		gtk_action_set_sensitive(win->menu->view_log, TRUE);
+		gtk_action_set_sensitive(win->menu->send_file, FALSE);
+		gtk_action_set_sensitive(win->menu->get_attention, FALSE);
+		gtk_action_set_sensitive(win->menu->add_pounce, TRUE);
+		gtk_action_set_sensitive(win->menu->get_info, FALSE);
+		gtk_action_set_sensitive(win->menu->invite, FALSE);
+		gtk_action_set_sensitive(win->menu->alias, FALSE);
+		gtk_action_set_sensitive(win->menu->add, FALSE);
+		gtk_action_set_sensitive(win->menu->remove, FALSE);
+		gtk_action_set_sensitive(win->menu->insert_link, TRUE);
+		gtk_action_set_sensitive(win->menu->insert_image, FALSE);
 	}
 
 	/*
@@ -7975,7 +7975,7 @@
 		win     = gtkconv->win;
 
 		gtk_toggle_action_set_active(
-		        GTK_TOGGLE_ACTION(win->menu.show_formatting_toolbar),
+		        GTK_TOGGLE_ACTION(win->menu->show_formatting_toolbar),
 		        (gboolean)GPOINTER_TO_INT(value));
 
 		if ((gboolean)GPOINTER_TO_INT(value))
@@ -8345,13 +8345,13 @@
 	PidginConversation *gtkconv = data;
 	GtkWebView *webview = GTK_WEBVIEW(gtkconv->webview);
 	int count = 0;
-	int timer = gtkconv->attach.timer;
+	int timer = gtkconv->attach_timer;
 	time_t when = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(gtkconv->entry), "attach-start-time"));
 	gboolean im = (PURPLE_IS_IM_CONVERSATION(gtkconv->active_conv));
 
-	gtkconv->attach.timer = 0;
-	while (gtkconv->attach.current && count < 100) {  /* XXX: 100 is a random value here */
-		PurpleConversationMessage *msg = gtkconv->attach.current->data;
+	gtkconv->attach_timer = 0;
+	while (gtkconv->attach_current && count < 100) {  /* XXX: 100 is a random value here */
+		PurpleConversationMessage *msg = gtkconv->attach_current->data;
 		if (!im && when && when < purple_conversation_message_get_timestamp(msg)) {
 			gtk_webview_append_html(webview, "<BR><HR>");
 			gtk_webview_scroll_to_end(webview, TRUE);
@@ -8365,18 +8365,18 @@
 				purple_conversation_message_get_flags(msg),
 				purple_conversation_message_get_timestamp(msg));
 		if (im) {
-			gtkconv->attach.current = g_list_delete_link(gtkconv->attach.current, gtkconv->attach.current);
+			gtkconv->attach_current = g_list_delete_link(gtkconv->attach_current, gtkconv->attach_current);
 		} else {
-			gtkconv->attach.current = gtkconv->attach.current->prev;
+			gtkconv->attach_current = gtkconv->attach_current->prev;
 		}
 		count++;
 	}
-	gtkconv->attach.timer = timer;
-	if (gtkconv->attach.current)
+	gtkconv->attach_timer = timer;
+	if (gtkconv->attach_current)
 		return TRUE;
 
-	g_source_remove(gtkconv->attach.timer);
-	gtkconv->attach.timer = 0;
+	g_source_remove(gtkconv->attach_timer);
+	gtkconv->attach_timer = 0;
 	if (im) {
 		/* Print any message that was sent while the old history was being added back. */
 		GList *msgs = NULL;
@@ -8465,15 +8465,15 @@
 					list = g_list_concat(list, g_list_copy(purple_conversation_get_message_history(convs->data)));
 				}
 			list = g_list_sort(list, message_compare);
-			gtkconv->attach.current = list;
+			gtkconv->attach_current = list;
 			list = g_list_last(list);
 		} else {
-			gtkconv->attach.current = g_list_last(list);
+			gtkconv->attach_current = g_list_last(list);
 		}
 	
 		g_object_set_data(G_OBJECT(gtkconv->entry), "attach-start-time",
 				GINT_TO_POINTER(purple_conversation_message_get_timestamp((PurpleConversationMessage*)(list->data))));
-		gtkconv->attach.timer = g_idle_add(add_message_history_to_gtkconv, gtkconv);
+		gtkconv->attach_timer = g_idle_add(add_message_history_to_gtkconv, gtkconv);
 	} else {
 		purple_signal_emit(pidgin_conversations_get_handle(),
 				"conversation-displayed", gtkconv);
@@ -9230,8 +9230,8 @@
 		GtkWidget *menu = gtk_menu_new(), *sub;
 		gboolean populated = populate_menu_with_options(menu, gtkconv, TRUE);
 
-		sub = gtk_menu_item_get_submenu(GTK_MENU_ITEM(gtkconv->win->menu.send_to));
-		if (sub && gtk_widget_is_sensitive(gtkconv->win->menu.send_to)) {
+		sub = gtk_menu_item_get_submenu(GTK_MENU_ITEM(gtkconv->win->menu->send_to));
+		if (sub && gtk_widget_is_sensitive(gtkconv->win->menu->send_to)) {
 			GtkWidget *item = gtk_menu_item_new_with_mnemonic(_("S_end To"));
 			if (populated)
 				pidgin_separator(menu);
@@ -9807,7 +9807,7 @@
 
 	/* Update the menubar */
 
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(gtkconv->win->menu.logging),
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(gtkconv->win->menu->logging),
 	                             purple_conversation_is_logging(conv));
 
 	generate_send_to_items(win);
@@ -9818,10 +9818,10 @@
 
 	sound_method = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method");
 	if (strcmp(sound_method, "none") != 0)
-		gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu.sounds),
+		gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu->sounds),
 		                             gtkconv->make_sound);
 
-	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu.show_formatting_toolbar),
+	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(win->menu->show_formatting_toolbar),
 	                             purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/show_formatting_toolbar"));
 
 	/*
@@ -9961,6 +9961,7 @@
 	GdkModifierType state;
 
 	win = g_malloc0(sizeof(PidginWindow));
+	win->menu = g_malloc0(sizeof(PidginWindowMenu));
 
 	window_list = g_list_append(window_list, win);
 
@@ -10111,11 +10112,12 @@
 	gtk_widget_destroy(win->notebook_menu);
 	gtk_widget_destroy(win->window);
 
-	g_object_unref(G_OBJECT(win->menu.ui));
+	g_object_unref(G_OBJECT(win->menu->ui));
 
 	purple_notify_close_with_handle(win);
 	purple_signals_disconnect_by_handle(win);
 
+	g_free(win->menu);
 	g_free(win);
 }
 
--- a/pidgin/gtkconv.h	Wed Sep 25 16:21:44 2013 +0530
+++ b/pidgin/gtkconv.h	Wed Sep 25 19:09:00 2013 +0530
@@ -136,18 +136,14 @@
 
 	/* Used when attaching a PidginConversation to a PurpleConversation
 	 * with message history */
-	struct {
-		int timer;
-		GList *current;
-	} attach;
+	int attach_timer;
+	GList *attach_current;
 
 	/**
 	 * Quick Find.
 	 */
-	struct {
-		GtkWidget *entry;
-		GtkWidget *container;
-	} quickfind;
+	GtkWidget *quickfind_entry;
+	GtkWidget *quickfind_container;
 };
 
 /*@}*/
--- a/pidgin/gtkconvwin.h	Wed Sep 25 16:21:44 2013 +0530
+++ b/pidgin/gtkconvwin.h	Wed Sep 25 19:09:00 2013 +0530
@@ -26,6 +26,7 @@
 #ifndef _PIDGIN_CONVERSATION_WINDOW_H_
 #define _PIDGIN_CONVERSATION_WINDOW_H_
 
+typedef struct _PidginWindowMenu   PidginWindowMenu;
 typedef struct _PidginWindow       PidginWindow;
 
 
@@ -34,6 +35,44 @@
  **************************************************************************/
 /*@{*/
 
+struct _PidginWindowMenu
+{
+	GtkUIManager *ui;
+	GtkWidget *menubar;
+
+	GtkAction *view_log;
+
+	GtkAction *audio_call;
+	GtkAction *video_call;
+	GtkAction *audio_video_call;
+
+	GtkAction *send_file;
+	GtkAction *get_attention;
+	GtkAction *add_pounce;
+	GtkAction *get_info;
+	GtkAction *invite;
+
+	GtkAction *alias;
+	GtkAction *block;
+	GtkAction *unblock;
+	GtkAction *add;
+	GtkAction *remove;
+
+	GtkAction *insert_link;
+	GtkAction *insert_image;
+
+	GtkAction *logging;
+	GtkAction *sounds;
+	GtkAction *show_formatting_toolbar;
+
+	GtkWidget *send_to;
+
+	GtkWidget *tray;
+
+	GtkWidget *typing_icon;
+
+};
+
 /**
  * A GTK+ representation of a graphical window containing one or more
  * conversations.
@@ -46,43 +85,7 @@
 	PidginConversation *clicked_tab; /**< The menu currently clicked.      */
 	GList *gtkconvs;
 
-	struct
-	{
-		GtkUIManager *ui;
-		GtkWidget *menubar;
-
-		GtkAction *view_log;
-
-		GtkAction *audio_call;
-		GtkAction *video_call;
-		GtkAction *audio_video_call;
-
-		GtkAction *send_file;
-		GtkAction *get_attention;
-		GtkAction *add_pounce;
-		GtkAction *get_info;
-		GtkAction *invite;
-
-		GtkAction *alias;
-		GtkAction *block;
-		GtkAction *unblock;
-		GtkAction *add;
-		GtkAction *remove;
-
-		GtkAction *insert_link;
-		GtkAction *insert_image;
-
-		GtkAction *logging;
-		GtkAction *sounds;
-		GtkAction *show_formatting_toolbar;
-
-		GtkWidget *send_to;
-
-		GtkWidget *tray;
-
-		GtkWidget *typing_icon;
-
-	} menu;
+	PidginWindowMenu *menu;
 
 	/* Tab dragging stuff. */
 	gboolean in_drag;

mercurial