gnucash maint: Fix gtk accelerator mixups by explicitly disabling actions that are not relevant
Geert Janssens
gjanssens at code.gnucash.org
Mon Sep 24 11:15:20 EDT 2018
Updated via https://github.com/Gnucash/gnucash/commit/f89a40e3 (commit)
from https://github.com/Gnucash/gnucash/commit/26a17987 (commit)
commit f89a40e3ebf7ffae2f59b352d5d2d2cbb00f1ab1
Author: Geert Janssens <geert at kobaltwit.be>
Date: Mon Sep 24 17:15:11 2018 +0200
Fix gtk accelerator mixups by explicitly disabling actions that are not relevant
The issue I found was with File->Print and its variants for various page types.
They all use the same '<primary>p' as global accelerator. It was possible to
have gnucash invoke the 'Print Report...' action instead of the 'Print Invoice...'
action when hitting <primary>p on an invoice page. If no report page was
open at this point, gnucash would crash. If a report was open, gnucash
would invoke the print action on that report instead of opening an
invoice report for the invoice. This looks like a bug internally in
the gtkaction handling or our improper use of it. However I could
work around it by disabling action groups before unmerging them.
diff --git a/gnucash/gnome-utils/gnc-plugin-page.c b/gnucash/gnome-utils/gnc-plugin-page.c
index b29e1a2..76d8ebb 100644
--- a/gnucash/gnome-utils/gnc-plugin-page.c
+++ b/gnucash/gnome-utils/gnc-plugin-page.c
@@ -287,6 +287,7 @@ gnc_plugin_page_merge_actions (GncPluginPage *page,
priv = GNC_PLUGIN_PAGE_GET_PRIVATE(page);
priv->ui_merge = ui_merge;
+ gtk_action_group_set_sensitive (priv->action_group, TRUE);
priv->merge_id = gnc_plugin_add_actions(priv->ui_merge,
priv->action_group,
priv->ui_description);
@@ -307,6 +308,7 @@ gnc_plugin_page_unmerge_actions (GncPluginPage *page,
g_return_if_fail (priv->action_group != NULL);
gtk_ui_manager_remove_ui(ui_merge, priv->merge_id);
+ gtk_action_group_set_sensitive (priv->action_group, FALSE);
gtk_ui_manager_remove_action_group(ui_merge, priv->action_group);
priv->ui_merge = NULL;
Summary of changes:
gnucash/gnome-utils/gnc-plugin-page.c | 2 ++
1 file changed, 2 insertions(+)
More information about the gnucash-changes
mailing list