From: Ethan B. <ebl...@us...> - 2004-04-26 15:46:20
|
Update of /cvsroot/gaim/gaim/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8882/src Modified Files: gtkprefs.c plugin.h Log Message: Gary Kramlich says this fixes bugs in code he wrote, so I don't need to mention his name. I think he's just trying to pretend his code didn't have bugs. I'm citing him anyway. Index: gtkprefs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkprefs.c,v retrieving revision 1.140 retrieving revision 1.141 diff -u -d -p -r1.140 -r1.141 --- gtkprefs.c 26 Apr 2004 04:16:34 -0000 1.140 +++ gtkprefs.c 26 Apr 2004 15:46:12 -0000 1.141 @@ -363,6 +363,11 @@ delete_prefs(GtkWidget *asdf, void *gdsa prefs_info = GAIM_PLUGIN_UI_INFO(plug); + if(prefs_info->frame != NULL) { + gaim_plugin_pref_frame_destroy(prefs_info->frame); + prefs_info->frame = NULL; + } + if(prefs_info->iter != NULL) { g_free(prefs_info->iter); prefs_info->iter = NULL; @@ -1856,7 +1861,8 @@ static void plugin_load (GtkCellRenderer iter = plugin_iter; prefs_info = GAIM_PLUGIN_UI_INFO(plug); - pref_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->get_plugin_pref_frame(plug)); + prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); + pref_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); if(pref_frame != NULL) { prefs_info->iter = g_new0(GtkTreeIter, 1); @@ -1894,6 +1900,11 @@ static void plugin_load (GtkCellRenderer prefs_info = GAIM_PLUGIN_UI_INFO(plug); if(prefs_info != NULL) { + if(prefs_info->frame != NULL) { + gaim_plugin_pref_frame_destroy(prefs_info->frame); + prefs_info->frame = NULL; + } + if(prefs_info->iter != NULL) { gtk_tree_store_remove(GTK_TREE_STORE(prefstree), prefs_info->iter); g_free(prefs_info->iter); @@ -2544,13 +2555,11 @@ void prefs_notebook_init() { if(GAIM_PLUGIN_HAS_PREF_FRAME(plug)) { GtkWidget *gtk_frame; - GaimPluginPrefFrame *pp_frame; GaimPluginUiInfo *prefs_info; prefs_info = GAIM_PLUGIN_UI_INFO(plug); - 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); + prefs_info->frame = prefs_info->get_plugin_pref_frame(plug); + gtk_frame = gaim_gtk_plugin_pref_create_frame(prefs_info->frame); if(GTK_IS_WIDGET(gtk_frame)) { prefs_info->iter = g_new0(GtkTreeIter, 1); @@ -2558,6 +2567,12 @@ void prefs_notebook_init() { gtk_frame, prefs_info->iter, (plug->info->type == GAIM_PLUGIN_PROTOCOL) ? &proto_iter : &plugin_iter, notebook_page++); + } else if(prefs_info->frame) { + /* in the event that there is a pref frame and we can + * not make a widget out of it, we free the + * pluginpref frame --Gary + */ + gaim_plugin_pref_frame_destroy(prefs_info->frame); } } } Index: plugin.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/plugin.h,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -p -r1.24 -r1.25 --- plugin.h 22 Apr 2004 01:53:11 -0000 1.24 +++ plugin.h 26 Apr 2004 15:46:12 -0000 1.25 @@ -87,7 +87,7 @@ struct _GaimPluginInfo void *ui_info; void *extra_info; - void *prefs_info; + GaimPluginUiInfo *prefs_info; }; /** @@ -127,6 +127,7 @@ struct _GaimPluginUiInfo { GaimPluginPrefFrame *(*get_plugin_pref_frame)(GaimPlugin *plugin); void *iter; /**< Reserved */ + GaimPluginPrefFrame *frame; /**< Reserved */ }; #define GAIM_PLUGIN_HAS_PREF_FRAME(plugin) \ |