diff src/gtkprefs.c @ 8745:6c0fae7a4f1a

[gaim-migrate @ 9500] " fixed up an issue in the example plugin and a memory leak and some other code.." --Gary Kramlich committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Wed, 21 Apr 2004 21:05:08 +0000
parents 7024b595b6ae
children 7329d01bb770
line wrap: on
line diff
--- a/src/gtkprefs.c	Wed Apr 21 21:01:42 2004 +0000
+++ b/src/gtkprefs.c	Wed Apr 21 21:05:08 2004 +0000
@@ -357,6 +357,17 @@
 				ui_info->iter = NULL;
 			}
 		}
+
+		if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) {
+			GaimPluginUiInfo *prefs_info;
+
+			prefs_info = GAIM_PLUGIN_UI_INFO(plug);
+
+			if(prefs_info->iter != NULL) {
+				g_free(prefs_info->iter);
+				prefs_info->iter = NULL;
+			}
+		}
 	}
 }
 
@@ -1873,15 +1884,19 @@
 				g_free(ui_info->iter);
 				ui_info->iter = NULL;
 			}
-		} else if (GAIM_PLUGIN_HAS_PREF_FRAME(plug)) {
+		}
+
+		if (GAIM_PLUGIN_HAS_PREF_FRAME(plug)) {
 			GaimPluginUiInfo *prefs_info;
 
 			prefs_info = GAIM_PLUGIN_UI_INFO(plug);
 
-			if(prefs_info != NULL && prefs_info->iter != NULL) {
-				gtk_tree_store_remove(GTK_TREE_STORE(prefstree), prefs_info->iter);
-				g_free(prefs_info->iter);
-				prefs_info->iter = NULL;
+			if(prefs_info != NULL) {
+				if(prefs_info->iter != NULL) {
+					gtk_tree_store_remove(GTK_TREE_STORE(prefstree), prefs_info->iter);
+					g_free(prefs_info->iter);
+					prefs_info->iter = NULL;
+				}
 			}
 		}
 
@@ -2526,16 +2541,19 @@
 			}
 
 			if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) {
-				GtkWidget *pref_frame;
+				GtkWidget *gtk_frame;
+				GaimPluginPrefFrame *pp_frame;
 				GaimPluginUiInfo *prefs_info;
 
 				prefs_info = GAIM_PLUGIN_UI_INFO(plug);
-				pref_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->get_plugin_pref_frame(plug));
-
-				if(pref_frame != NULL) {
+				pp_frame = prefs_info->get_plugin_pref_frame(plug);
+				gtk_frame = gaim_gtk_plugin_pref_create_frame(pp_frame);
+				gaim_plugin_pref_frame_destroy(pp_frame);
+
+				if(GTK_IS_WIDGET(gtk_frame)) {
 					prefs_info->iter = g_new0(GtkTreeIter, 1);
 					prefs_notebook_add_page(_(plug->info->name), NULL,
-										pref_frame, prefs_info->iter,
+										gtk_frame, prefs_info->iter,
 										(plug->info->type == GAIM_PLUGIN_PROTOCOL) ? &proto_iter : &plugin_iter,
 										notebook_page++);
 				}
@@ -2988,4 +3006,3 @@
 	gaim_prefs_rename_boolean_toggle("/gaim/gtk/sound/silent_signon",
 									 "/gaim/gtk/sound/signon");
 }
-