r23761 - gnucash/trunk/src/gnome - Bug 721954 - Multiple Scheduled Transaction Editors
John Ralls
jralls at code.gnucash.org
Fri Jan 24 19:55:42 EST 2014
Author: jralls
Date: 2014-01-24 19:55:42 -0500 (Fri, 24 Jan 2014)
New Revision: 23761
Trac: http://svn.gnucash.org/trac/changeset/23761
Modified:
gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
Log:
Bug 721954 - Multiple Scheduled Transaction Editors
Gnc_gobject_remember the SX editor, and test for it before
creating a new one.
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c 2014-01-25 00:11:25 UTC (rev 23760)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-sx-list.c 2014-01-25 00:55:42 UTC (rev 23761)
@@ -48,6 +48,7 @@
#include <glib/gi18n.h>
#include <gnc-gdate-utils.h>
+#include <gnc-gobject-utils.h>
#include "SX-book.h"
#include "Split.h"
#include "Transaction.h"
@@ -194,7 +195,13 @@
gnc_plugin_page_sx_list_new (void)
{
GncPluginPageSxList *plugin_page;
- plugin_page = g_object_new(GNC_TYPE_PLUGIN_PAGE_SX_LIST, NULL);
+ const GList *object = gnc_gobject_tracking_get_list (GNC_PLUGIN_PAGE_SX_LIST_NAME);
+ if (object && GNC_IS_PLUGIN_PAGE_SX_LIST (object->data))
+ plugin_page = GNC_PLUGIN_PAGE_SX_LIST (object->data);
+ else
+ {
+ plugin_page = g_object_new (GNC_TYPE_PLUGIN_PAGE_SX_LIST, NULL);
+ }
return GNC_PLUGIN_PAGE(plugin_page);
}
@@ -226,6 +233,7 @@
{
GtkActionGroup *action_group;
GncPluginPage *parent;
+ GncPluginPageSxListClass *klass = GNC_PLUGIN_PAGE_SX_LIST_GET_CLASS (plugin_page);
/* Init parent declared variables */
parent = GNC_PLUGIN_PAGE(plugin_page);
@@ -252,6 +260,8 @@
gnc_plugin_page_sx_list_n_actions,
plugin_page);
/* gnc_plugin_init_short_names (action_group, toolbar_labels); */
+ gnc_gobject_tracking_remember (G_OBJECT (plugin_page),
+ G_OBJECT_CLASS (klass));
}
@@ -290,6 +300,7 @@
g_return_if_fail(GNC_IS_PLUGIN_PAGE_SX_LIST (page));
priv = GNC_PLUGIN_PAGE_SX_LIST_GET_PRIVATE(page);
g_return_if_fail(priv != NULL);
+ gnc_gobject_tracking_forget (G_OBJECT (page));
G_OBJECT_CLASS (parent_class)->finalize (object);
}
More information about the gnucash-changes
mailing list