From 36674d36c57efc4b709ae9173030e79838e699d3 Mon Sep 17 00:00:00 2001 From: Robert Fewell <14uBobIT@gmail.com> Date: Thu, 15 Jul 2021 15:07:01 +0100 Subject: [PATCH] Fix missing mnemonic keys after changes to GNCAmountEdit With the changes to GNCAmountEdit, the way the mnemonic keys are associated to the entry widget of the GNCAmountEdit needs to change so have created a function gnc_amount_edit_make_mnemeonic_target which does the same as GNCDateEdit. --- gnucash/gnome-utils/dialog-account.c | 4 +++- gnucash/gnome-utils/dialog-tax-table.c | 2 +- gnucash/gnome-utils/gnc-amount-edit.c | 9 +++++++++ gnucash/gnome-utils/gnc-amount-edit.h | 9 +++++++++ gnucash/gnome/assistant-stock-split.c | 4 ++-- gnucash/gnome/dialog-price-editor.c | 2 +- gnucash/gnome/window-autoclear.c | 6 +++--- gnucash/gnome/window-reconcile.c | 2 +- gnucash/gnome/window-reconcile2.c | 2 +- gnucash/import-export/aqb/dialog-ab-trans.c | 4 +++- gnucash/import-export/aqb/dialog-ab.glade | 2 +- 11 files changed, 34 insertions(+), 12 deletions(-) diff --git a/gnucash/gnome-utils/dialog-account.c b/gnucash/gnome-utils/dialog-account.c index bcc1664965..e16e94bbc2 100644 --- a/gnucash/gnome-utils/dialog-account.c +++ b/gnucash/gnome-utils/dialog-account.c @@ -1504,10 +1504,12 @@ gnc_account_window_create(GtkWindow *parent, AccountWindow *aw) gtk_widget_show (amount); label = GTK_WIDGET(gtk_builder_get_object (builder, "balance_label")); - gtk_label_set_mnemonic_widget (GTK_LABEL(label), amount); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(amount), label); box = GTK_WIDGET(gtk_builder_get_object (builder, "opening_balance_date_box")); + label = GTK_WIDGET(gtk_builder_get_object (builder, "date_label")); date_edit = gnc_date_edit_new (gnc_time (NULL), 0, 0); + gnc_date_edit_make_mnemonic_target (GNC_DATE_EDIT(date_edit), label); aw->opening_balance_date_edit = date_edit; gtk_box_pack_start(GTK_BOX(box), date_edit, TRUE, TRUE, 0); gtk_widget_show (date_edit); diff --git a/gnucash/gnome-utils/dialog-tax-table.c b/gnucash/gnome-utils/dialog-tax-table.c index b8e2c79756..52762e42d4 100644 --- a/gnucash/gnome-utils/dialog-tax-table.c +++ b/gnucash/gnome-utils/dialog-tax-table.c @@ -334,7 +334,7 @@ new_tax_table_dialog (TaxTableWindow *ttw, gboolean new_table, /* Fix mnemonics for generated target widgets */ widget = GTK_WIDGET(gtk_builder_get_object (builder, "value_label")); - gtk_label_set_mnemonic_widget (GTK_LABEL(widget), ntt->amount_entry); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(ntt->amount_entry), widget); widget = GTK_WIDGET(gtk_builder_get_object (builder, "account_label")); gtk_label_set_mnemonic_widget (GTK_LABEL(widget), ntt->acct_tree); diff --git a/gnucash/gnome-utils/gnc-amount-edit.c b/gnucash/gnome-utils/gnc-amount-edit.c index 125ca73df6..61ad6fa886 100644 --- a/gnucash/gnome-utils/gnc-amount-edit.c +++ b/gnucash/gnome-utils/gnc-amount-edit.c @@ -616,3 +616,12 @@ gnc_amount_edit_show_warning_symbol (GNCAmountEdit *gae, gboolean show) gae->show_warning_symbol = show; } + +void +gnc_amount_edit_make_mnemonic_target (GNCAmountEdit *gae, GtkWidget *label) +{ + if (!gae) + return; + + gtk_label_set_mnemonic_widget (GTK_LABEL(label), GTK_WIDGET(gae->entry)); +} diff --git a/gnucash/gnome-utils/gnc-amount-edit.h b/gnucash/gnome-utils/gnc-amount-edit.h index db3604651c..158d2c6cd5 100644 --- a/gnucash/gnome-utils/gnc-amount-edit.h +++ b/gnucash/gnome-utils/gnc-amount-edit.h @@ -236,4 +236,13 @@ void gnc_amount_edit_select_region (GNCAmountEdit *gae, */ void gnc_amount_edit_show_warning_symbol (GNCAmountEdit *gae, gboolean show); +/** + * gnc_amount_edit_make_mnemonic_target: + * @gae: The GNCAmountEdit widget + * @label: The label whose access key should set focus to this widget. + * + * Returns nothing. + */ +void gnc_amount_edit_make_mnemonic_target (GNCAmountEdit *gae, GtkWidget *label); + #endif diff --git a/gnucash/gnome/assistant-stock-split.c b/gnucash/gnome/assistant-stock-split.c index 910dfb9ae9..7328da94ce 100644 --- a/gnucash/gnome/assistant-stock-split.c +++ b/gnucash/gnome/assistant-stock-split.c @@ -630,7 +630,7 @@ gnc_stock_split_assistant_create (StockSplitInfo *info) info->distribution_edit = amount; label = GTK_WIDGET(gtk_builder_get_object(builder, "distribution_label")); - gtk_label_set_mnemonic_widget(GTK_LABEL(label), amount); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(amount), label); amount = gnc_amount_edit_new (); gnc_amount_edit_set_print_info (GNC_AMOUNT_EDIT (amount), @@ -643,7 +643,7 @@ gnc_stock_split_assistant_create (StockSplitInfo *info) info->price_edit = amount; label = GTK_WIDGET(gtk_builder_get_object(builder, "price_label")); - gtk_label_set_mnemonic_widget(GTK_LABEL(label), amount); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(amount), label); info->price_currency_edit = gnc_currency_edit_new(); gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(info->price_currency_edit), gnc_default_currency()); diff --git a/gnucash/gnome/dialog-price-editor.c b/gnucash/gnome/dialog-price-editor.c index 74880aa813..fba85ca646 100644 --- a/gnucash/gnome/dialog-price-editor.c +++ b/gnucash/gnome/dialog-price-editor.c @@ -539,7 +539,7 @@ gnc_price_pedit_dialog_create (GtkWidget *parent, gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); gtk_widget_show (w); label = GTK_WIDGET(gtk_builder_get_object (builder, "price_label")); - gtk_label_set_mnemonic_widget (GTK_LABEL(label), w); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(w), label); g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (pedit_data_changed_cb), pedit_dialog); diff --git a/gnucash/gnome/window-autoclear.c b/gnucash/gnome/window-autoclear.c index aeb18b07bf..e03b390a1c 100644 --- a/gnucash/gnome/window-autoclear.c +++ b/gnucash/gnome/window-autoclear.c @@ -205,7 +205,7 @@ AutoClearWindow * autoClearWindow (GtkWidget *parent, Account *account) { GtkBox *box; - GtkLabel *label; + GtkWidget *label; GtkBuilder *builder; AutoClearWindow *data; char *title; @@ -245,8 +245,8 @@ autoClearWindow (GtkWidget *parent, Account *account) box = GTK_BOX(gtk_builder_get_object (builder, "end_value_box")); gtk_box_pack_start(box, GTK_WIDGET(data->end_value), TRUE, TRUE, 0); - label = GTK_LABEL(gtk_builder_get_object (builder, "end_label")); - gtk_label_set_mnemonic_widget(label, GTK_WIDGET(data->end_value)); + label = GTK_WIDGET(gtk_builder_get_object (builder, "end_label")); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(data->end_value), label); /* pre-fill with current balance */ after = xaccAccountGetClearedBalance (data->account); diff --git a/gnucash/gnome/window-reconcile.c b/gnucash/gnome/window-reconcile.c index f8c0294c8b..d7dc349f89 100644 --- a/gnucash/gnome/window-reconcile.c +++ b/gnucash/gnome/window-reconcile.c @@ -740,7 +740,7 @@ startRecnWindow(GtkWidget *parent, Account *account, box = GTK_WIDGET(gtk_builder_get_object (builder, "ending_value_box")); gtk_box_pack_start(GTK_BOX(box), end_value, TRUE, TRUE, 0); label = GTK_WIDGET(gtk_builder_get_object (builder, "end_label")); - gtk_label_set_mnemonic_widget(GTK_LABEL(label), end_value); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(end_value), label); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, &data); diff --git a/gnucash/gnome/window-reconcile2.c b/gnucash/gnome/window-reconcile2.c index 5a05774c97..24b551fd8e 100644 --- a/gnucash/gnome/window-reconcile2.c +++ b/gnucash/gnome/window-reconcile2.c @@ -703,7 +703,7 @@ startRecnWindow (GtkWidget *parent, Account *account, box = GTK_WIDGET (gtk_builder_get_object (builder, "ending_value_box")); gtk_box_pack_start (GTK_BOX (box), end_value, TRUE, TRUE, 0); label = GTK_WIDGET (gtk_builder_get_object (builder, "end_label")); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), end_value); + gnc_amount_edit_make_mnemonic_target (GNC_AMOUNT_EDIT(end_value), label); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, &data); diff --git a/gnucash/import-export/aqb/dialog-ab-trans.c b/gnucash/import-export/aqb/dialog-ab-trans.c index cc3ad5831f..446061b1a8 100644 --- a/gnucash/import-export/aqb/dialog-ab-trans.c +++ b/gnucash/import-export/aqb/dialog-ab-trans.c @@ -272,7 +272,7 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, GNC_AB_ACCOUNT_SPEC *ab_acc, GtkWidget *recp_name_heading; GtkWidget *recp_account_heading; GtkWidget *recp_bankcode_heading; - GtkWidget *amount_hbox; + GtkWidget *amount_hbox, *amount_label; GtkWidget *orig_name_heading; GtkWidget *orig_account_heading; GtkWidget *orig_account_label; @@ -326,6 +326,7 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, GNC_AB_ACCOUNT_SPEC *ab_acc, td->recp_bankcode_entry = GTK_WIDGET(gtk_builder_get_object (builder, "recp_bankcode_entry")); td->recp_bankname_label = GTK_WIDGET(gtk_builder_get_object (builder, "recp_bankname_label")); amount_hbox = GTK_WIDGET(gtk_builder_get_object (builder, "amount_hbox")); + amount_label = GTK_WIDGET(gtk_builder_get_object (builder, "amount_label")); td->purpose_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_entry")); td->purpose_cont_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_cont_entry")); td->purpose_cont2_entry = GTK_WIDGET(gtk_builder_get_object (builder, "purpose_cont2_entry")); @@ -345,6 +346,7 @@ gnc_ab_trans_dialog_new(GtkWidget *parent, GNC_AB_ACCOUNT_SPEC *ab_acc, /* Amount edit */ td->amount_edit = gnc_amount_edit_new(); gtk_box_pack_start(GTK_BOX(amount_hbox), td->amount_edit, TRUE, TRUE, 0); + gnc_amount_edit_make_mnemonic_target(GNC_AMOUNT_EDIT(td->amount_edit), amount_label); gnc_amount_edit_set_evaluate_on_enter(GNC_AMOUNT_EDIT(td->amount_edit), TRUE); gnc_amount_edit_set_fraction(GNC_AMOUNT_EDIT(td->amount_edit), diff --git a/gnucash/import-export/aqb/dialog-ab.glade b/gnucash/import-export/aqb/dialog-ab.glade index 1bb3258f87..2a74ba133b 100644 --- a/gnucash/import-export/aqb/dialog-ab.glade +++ b/gnucash/import-export/aqb/dialog-ab.glade @@ -1206,7 +1206,7 @@ - + True False _Amount