gnucash maint: Fix missing mnemonic keys after changes to GNCAmountEdit

Robert Fewell bobit at code.gnucash.org
Thu Jul 15 10:12:44 EDT 2021


Updated	 via  https://github.com/Gnucash/gnucash/commit/36674d36 (commit)
	from  https://github.com/Gnucash/gnucash/commit/eb3a578a (commit)



commit 36674d36c57efc4b709ae9173030e79838e699d3
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Thu Jul 15 15:07:01 2021 +0100

    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.

diff --git a/gnucash/gnome-utils/dialog-account.c b/gnucash/gnome-utils/dialog-account.c
index bcc166496..e16e94bbc 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 b8e2c7975..52762e42d 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 125ca73df..61ad6fa88 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 db3604651..158d2c6cd 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 910dfb9ae..7328da94c 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 74880aa81..fba85ca64 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 aeb18b07b..e03b390a1 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 f8c0294c8..d7dc349f8 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 5a05774c9..24b551fd8 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 cc3ad5831..446061b1a 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 1bb3258f8..2a74ba133 100644
--- a/gnucash/import-export/aqb/dialog-ab.glade
+++ b/gnucash/import-export/aqb/dialog-ab.glade
@@ -1206,7 +1206,7 @@
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label8877434">
+                  <object class="GtkLabel" id="amount_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="label" translatable="yes">_Amount</property>



Summary of changes:
 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(-)



More information about the gnucash-changes mailing list