gnucash stable: Multiple changes pushed
John Ralls
jralls at code.gnucash.org
Thu Oct 9 13:35:32 EDT 2025
Updated via https://github.com/Gnucash/gnucash/commit/01f0d252 (commit)
via https://github.com/Gnucash/gnucash/commit/9b7b69ab (commit)
from https://github.com/Gnucash/gnucash/commit/1e3027e2 (commit)
commit 01f0d252ec4008243a3efe3d67962015ce5a6119
Merge: 1e3027e2ca 9b7b69abb4
Author: John Ralls <jralls at ceridwen.us>
Date: Thu Oct 9 10:34:55 2025 -0700
Merge Sherlock's 'reset-gui-components' into stable
commit 9b7b69abb4041565de1fb86dd3b5ae896278c336
Author: Sherlock <119709043+agwekixj at users.noreply.github.com>
Date: Wed Oct 8 14:10:14 2025 -0700
Reset gui component session
When saving a new file, including Save As of an existing book, reset the managed gui
components to the new session prior to clearing the old session.
diff --git a/gnucash/gnome-utils/gnc-component-manager.c b/gnucash/gnome-utils/gnc-component-manager.c
index b98bcc878b..944a787c29 100644
--- a/gnucash/gnome-utils/gnc-component-manager.c
+++ b/gnucash/gnome-utils/gnc-component-manager.c
@@ -819,6 +819,20 @@ gnc_gui_component_set_session (gint component_id, gpointer session)
ci->session = session;
}
+void
+gnc_gui_component_reset_session (gpointer old_session, gpointer new_session)
+{
+ GList *node;
+
+ for (node = components; node; node = node->next)
+ {
+ ComponentInfo *ci = node->data;
+
+ if (ci->session == old_session)
+ ci->session = new_session;
+ }
+}
+
void
gnc_close_gui_component_by_session (gpointer session)
{
diff --git a/gnucash/gnome-utils/gnc-component-manager.h b/gnucash/gnome-utils/gnc-component-manager.h
index be25a7eee2..cc7817c295 100644
--- a/gnucash/gnome-utils/gnc-component-manager.h
+++ b/gnucash/gnome-utils/gnc-component-manager.h
@@ -163,6 +163,14 @@ gint gnc_register_gui_component (const char *component_class,
*/
void gnc_gui_component_set_session (gint component_id, gpointer session);
+/* gnc_gui_component_reset_session
+ * Reset the associated session of all components with the original session
+ *
+ * old_session: the original session
+ * new_session: the new session
+ */
+void gnc_gui_component_reset_session (gpointer old_session, gpointer new_session);
+
/* gnc_gui_component_watch_entity
* Add an entity to the list of those being watched by the component.
* Only entities with refresh handlers should add watches.
diff --git a/gnucash/gnome-utils/gnc-file.c b/gnucash/gnome-utils/gnc-file.c
index 489f6bb52a..0c56662e88 100644
--- a/gnucash/gnome-utils/gnc-file.c
+++ b/gnucash/gnome-utils/gnc-file.c
@@ -1714,6 +1714,7 @@ gnc_file_do_save_as (GtkWindow *parent, const char* filename)
{
/* Yay! Save was successful, we can dump the old session */
qof_event_suspend();
+ gnc_gui_component_reset_session (session, new_session);
gnc_clear_current_session();
gnc_set_current_session( new_session );
qof_event_resume();
Summary of changes:
gnucash/gnome-utils/gnc-component-manager.c | 14 ++++++++++++++
gnucash/gnome-utils/gnc-component-manager.h | 8 ++++++++
gnucash/gnome-utils/gnc-file.c | 1 +
3 files changed, 23 insertions(+)
More information about the gnucash-changes
mailing list