gnucash master: Multiple changes pushed

Robert Fewell bobit at code.gnucash.org
Sat Mar 18 07:22:40 EDT 2023


Updated	 via  https://github.com/Gnucash/gnucash/commit/a143f8b5 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/55cdb6fe (commit)
	 via  https://github.com/Gnucash/gnucash/commit/cc5029bb (commit)
	 via  https://github.com/Gnucash/gnucash/commit/6a301304 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/e8b0d4dd (commit)
	 via  https://github.com/Gnucash/gnucash/commit/0098b047 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/85f462fe (commit)
	from  https://github.com/Gnucash/gnucash/commit/b4b84319 (commit)



commit a143f8b5edd3118aedff975d3a1b5b47867e2027
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Sat Mar 11 11:30:03 2023 +0000

    Make changes to load and save default accelerator map file
    
    When the gui is loaded, check for the accelerator-map file being
    located in the user data directory, if not present copy the default one
    to the location and open it.

diff --git a/gnucash/gnome-utils/gnc-gnome-utils.c b/gnucash/gnome-utils/gnc-gnome-utils.c
index 6da3f03ab0..bba47c5deb 100644
--- a/gnucash/gnome-utils/gnc-gnome-utils.c
+++ b/gnucash/gnome-utils/gnc-gnome-utils.c
@@ -600,9 +600,6 @@ gnc_gui_init(void)
 {
     static GncMainWindow *main_window;
     gchar *map;
-#ifdef MAC_INTEGRATION
-    gchar *data_dir;
-#endif
 
     ENTER ("");
 
@@ -651,18 +648,30 @@ gnc_gui_init(void)
     // gtk_widget_show (GTK_WIDGET (main_window));
     gnc_window_set_progressbar_window (GNC_WINDOW(main_window));
 
-#ifdef MAC_INTEGRATION
+
     map = gnc_build_userdata_path(ACCEL_MAP_NAME);
     if (!g_file_test (map, G_FILE_TEST_EXISTS))
     {
-        g_free (map);
-        data_dir = gnc_path_get_pkgdatadir();
-        map = g_build_filename(data_dir, "ui", "osx_accel_map", NULL);
-        g_free(data_dir);
-    }
+        gchar *text = NULL;
+        gsize length;
+        gchar *map_source;
+        gchar *data_dir = gnc_path_get_pkgdatadir();
+#ifdef MAC_INTEGRATION
+        map_source = g_build_filename (data_dir, "ui", "accelerator-map-osx", NULL);
 #else
-    map = gnc_build_userdata_path(ACCEL_MAP_NAME);
+        map_source = g_build_filename (data_dir, "ui", "accelerator-map", NULL);
 #endif /* MAC_INTEGRATION */
+
+        if (map_source && g_file_get_contents (map_source, &text, &length, NULL))
+        {
+            if (length)
+                g_file_set_contents (map, text, length, NULL);
+            g_free (text);
+        }
+        g_free (map_source);
+        g_free(data_dir);
+    }
+
     gtk_accel_map_load(map);
     g_free(map);
 
diff --git a/gnucash/ui/CMakeLists.txt b/gnucash/ui/CMakeLists.txt
index 233e778e69..143d5f6b07 100644
--- a/gnucash/ui/CMakeLists.txt
+++ b/gnucash/ui/CMakeLists.txt
@@ -1,5 +1,7 @@
 set (ui_SOURCES
-      osx_accel_map)
+      osx_accel_map
+      accelerator-map
+      accelerator-map-osx)
 
 foreach (ui_file ${ui_SOURCES})
     configure_file (${ui_file} ${DATADIR_BUILD}/gnucash/ui/${ui_file} COPYONLY)

commit 55cdb6fe3485c7a89fc5e47e692b13e6d359481e
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Fri Mar 10 14:09:39 2023 +0000

    Default accelerator-map files

diff --git a/gnucash/ui/accelerator-map b/gnucash/ui/accelerator-map
new file mode 100644
index 0000000000..a96264f49f
--- /dev/null
+++ b/gnucash/ui/accelerator-map
@@ -0,0 +1,243 @@
+; gnucash GtkAccelMap rc-file         -*- scheme -*-
+; this file is an automated accelerator map dump
+;
+; (gtk_accel_path "<Actions>/gnc-plugin-account-tree-actions/ViewAccountTreeAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABGetBalanceAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABGetTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueIntTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueSepaDirectDebitAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueSepaIntTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueSepaTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABSetupAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABViewLogwindowAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/AQBankingImportAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/OnlineActionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsMortgageLoanAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsScheduledTransactionEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsScheduledTransactionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsSinceLastRunAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/EditFindTransactionsAction" "<Primary>f")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileExportAccountsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileNewAction" "<Primary>n")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileOpenAction" "<Primary>o")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileRevertAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileSaveAction" "<Primary>s")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileSaveAsAction" "<Primary><Shift>s")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/HelpTipsOfTheDayAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsBookCloseAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsCommodityEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsFinancialCalculatorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsImapEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsPriceEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsTransLinkedDocsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-bi-import-actions/bi_importAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/ActionsBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/CopyBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/DeleteBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/NewBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/OpenBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BillingTermsOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BillsDueReminderOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessLinkedDocsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessTestAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessTestInitDataAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessTestSearchAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerFindCustomerOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerFindInvoiceOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerFindJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerMenuAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerNewCustomerOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerNewInvoiceOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerNewJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerOverviewPageAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerProcessPaymentAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeFindEmployeeOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeFindExpenseVoucherOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeMenuAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeNewEmployeeOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeNewExpenseVoucherOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeOverviewPageAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeProcessPaymentAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/InvoicesDueReminderOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/RegisterAssignPayment" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/RegisterEditPayment" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/TaxTablesOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorFindBillOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorFindJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorFindVendorOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorMenuAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorNewBillOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorNewJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorNewVendorOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorOverviewPageAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorProcessPaymentAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-export-actions/CsvExportRegisterAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-export-actions/CsvExportTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-export-actions/CsvExportTreeAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-import-actions/CsvImportAccountAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-import-actions/CsvImportPriceAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-import-actions/CsvImportTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-customer-import-actions/customer_importAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-log-replay-actions/LogReplayAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-menu-additions-actions/AdditionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-ofx-actions/OfxImportAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-qif-import-actions/QIFImportAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-register-actions/ToolsGeneralJournalAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-report-system-actions/EditStyleSheetsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsAutoClearAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsLotsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsReconcileAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsStockAssistantAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsStockSplitAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsTransferAction" "<Primary>t")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditCascadeAccountAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditDeleteAccountAction" "Delete")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditEditAccountAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditFindAccountAction" "<Primary>i")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditOpenAccountAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditOpenSubaccountsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditRenumberSubaccountsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/FileAddAccountHierarchyAssistantAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/FileNewAccountAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ScrubAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ScrubAllAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ScrubSubAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ViewFilterByAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ViewRefreshAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/AllPeriodsBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/BudgetNoteAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/BudgetReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/DeleteBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/EstimateBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/OptionsBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/ViewFilterByAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/ViewRefreshAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/BlankEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/BusinessLinkAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/BusinessLinkOpenAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/CancelEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/DeleteEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/DuplicateEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditDuplicateInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditEditInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditPostInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditUnpostInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EntryDownAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EntryUpAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/FilePrintAction" "<Primary>p")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/RecordEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ReportsCompanyReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/SortOrderAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/SortOrderRadioAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ToolsProcessPaymentAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ViewRefreshAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ViewResetLayoutAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ViewSaveLayoutAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTCustomerListingReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTCustomerReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEditCustomerAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEditEmployeeAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEditVendorAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEmployeeReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTNewCustomerAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTNewEmployeeAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTNewVendorAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTVendorListingReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTVendorReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/ViewFilterByAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/ViewRefreshAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsAutoClearAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsLotsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsReconcileAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsStockAssistantAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsStockSplitAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsTransferAction" "<Primary>t")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/BlankTransactionAction" "<Primary>b")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/CancelTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/CopyTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/CutTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/DeleteTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/DuplicateTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditCopyAction" "<Primary>c")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditCutAction" "<Primary>x")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditEditAccountAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditExchangeRateAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditFindAccountAction" "<Primary>i")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditPasteAction" "<Primary>v")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/FilePrintAction" "<Primary>p")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/GotoDateAction" "<Primary>g")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/JumpLinkedInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/JumpTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/LinkedTransactionOpenAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/LinkTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/PasteTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/RecordTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/RemoveTransactionSplitsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ReportsAccountReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ReportsAcctTransReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ReverseTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ScheduleTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ScrubAllAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ScrubCurrentAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/SplitTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/UnvoidTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewFilterByAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewRefreshAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewSortByAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewStyleDoubleLineAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewStyleRadioAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/VoidTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/FilePrintAction" "<Primary>p")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/FilePrintPDFAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportExportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportSaveAction" "<Primary><Alt>s")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportSaveAsAction" "<Primary><Alt><Shift>s")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/SxListDeleteAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/SxListEditAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/SxListNewAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/ViewRefreshAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/mainwin/ActionsForgetWarningsAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ActionsRenamePageAction" "")
+; (gtk_accel_path "<Actions>/mainwin/EditCopyAction" "<Primary>c")
+; (gtk_accel_path "<Actions>/mainwin/EditCutAction" "<Primary>x")
+; (gtk_accel_path "<Actions>/mainwin/EditPasteAction" "<Primary>v")
+; (gtk_accel_path "<Actions>/mainwin/EditPreferencesAction" "")
+; (gtk_accel_path "<Actions>/mainwin/FileCloseAction" "<Primary>w")
+; (gtk_accel_path "<Actions>/mainwin/FileExportAction" "")
+; (gtk_accel_path "<Actions>/mainwin/FileImportAction" "")
+; (gtk_accel_path "<Actions>/mainwin/FilePageSetupAction" "<Primary><Shift>p")
+; (gtk_accel_path "<Actions>/mainwin/FilePrintAction" "<Primary>p")
+; (gtk_accel_path "<Actions>/mainwin/FilePropertiesAction" "<Alt>Return")
+; (gtk_accel_path "<Actions>/mainwin/FileQuitAction" "<Primary>q")
+; (gtk_accel_path "<Actions>/mainwin/HelpAboutAction" "")
+; (gtk_accel_path "<Actions>/mainwin/HelpContentsAction" "F1")
+; (gtk_accel_path "<Actions>/mainwin/HelpTutorialAction" "<Primary>h")
+; (gtk_accel_path "<Actions>/mainwin/ScrubMenuAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewStatusbarAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewSummaryAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewTabPositionAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewToolbarAction" "")
+; (gtk_accel_path "<Actions>/mainwin/WindowAction" "")
+; (gtk_accel_path "<Actions>/mainwin/WindowMovePageAction" "")
+; (gtk_accel_path "<Actions>/mainwin/WindowNewAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountCheckRepairAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountEditAccountAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountOpenAccountAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountTransferAction" "")
+; (gtk_accel_path "<Actions>/recwin/HelpHelpAction" "")
+; (gtk_accel_path "<Actions>/recwin/RecnCancelAction" "")
+; (gtk_accel_path "<Actions>/recwin/RecnChangeInfoAction" "")
+; (gtk_accel_path "<Actions>/recwin/RecnFinishAction" "<Primary>w")
+; (gtk_accel_path "<Actions>/recwin/RecnPostponeAction" "<Primary>p")
+; (gtk_accel_path "<Actions>/recwin/TransBalanceAction" "<Primary>b")
+; (gtk_accel_path "<Actions>/recwin/TransDeleteAction" "<Primary>d")
+; (gtk_accel_path "<Actions>/recwin/TransEditAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/recwin/TransRecAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/recwin/TransUnRecAction" "<Primary>u")
diff --git a/gnucash/ui/accelerator-map-osx b/gnucash/ui/accelerator-map-osx
new file mode 100644
index 0000000000..9a0b955983
--- /dev/null
+++ b/gnucash/ui/accelerator-map-osx
@@ -0,0 +1,243 @@
+; gnucash GtkAccelMap rc-file         -*- scheme -*-
+; this file is an automated accelerator map dump
+;
+; (gtk_accel_path "<Actions>/gnc-plugin-account-tree-actions/ViewAccountTreeAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABGetBalanceAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABGetTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueIntTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueSepaDirectDebitAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueSepaIntTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABIssueSepaTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABSetupAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/ABViewLogwindowAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/AQBankingImportAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-aqbanking-actions/OnlineActionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsMortgageLoanAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsScheduledTransactionEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsScheduledTransactionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ActionsSinceLastRunAction" "")
+ (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/EditFindTransactionsAction" "<Meta>f")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileExportAccountsAction" "")
+ (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileNewAction" "<Meta>n")
+ (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileOpenAction" "<Meta>o")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileRevertAction" "")
+ (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileSaveAction" "<Meta>s")
+ (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/FileSaveAsAction" "<Shift><Meta>s")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/HelpTipsOfTheDayAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsBookCloseAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsCommodityEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsFinancialCalculatorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsImapEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsPriceEditorAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-basic-commands-actions/ToolsTransLinkedDocsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-bi-import-actions/bi_importAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/ActionsBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/CopyBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/DeleteBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/NewBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-budget-actions/OpenBudgetAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BillingTermsOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BillsDueReminderOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessLinkedDocsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessTestAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessTestInitDataAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/BusinessTestSearchAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerFindCustomerOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerFindInvoiceOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerFindJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerMenuAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerNewCustomerOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerNewInvoiceOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerNewJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerOverviewPageAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/CustomerProcessPaymentAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeFindEmployeeOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeFindExpenseVoucherOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeMenuAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeNewEmployeeOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeNewExpenseVoucherOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeOverviewPageAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/EmployeeProcessPaymentAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/InvoicesDueReminderOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/RegisterAssignPayment" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/RegisterEditPayment" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/TaxTablesOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorFindBillOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorFindJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorFindVendorOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorMenuAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorNewBillOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorNewJobOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorNewVendorOpenAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorOverviewPageAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-business-actions/VendorProcessPaymentAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-export-actions/CsvExportRegisterAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-export-actions/CsvExportTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-export-actions/CsvExportTreeAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-import-actions/CsvImportAccountAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-import-actions/CsvImportPriceAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-csv-import-actions/CsvImportTransAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-customer-import-actions/customer_importAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-log-replay-actions/LogReplayAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-menu-additions-actions/AdditionsAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-ofx-actions/OfxImportAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-qif-import-actions/QIFImportAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-register-actions/ToolsGeneralJournalAction" "")
+; (gtk_accel_path "<Actions>/gnc-plugin-report-system-actions/EditStyleSheetsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsAutoClearAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsLotsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsReconcileAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsStockAssistantAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsStockSplitAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ActionsTransferAction" "<Meta>t")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditCascadeAccountAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditDeleteAccountAction" "Delete")
+ (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditEditAccountAction" "<Meta>e")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditFindAccountAction" "<Primary>i")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditOpenAccountAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditOpenSubaccountsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditRenumberSubaccountsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/FileAddAccountHierarchyAssistantAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/FileNewAccountAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ScrubAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ScrubAllAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ScrubSubAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ViewFilterByAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageAccountTreeActions/ViewRefreshAction" "<Meta>r")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/AllPeriodsBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/BudgetNoteAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/BudgetReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/DeleteBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/EstimateBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/OptionsBudgetAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/ViewFilterByAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageBudgetActions/ViewRefreshAction" "<Meta>r")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/BlankEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/BusinessLinkAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/BusinessLinkOpenAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/CancelEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/DeleteEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/DuplicateEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditDuplicateInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditEditInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditPostInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EditUnpostInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EntryDownAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/EntryUpAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/FilePrintAction" "<Meta>p")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/RecordEntryAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ReportsCompanyReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/SortOrderAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/SortOrderRadioAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ToolsProcessPaymentAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ViewRefreshAction" "<Meta>r")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ViewResetLayoutAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageInvoiceActions/ViewSaveLayoutAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTCustomerListingReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTCustomerReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEditCustomerAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEditEmployeeAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEditVendorAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTEmployeeReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTNewCustomerAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTNewEmployeeAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTNewVendorAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTVendorListingReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/OTVendorReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/ViewFilterByAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageOwnerTreeActions/ViewRefreshAction" "<Meta>r")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsAutoClearAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsLotsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsReconcileAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsStockAssistantAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsStockSplitAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ActionsTransferAction" "<Meta>t")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/BlankTransactionAction" "<Primary>b")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/CancelTransactionAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/CopyTransactionAction" "<Control><Meta>c")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/CutTransactionAction" "<Control><Meta>x")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/DeleteTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/DuplicateTransactionAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditCopyAction" "<Meta>c")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditCutAction" "<Meta>x")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditEditAccountAction" "<Meta>e")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditExchangeRateAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditFindAccountAction" "<Primary>i")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditPasteAction" "<Meta>v")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/EditTaxOptionsAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/FilePrintAction" "<Meta>p")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/GotoDateAction" "<Primary>g")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/JumpLinkedInvoiceAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/JumpTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/LinkedTransactionOpenAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/LinkTransactionAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/PasteTransactionAction" "<Control><Meta>v")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/RecordTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/RemoveTransactionSplitsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ReportsAccountReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ReportsAcctTransReportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ReverseTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ScheduleTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ScrubAllAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ScrubCurrentAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/SplitTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/UnvoidTransactionAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewFilterByAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewRefreshAction" "<Meta>r")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewSortByAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewStyleDoubleLineAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/ViewStyleRadioAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageRegisterActions/VoidTransactionAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageReportActions/FilePrintAction" "<Meta>p")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/FilePrintPDFAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportExportAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportSaveAction" "<Primary><Alt>s")
+; (gtk_accel_path "<Actions>/GncPluginPageReportActions/ReportSaveAsAction" "<Primary><Alt><Shift>s")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/EditTaxOptionsAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/SxListDeleteAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/SxListEditAction" "")
+; (gtk_accel_path "<Actions>/GncPluginPageSxListActions/SxListNewAction" "")
+ (gtk_accel_path "<Actions>/GncPluginPageSxListActions/ViewRefreshAction" "<Meta>r")
+; (gtk_accel_path "<Actions>/mainwin/ActionsForgetWarningsAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ActionsRenamePageAction" "")
+ (gtk_accel_path "<Actions>/mainwin/EditCopyAction" "<Meta>c")
+ (gtk_accel_path "<Actions>/mainwin/EditCutAction" "<Meta>x")
+ (gtk_accel_path "<Actions>/mainwin/EditPasteAction" "<Meta>v")
+; (gtk_accel_path "<Actions>/mainwin/EditPreferencesAction" "")
+ (gtk_accel_path "<Actions>/mainwin/FileCloseAction" "<Meta>w")
+; (gtk_accel_path "<Actions>/mainwin/FileExportAction" "")
+; (gtk_accel_path "<Actions>/mainwin/FileImportAction" "")
+ (gtk_accel_path "<Actions>/mainwin/FilePageSetupAction" "<Shift><Meta>p")
+ (gtk_accel_path "<Actions>/mainwin/FilePrintAction" "<Meta>p")
+; (gtk_accel_path "<Actions>/mainwin/FilePropertiesAction" "<Alt>Return")
+ (gtk_accel_path "<Actions>/mainwin/FileQuitAction" "<Meta>q")
+; (gtk_accel_path "<Actions>/mainwin/HelpAboutAction" "")
+; (gtk_accel_path "<Actions>/mainwin/HelpContentsAction" "F1")
+ (gtk_accel_path "<Actions>/mainwin/HelpTutorialAction" "<Control><Meta>h")
+; (gtk_accel_path "<Actions>/mainwin/ScrubMenuAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewStatusbarAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewSummaryAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewTabPositionAction" "")
+; (gtk_accel_path "<Actions>/mainwin/ViewToolbarAction" "")
+; (gtk_accel_path "<Actions>/mainwin/WindowAction" "")
+; (gtk_accel_path "<Actions>/mainwin/WindowMovePageAction" "")
+; (gtk_accel_path "<Actions>/mainwin/WindowNewAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountCheckRepairAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountEditAccountAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountOpenAccountAction" "")
+; (gtk_accel_path "<Actions>/recwin/AccountTransferAction" "")
+; (gtk_accel_path "<Actions>/recwin/HelpHelpAction" "")
+; (gtk_accel_path "<Actions>/recwin/RecnCancelAction" "")
+; (gtk_accel_path "<Actions>/recwin/RecnChangeInfoAction" "")
+; (gtk_accel_path "<Actions>/recwin/RecnFinishAction" "<Primary>w")
+; (gtk_accel_path "<Actions>/recwin/RecnPostponeAction" "<Primary>p")
+; (gtk_accel_path "<Actions>/recwin/TransBalanceAction" "<Primary>b")
+; (gtk_accel_path "<Actions>/recwin/TransDeleteAction" "<Primary>d")
+; (gtk_accel_path "<Actions>/recwin/TransEditAction" "<Primary>e")
+; (gtk_accel_path "<Actions>/recwin/TransRecAction" "<Primary>r")
+; (gtk_accel_path "<Actions>/recwin/TransUnRecAction" "<Primary>u")

commit cc5029bb4d1964baea9784900e8e0ab94dc892ba
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Fri Mar 10 11:42:35 2023 +0000

    Disable saving the gtk_accel_map
    
    It seems that it only saves the loaded map entries and if the original
    accelelerator-map file has commented out entries they are lost.

diff --git a/gnucash/gnome-utils/gnc-gnome-utils.c b/gnucash/gnome-utils/gnc-gnome-utils.c
index 2cf7829cbd..6da3f03ab0 100644
--- a/gnucash/gnome-utils/gnc-gnome-utils.c
+++ b/gnucash/gnome-utils/gnc-gnome-utils.c
@@ -718,14 +718,14 @@ gnc_gui_destroy (void)
 static void
 gnc_gui_shutdown (void)
 {
-    gchar *map;
+//    gchar *map;
 
     if (gnome_is_running && !gnome_is_terminating)
     {
         gnome_is_terminating = TRUE;
-        map = gnc_build_userdata_path(ACCEL_MAP_NAME);
-        gtk_accel_map_save(map);
-        g_free(map);
+//        map = gnc_build_userdata_path(ACCEL_MAP_NAME);
+//        gtk_accel_map_save(map);
+//        g_free(map);
         gnc_component_manager_shutdown ();
         gtk_main_quit();
     }

commit 6a3013046f808b9636fa369bb668bbd6876e881f
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Fri Mar 10 11:36:17 2023 +0000

    Change gnc_add_accelerator_keys_for_menu
    
    To allow the menu short cuts to be changed by the use of an
    accelerator-map file, this function adds scanning the gtk accelerator
    map and if any changes are found updates the GMenuModel, GMenuItem

diff --git a/gnucash/gnome-utils/gnc-embedded-window.c b/gnucash/gnome-utils/gnc-embedded-window.c
index 644f07f1db..a6e1c7769f 100644
--- a/gnucash/gnome-utils/gnc-embedded-window.c
+++ b/gnucash/gnome-utils/gnc-embedded-window.c
@@ -382,7 +382,7 @@ gnc_embedded_window_new (const gchar *action_group_name,
     // need to add the accelerator keys
     accel_group = gtk_accel_group_new ();
     gtk_window_add_accel_group (GTK_WINDOW(enclosing_win), accel_group);
-    gnc_add_accelerator_keys_for_menu (GTK_WIDGET(priv->menubar), accel_group);
+    gnc_add_accelerator_keys_for_menu (GTK_WIDGET(priv->menubar), priv->menubar_model, accel_group);
 
     g_free (ui_fullname);
     LEAVE("window %p", window);
diff --git a/gnucash/gnome-utils/gnc-gtk-utils.c b/gnucash/gnome-utils/gnc-gtk-utils.c
index f71fc205f0..6d8f804b33 100644
--- a/gnucash/gnome-utils/gnc-gtk-utils.c
+++ b/gnucash/gnome-utils/gnc-gtk-utils.c
@@ -360,6 +360,28 @@ gnc_disable_all_actions_in_group (GSimpleActionGroup *action_group)
 }
 
 
+static void
+accel_map_foreach_func (gpointer user_data, const gchar* accel_path, guint accel_key,
+                        GdkModifierType accel_mods, gboolean changed)
+{
+    GMenuModel *menu_model = user_data;
+    gchar **accel_path_parts = NULL;
+    guint  accel_size = 0;
+    gchar *accel_name_tmp = gtk_accelerator_name (accel_key, accel_mods);
+    gchar *accel_name = g_strescape (accel_name_tmp, NULL);
+
+    accel_path_parts = g_strsplit (accel_path, "/", -1);
+    accel_size = g_strv_length (accel_path_parts);
+
+    if (accel_size == 3)
+        gnc_menubar_model_update_item (menu_model, accel_path_parts[2],
+                                       NULL, accel_name, NULL);
+
+    g_strfreev (accel_path_parts);
+    g_free (accel_name_tmp);
+    g_free (accel_name);
+}
+
 static void
 add_accel_for_menu_lookup (GtkWidget *widget, gpointer user_data)
 {
@@ -396,14 +418,20 @@ add_accel_for_menu_lookup (GtkWidget *widget, gpointer user_data)
  *
  *  @param menu The menu widget.
  *
+ *  @param model The menu bar model.
+ *
  *  @param accel_group The accelerator group to use.
  */
 void
-gnc_add_accelerator_keys_for_menu (GtkWidget *menu, GtkAccelGroup *accel_group)
+gnc_add_accelerator_keys_for_menu (GtkWidget *menu, GMenuModel *model, GtkAccelGroup *accel_group)
 {
     g_return_if_fail (GTK_IS_WIDGET(menu));
+    g_return_if_fail (model != NULL);
     g_return_if_fail (accel_group != NULL);
 
+    // this updates the menu accelerators based on accelerator-map
+    gtk_accel_map_foreach (model, (GtkAccelMapForeach)accel_map_foreach_func);
+
     gtk_container_foreach (GTK_CONTAINER(menu), add_accel_for_menu_lookup, accel_group);
 }
 
diff --git a/gnucash/gnome-utils/gnc-gtk-utils.h b/gnucash/gnome-utils/gnc-gtk-utils.h
index e7309f4b05..78e5bfc2b8 100644
--- a/gnucash/gnome-utils/gnc-gtk-utils.h
+++ b/gnucash/gnome-utils/gnc-gtk-utils.h
@@ -65,7 +65,7 @@ GtkWidget *gnc_get_dialog_widget_from_id (GtkDialog *dialog, const gchar *id);
 
 void gnc_disable_all_actions_in_group (GSimpleActionGroup *action_group);
 
-void gnc_add_accelerator_keys_for_menu (GtkWidget *menu, GtkAccelGroup *accel_group);
+void gnc_add_accelerator_keys_for_menu (GtkWidget *menu, GMenuModel *model, GtkAccelGroup *accel_group);
 
 GtkWidget *gnc_find_menu_item_by_action_name (GtkWidget *menu, const gchar *action_name);
 GtkWidget *gnc_find_menu_item_by_action_label (GtkWidget *menu, const gchar *action_label);
diff --git a/gnucash/gnome-utils/gnc-main-window.cpp b/gnucash/gnome-utils/gnc-main-window.cpp
index b1711450e1..18c18d9edf 100644
--- a/gnucash/gnome-utils/gnc-main-window.cpp
+++ b/gnucash/gnome-utils/gnc-main-window.cpp
@@ -723,7 +723,7 @@ gnc_main_window_restore_window (GncMainWindow *window, GncMainWindowSaveData *da
     priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
 
     // need to add the accelerator keys
-    gnc_add_accelerator_keys_for_menu (GTK_WIDGET(priv->menubar), priv->accel_group);
+    gnc_add_accelerator_keys_for_menu (GTK_WIDGET(priv->menubar), priv->menubar_model, priv->accel_group);
 
     /* Common view menu items */
     action = gnc_main_window_find_action (window, "ViewToolbarAction");
@@ -3619,7 +3619,7 @@ gnc_main_window_menu_add_accelerator_keys (GncMainWindow *window)
 
     priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
 
-    gnc_add_accelerator_keys_for_menu (priv->menubar, priv->accel_group);
+    gnc_add_accelerator_keys_for_menu (priv->menubar, priv->menubar_model, priv->accel_group);
 }
 
 
@@ -3834,7 +3834,7 @@ gnc_main_window_update_menu_and_toolbar (GncMainWindow *window,
     gnc_plugin_add_menu_tooltip_callbacks (priv->menubar, priv->menubar_model, priv->statusbar);
 
     // need to add the accelerator keys
-    gnc_add_accelerator_keys_for_menu (priv->menubar, priv->accel_group);
+    gnc_add_accelerator_keys_for_menu (priv->menubar, priv->menubar_model, priv->accel_group);
 #ifdef MAC_INTEGRATION
     gtkosx_application_sync_menubar (theApp);
     g_object_unref (theApp);
@@ -4059,7 +4059,7 @@ main_window_realize_cb (GtkWidget *widget, gpointer user_data)
     GncMainWindow *window = (GncMainWindow*)user_data;
     GncMainWindowPrivate *priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
 
-    gnc_add_accelerator_keys_for_menu (GTK_WIDGET(priv->menubar), priv->accel_group);
+    gnc_add_accelerator_keys_for_menu (GTK_WIDGET(priv->menubar), priv->menubar_model, priv->accel_group);
 
     /* need to signal menu has been changed, this will call the
        business function 'bind_extra_toolbuttons_visibility' */
diff --git a/gnucash/gnome/window-reconcile.c b/gnucash/gnome/window-reconcile.c
index 691730955e..fd17025778 100644
--- a/gnucash/gnome/window-reconcile.c
+++ b/gnucash/gnome/window-reconcile.c
@@ -1897,7 +1897,7 @@ recnWindowWithBalance (GtkWidget *parent, Account *account, gnc_numeric new_endi
         gtk_window_add_accel_group (GTK_WINDOW(recnData->window), accel_group);
 
         // need to add the accelerator keys
-        gnc_add_accelerator_keys_for_menu (menu_bar, accel_group);
+        gnc_add_accelerator_keys_for_menu (menu_bar, menu_model, accel_group);
 
 #ifdef MAC_INTEGRATION
         gtkosx_application_sync_menubar (theApp);

commit e8b0d4dd874164fd129c81394ad79b998e6038fd
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Fri Mar 10 11:33:33 2023 +0000

    Change gnc_menubar_model_update_item to also update accelerator keys

diff --git a/gnucash/gnome-utils/gnc-gtk-utils.c b/gnucash/gnome-utils/gnc-gtk-utils.c
index d9bed92799..f71fc205f0 100644
--- a/gnucash/gnome-utils/gnc-gtk-utils.c
+++ b/gnucash/gnome-utils/gnc-gtk-utils.c
@@ -749,20 +749,22 @@ gnc_menubar_model_find_menu_item (GMenuModel *menu_model, GtkWidget *menu, const
  *
  *  @param label The new menu label text.
  *
+ *  @param accel_name The accelerator string
+ *
  *  @param tooltip The new tooltip text if any.
  *
  *  @return TRUE if item found and updated or FALSE if not.
  */
 gboolean
 gnc_menubar_model_update_item (GMenuModel *menu_model, const gchar *action_name,
-                               const gchar *label, const gchar *tooltip)
+                               const gchar *label, const gchar *accel_name,
+                               const gchar *tooltip)
 {
     GncMenuModelSearch *gsm;
     gboolean found = FALSE;
 
     g_return_val_if_fail (menu_model != NULL, FALSE);
     g_return_val_if_fail (action_name != NULL, FALSE);
-    g_return_val_if_fail (label != NULL, FALSE);
 
     gsm = g_new0 (GncMenuModelSearch, 1);
 
@@ -778,7 +780,7 @@ gnc_menubar_model_update_item (GMenuModel *menu_model, const gchar *action_name,
         const gchar *old_action = NULL;
         const gchar *old_temp = NULL;
         const gchar *old_accel = NULL;
-        GMenuItem *item;
+        const gchar *old_tooltip = NULL;
 
         iter = g_menu_model_iterate_item_attributes (gsm->model, gsm->index);
         while (g_menu_attribute_iter_get_next (iter, &key, &value))
@@ -792,31 +794,61 @@ gnc_menubar_model_update_item (GMenuModel *menu_model, const gchar *action_name,
             else if (g_str_equal (key, GNC_MENU_ATTRIBUTE_ACCELERATOR) &&
                      g_variant_is_of_type (value, G_VARIANT_TYPE_STRING))
                 old_accel = g_variant_get_string (value, NULL);
+            else if (g_str_equal (key, GNC_MENU_ATTRIBUTE_TOOLTIP) &&
+                     g_variant_is_of_type (value, G_VARIANT_TYPE_STRING))
+                old_tooltip = g_variant_get_string (value, NULL);
             else if (g_str_equal (key, G_MENU_ATTRIBUTE_TARGET))
                 old_target = g_variant_ref (value);
 
             g_variant_unref (value);
         }
 
-        item = g_menu_item_new (label, old_action);
+        if (!label && !gsm->search_action_label)
+        {
+            if (old_target)
+                g_variant_unref (old_target);
+
+            g_free (gsm);
+            return found;
+        }
+
+        if ((accel_name && g_strcmp0 (old_accel, accel_name) != 0) ||
+            (tooltip && g_strcmp0 (old_tooltip, tooltip) != 0) ||
+            (label && g_strcmp0 (gsm->search_action_label, label) != 0))
+        {
+            GMenuItem *item = NULL;
 
-        if (tooltip)
-            g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_TOOLTIP, "s", tooltip);
+            if (label)
+                item = g_menu_item_new (label, old_action);
+            else
+                item = g_menu_item_new (gsm->search_action_label, old_action);
 
-        if (old_temp)
-            g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_TEMPORARY, "s", old_temp);
+            if (tooltip)
+                g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_TOOLTIP, "s", tooltip);
+            else
+            {
+                if (old_tooltip)
+                   g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_TOOLTIP, "s", old_tooltip);
+            }
+            if (accel_name)
+                g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_ACCELERATOR, "s", accel_name);
+            else
+            {
+                if (old_accel)
+                    g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_ACCELERATOR, "s", old_accel);
+            }
+            if (old_temp)
+                g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_TEMPORARY, "s", old_temp);
 
-        if (old_accel)
-            g_menu_item_set_attribute (item, GNC_MENU_ATTRIBUTE_ACCELERATOR, "s", old_accel);
+            if (old_target)
+                g_menu_item_set_attribute_value (item, G_MENU_ATTRIBUTE_TARGET, old_target);
 
+            g_menu_remove (G_MENU(gsm->model), gsm->index);
+            g_menu_insert_item (G_MENU(gsm->model), gsm->index, item);
+            found = TRUE;
+        }
         if (old_target)
-        {
-            g_menu_item_set_attribute_value (item, G_MENU_ATTRIBUTE_TARGET, old_target);
             g_variant_unref (old_target);
-        }
-        g_menu_remove (G_MENU(gsm->model), gsm->index);
-        g_menu_insert_item (G_MENU(gsm->model), gsm->index, item);
-        found = TRUE;
     }
     g_free (gsm);
     return found;
diff --git a/gnucash/gnome-utils/gnc-gtk-utils.h b/gnucash/gnome-utils/gnc-gtk-utils.h
index bc77574fdf..e7309f4b05 100644
--- a/gnucash/gnome-utils/gnc-gtk-utils.h
+++ b/gnucash/gnome-utils/gnc-gtk-utils.h
@@ -94,7 +94,8 @@ gboolean gnc_menubar_model_find_item (GMenuModel *menu_model, GncMenuModelSearch
 GtkWidget *gnc_menubar_model_find_menu_item (GMenuModel *menu_model, GtkWidget *menu, const gchar *action_name);
 
 gboolean gnc_menubar_model_update_item (GMenuModel *menu_model, const gchar *action_name,
-                                        const gchar *label, const gchar *tooltip);
+                                        const gchar *label, const gchar *accel_name,
+                                        const gchar *tooltip);
 
 void gnc_menubar_model_remove_items_with_attrib (GMenuModel *menu_model, const gchar *attrib);
 
diff --git a/gnucash/gnome-utils/gnc-main-window.cpp b/gnucash/gnome-utils/gnc-main-window.cpp
index cde480ebd2..b1711450e1 100644
--- a/gnucash/gnome-utils/gnc-main-window.cpp
+++ b/gnucash/gnome-utils/gnc-main-window.cpp
@@ -3639,7 +3639,7 @@ gnc_main_window_update_menu_for_action (GncMainWindow *window,
     priv = GNC_MAIN_WINDOW_GET_PRIVATE(window);
 
     found =  gnc_menubar_model_update_item (priv->menubar_model, action_name,
-                                            _(label), _(tooltip));
+                                            _(label), nullptr, _(tooltip));
 
     // add tooltip redirect call backs
     gnc_plugin_add_menu_tooltip_callbacks (priv->menubar,
diff --git a/gnucash/gnome/gnc-plugin-page-register.c b/gnucash/gnome/gnc-plugin-page-register.c
index 4c83d5fb66..f622817856 100644
--- a/gnucash/gnome/gnc-plugin-page-register.c
+++ b/gnucash/gnome/gnc-plugin-page-register.c
@@ -1057,7 +1057,7 @@ gnc_plugin_page_register_ui_update (gpointer various,
             {
                 /* Adjust the action's label and tooltip */
                 found = gnc_menubar_model_update_item (gnc_window_get_menubar_model (gnc_window),
-                                                       *iter, _(*label_iter), _(*tooltip_iter));
+                                                       *iter, _(*label_iter), NULL, _(*tooltip_iter));
 
                 PINFO("split model_item action '%s', found is %d, iter label is '%s'",
                         *iter, found, _(*label_iter));
@@ -1075,7 +1075,7 @@ gnc_plugin_page_register_ui_update (gpointer various,
             {
                 /* Adjust the action's label and tooltip */
                 found = gnc_menubar_model_update_item (gnc_window_get_menubar_model (gnc_window),
-                                                       *iter, _(*label_iter), _(*tooltip_iter));
+                                                       *iter, _(*label_iter), NULL, _(*tooltip_iter));
 
                 PINFO("trans model_item action '%s', found is %d, iter label is '%s'",
                         *iter, found, _(*label_iter));

commit 0098b047d5fb67df39fda92f578bad358b4d1418
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed Mar 8 15:52:03 2023 +0000

    Only add the accelerator key to the menu item once

diff --git a/gnucash/gnome-utils/gnc-gtk-utils.c b/gnucash/gnome-utils/gnc-gtk-utils.c
index ef264b0c56..d9bed92799 100644
--- a/gnucash/gnome-utils/gnc-gtk-utils.c
+++ b/gnucash/gnome-utils/gnc-gtk-utils.c
@@ -371,15 +371,20 @@ add_accel_for_menu_lookup (GtkWidget *widget, gpointer user_data)
 
         if (accel_label)
         {
+            gboolean added = GPOINTER_TO_INT(g_object_get_data (G_OBJECT(menuItem),
+                                                                "accel-added"));
             guint key;
             GdkModifierType mods;
 
             gtk_accel_label_get_accel (GTK_ACCEL_LABEL(accel_label), &key, &mods);
 
-            if (key > 0)
+            if (key > 0 && !added)
+            {
+                g_object_set_data (G_OBJECT(menuItem), "accel-added", GINT_TO_POINTER(1));
                 gtk_widget_add_accelerator (GTK_WIDGET(widget), "activate",
                                             GTK_ACCEL_GROUP(user_data),
                                             key, mods, GTK_ACCEL_VISIBLE);
+            }
         }
         if (GTK_IS_CONTAINER(subMenu))
             gtk_container_foreach (GTK_CONTAINER(subMenu),

commit 85f462feb589839376adbde18c3543eaa9a93fdb
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Tue Mar 7 12:58:27 2023 +0000

    On a Mac, some keyboard short cuts are missing
    
    Sync the menu bar after the menus have been updated.

diff --git a/gnucash/gnome-utils/gnc-main-window.cpp b/gnucash/gnome-utils/gnc-main-window.cpp
index a2701328b9..cde480ebd2 100644
--- a/gnucash/gnome-utils/gnc-main-window.cpp
+++ b/gnucash/gnome-utils/gnc-main-window.cpp
@@ -3764,7 +3764,9 @@ gnc_main_window_update_menu_and_toolbar (GncMainWindow *window,
 
     GMenuModel *menu_model_part;
     GncMenuModelSearch *gsm = g_new0 (GncMenuModelSearch, 1);
-
+#ifdef MAC_INTEGRATION
+    auto theApp{static_cast<GtkosxApplication *>(g_object_new(GTKOSX_TYPE_APPLICATION, nullptr))};
+#endif
     g_return_if_fail (GNC_IS_MAIN_WINDOW(window));
     g_return_if_fail (page != nullptr);
     g_return_if_fail (ui_updates != nullptr);
@@ -3833,7 +3835,10 @@ gnc_main_window_update_menu_and_toolbar (GncMainWindow *window,
 
     // need to add the accelerator keys
     gnc_add_accelerator_keys_for_menu (priv->menubar, priv->accel_group);
-
+#ifdef MAC_INTEGRATION
+    gtkosx_application_sync_menubar (theApp);
+    g_object_unref (theApp);
+#endif
     // need to signal menu has been changed
     g_signal_emit_by_name (window, "menu_changed", page);
 
diff --git a/gnucash/gnome/window-reconcile.c b/gnucash/gnome/window-reconcile.c
index b43f4208cb..691730955e 100644
--- a/gnucash/gnome/window-reconcile.c
+++ b/gnucash/gnome/window-reconcile.c
@@ -1778,6 +1778,15 @@ static GActionEntry recWindow_actions_entries [] =
 /** The number of actions provided by the reconcile window. */
 static guint recnWindow_n_actions_entries = G_N_ELEMENTS(recWindow_actions_entries);
 
+#ifdef MAC_INTEGRATION
+/* Enable GtkMenuItem accelerators */
+static gboolean
+can_activate_cb(GtkWidget *widget, guint signal_id, gpointer data)
+{
+    //return gtk_widget_is_sensitive (widget);
+    return TRUE;
+}
+#endif
 
 /********************************************************************\
  * recnWindowWithBalance
@@ -1849,10 +1858,7 @@ recnWindowWithBalance (GtkWidget *parent, Account *account, gnc_numeric new_endi
         GtkAccelGroup *accel_group = gtk_accel_group_new ();
         const gchar *ui = GNUCASH_RESOURCE_PREFIX "/gnc-reconcile-window.ui";
         GError *error = NULL;
-#ifdef MAC_INTEGRATION
-        GtkosxApplication *theApp = g_object_new (GTKOSX_TYPE_APPLICATION,
-                                                  NULL);
-#endif
+
         recnData->builder = gtk_builder_new ();
 
         gtk_builder_add_from_resource (recnData->builder, ui, &error);
@@ -1871,15 +1877,14 @@ recnWindowWithBalance (GtkWidget *parent, Account *account, gnc_numeric new_endi
         menu_model = (GMenuModel *)gtk_builder_get_object (recnData->builder, "recwin-menu");
         menu_bar = gtk_menu_bar_new_from_model (menu_model);
         gtk_container_add (GTK_CONTAINER(vbox), menu_bar);
-#if MAC_INTEGRATION
+#ifdef MAC_INTEGRATION
+        GtkosxApplication *theApp = g_object_new (GTKOSX_TYPE_APPLICATION, NULL);
         gtk_widget_hide (menu_bar);
         gtk_widget_set_no_show_all (menu_bar, TRUE);
         if (GTK_IS_MENU_ITEM (menu_bar))
             menu_bar = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_bar));
 
         gtkosx_application_set_menu_bar (theApp, GTK_MENU_SHELL (menu_bar));
-        g_object_unref (theApp);
-        theApp = NULL;
 #endif
         tool_bar = (GtkToolbar *)gtk_builder_get_object (recnData->builder, "recwin-toolbar");
 
@@ -1894,6 +1899,14 @@ recnWindowWithBalance (GtkWidget *parent, Account *account, gnc_numeric new_endi
         // need to add the accelerator keys
         gnc_add_accelerator_keys_for_menu (menu_bar, accel_group);
 
+#ifdef MAC_INTEGRATION
+        gtkosx_application_sync_menubar (theApp);
+        g_signal_connect (menu_bar, "can-activate-accel",
+                          G_CALLBACK(can_activate_cb), NULL);
+        g_object_unref (theApp);
+        theApp = NULL;
+#endif
+
         recnData->simple_action_group = g_simple_action_group_new ();
 
         g_action_map_add_action_entries (G_ACTION_MAP(recnData->simple_action_group),



Summary of changes:
 gnucash/gnome-utils/gnc-embedded-window.c |   2 +-
 gnucash/gnome-utils/gnc-gnome-utils.c     |  37 +++--
 gnucash/gnome-utils/gnc-gtk-utils.c       | 101 ++++++++++---
 gnucash/gnome-utils/gnc-gtk-utils.h       |   5 +-
 gnucash/gnome-utils/gnc-main-window.cpp   |  19 ++-
 gnucash/gnome/gnc-plugin-page-register.c  |   4 +-
 gnucash/gnome/window-reconcile.c          |  29 +++-
 gnucash/ui/CMakeLists.txt                 |   4 +-
 gnucash/ui/accelerator-map                | 243 ++++++++++++++++++++++++++++++
 gnucash/ui/accelerator-map-osx            | 243 ++++++++++++++++++++++++++++++
 10 files changed, 634 insertions(+), 53 deletions(-)
 create mode 100644 gnucash/ui/accelerator-map
 create mode 100644 gnucash/ui/accelerator-map-osx



More information about the gnucash-changes mailing list