gnucash maint: Multiple changes pushed

Robert Fewell bobit at code.gnucash.org
Sun Oct 11 06:33:50 EDT 2020


Updated	 via  https://github.com/Gnucash/gnucash/commit/3587b4cc (commit)
	 via  https://github.com/Gnucash/gnucash/commit/8e220976 (commit)
	from  https://github.com/Gnucash/gnucash/commit/05c96f66 (commit)



commit 3587b4cc4ba5d4896bf40a567d712ac5b443ebcd
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Sun Oct 11 11:31:39 2020 +0100

    Tax Report Options appeared twice on menu for Chart of Accounts

diff --git a/gnucash/ui/gnc-plugin-page-account-tree-ui.xml b/gnucash/ui/gnc-plugin-page-account-tree-ui.xml
index 373768bdf..5bef79ca1 100644
--- a/gnucash/ui/gnc-plugin-page-account-tree-ui.xml
+++ b/gnucash/ui/gnc-plugin-page-account-tree-ui.xml
@@ -10,7 +10,6 @@
         <separator name="EditSep2"/>
         <menuitem name="FileOpenAccount" action="FileOpenAccountAction"/>
         <menuitem name="FileOpenSubaccounts" action="FileOpenSubaccountsAction"/>
-        <menuitem name="EditTaxOptions" action="EditTaxOptionsAction"/>
       </placeholder>
     </menu>
     <menu name="Actions" action="ActionsAction">

commit 8e220976be07f728937ca24c73201e7e98f68125
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Sun Oct 11 11:22:39 2020 +0100

    Some dialogs do not close with Escape key
    
    These dialogs are based on GtkWindow and as such do not natively
    respond to the escape key being pressed so to fix this a call back has
    been added for 'key_press_event' which checks for the escape key.

diff --git a/gnucash/gnome-utils/dialog-tax-table.c b/gnucash/gnome-utils/dialog-tax-table.c
index 081944a2a..b78778b7a 100644
--- a/gnucash/gnome-utils/dialog-tax-table.c
+++ b/gnucash/gnome-utils/dialog-tax-table.c
@@ -743,6 +743,7 @@ tax_table_window_close_handler (gpointer data)
     TaxTableWindow *ttw = data;
     g_return_if_fail (ttw);
 
+    gnc_save_window_size (GNC_PREFS_GROUP, GTK_WINDOW(ttw->dialog));
     gtk_widget_destroy (ttw->dialog);
 }
 
@@ -750,9 +751,19 @@ void
 tax_table_window_close (GtkWidget *widget, gpointer data)
 {
     TaxTableWindow *ttw = data;
+    gnc_close_gui_component (ttw->component_id);
+}
 
-    gnc_save_window_size (GNC_PREFS_GROUP, GTK_WINDOW(ttw->dialog));
-    gnc_ui_tax_table_window_destroy (ttw);
+static gboolean
+tax_table_window_delete_event_cb (GtkWidget *widget,
+                                  GdkEvent  *event,
+                                  gpointer   user_data)
+{
+    TaxTableWindow *ttw = user_data;
+    // this cb allows the window size to be saved on closing with the X
+    gnc_save_window_size (GNC_PREFS_GROUP,
+                          GTK_WINDOW(ttw->dialog));
+    return FALSE;
 }
 
 void
@@ -764,13 +775,33 @@ tax_table_window_destroy_cb (GtkWidget *widget, gpointer data)
 
     gnc_unregister_gui_component (ttw->component_id);
 
+    if (ttw->dialog)
+    {
+        gtk_widget_destroy (ttw->dialog);
+        ttw->dialog = NULL;
+    }
     g_free (ttw);
 }
 
 static gboolean
-find_handler (gpointer find_data, gpointer user_data)
+tax_table_window_key_press_cb (GtkWidget *widget, GdkEventKey *event,
+                               gpointer data)
 {
-    TaxTableWindow *ttw = user_data;
+    TaxTableWindow *ttw = data;
+
+    if (event->keyval == GDK_KEY_Escape)
+    {
+        tax_table_window_close_handler (ttw);
+        return TRUE;
+    }
+    else
+        return FALSE;
+}
+
+static gboolean
+find_handler (gpointer find_data, gpointer data)
+{
+    TaxTableWindow *ttw = data;
     QofBook *book = find_data;
 
     return (ttw != NULL && ttw->book == book);
@@ -819,6 +850,12 @@ gnc_ui_tax_table_window_new (GtkWindow *parent, QofBook *book)
     gtk_widget_set_name (GTK_WIDGET(ttw->dialog), "gnc-id-new-tax-table");
     gnc_widget_style_context_add_class (GTK_WIDGET(ttw->dialog), "gnc-class-taxes");
 
+    g_signal_connect (ttw->dialog, "delete-event",
+                      G_CALLBACK(tax_table_window_delete_event_cb), ttw);
+
+    g_signal_connect (ttw->dialog, "key_press_event",
+                      G_CALLBACK (tax_table_window_key_press_cb), ttw);
+
     /* Create the tax tables view */
     view = GTK_TREE_VIEW(ttw->names_view);
     store = gtk_list_store_new (NUM_TAX_TABLE_COLS, G_TYPE_STRING,
@@ -890,16 +927,6 @@ gnc_ui_tax_table_window_new (GtkWindow *parent, QofBook *book)
     return ttw;
 }
 
-/* Destroy a tax-table window */
-void
-gnc_ui_tax_table_window_destroy (TaxTableWindow *ttw)
-{
-    if (!ttw)
-        return;
-
-    gnc_close_gui_component (ttw->component_id);
-}
-
 /* Create a new tax-table by name */
 GncTaxTable *
 gnc_ui_tax_table_new_from_name (GtkWindow *parent, QofBook *book, const char *name)
diff --git a/gnucash/gnome/dialog-billterms.c b/gnucash/gnome/dialog-billterms.c
index 14fa85dbb..fbe6d5184 100644
--- a/gnucash/gnome/dialog-billterms.c
+++ b/gnucash/gnome/dialog-billterms.c
@@ -718,8 +718,7 @@ void
 billterms_window_close (GtkWidget *widget, gpointer data)
 {
     BillTermsWindow *btw = data;
-
-    gnc_ui_billterms_window_destroy (btw);
+    gnc_close_gui_component (btw->component_id);
 }
 
 void
@@ -731,13 +730,33 @@ billterms_window_destroy_cb (GtkWidget *widget, gpointer data)
 
     gnc_unregister_gui_component (btw->component_id);
 
+    if (btw->window)
+    {
+        gtk_widget_destroy (btw->window);
+        btw->window = NULL;
+    }
     g_free (btw);
 }
 
 static gboolean
-find_handler (gpointer find_data, gpointer user_data)
+billterms_window_key_press_cb (GtkWidget *widget, GdkEventKey *event,
+                               gpointer data)
 {
-    BillTermsWindow *btw = user_data;
+    BillTermsWindow *btw = data;
+
+    if (event->keyval == GDK_KEY_Escape)
+    {
+        billterms_window_close_handler (btw);
+        return TRUE;
+    }
+    else
+        return FALSE;
+}
+
+static gboolean
+find_handler (gpointer find_data, gpointer data)
+{
+    BillTermsWindow *btw = data;
     QofBook *book = find_data;
 
     return (btw != NULL && btw->book == book);
@@ -789,6 +808,9 @@ gnc_ui_billterms_window_new (GtkWindow *parent, QofBook *book)
     gtk_widget_set_name (GTK_WIDGET(btw->window), "gnc-id-bill-terms");
     gnc_widget_style_context_add_class (GTK_WIDGET(btw->window), "gnc-class-bill-terms");
 
+    g_signal_connect (btw->window, "key_press_event",
+                      G_CALLBACK (billterms_window_key_press_cb), btw);
+
     /* Initialize the view */
     view = GTK_TREE_VIEW(btw->terms_view);
     store = gtk_list_store_new (NUM_BILL_TERM_COLS, G_TYPE_STRING, G_TYPE_POINTER);
@@ -836,16 +858,6 @@ gnc_ui_billterms_window_new (GtkWindow *parent, QofBook *book)
     return btw;
 }
 
-/* Destroy a billterms window */
-void
-gnc_ui_billterms_window_destroy (BillTermsWindow *btw)
-{
-    if (!btw)
-        return;
-
-    gnc_close_gui_component (btw->component_id);
-}
-
 #if 0
 /* Create a new billterms by name */
 GncBillTerm *
diff --git a/gnucash/gnome/dialog-commodities.c b/gnucash/gnome/dialog-commodities.c
index f34c5da0d..e490b74f6 100644
--- a/gnucash/gnome/dialog-commodities.c
+++ b/gnucash/gnome/dialog-commodities.c
@@ -70,6 +70,9 @@ void gnc_commodities_dialog_edit_clicked (GtkWidget *widget, gpointer data);
 void gnc_commodities_dialog_remove_clicked (GtkWidget *widget, gpointer data);
 void gnc_commodities_dialog_close_clicked (GtkWidget *widget, gpointer data);
 void gnc_commodities_show_currencies_toggled (GtkToggleButton *toggle, CommoditiesDialog *cd);
+gboolean gnc_commodities_window_key_press_cb (GtkWidget *widget,
+                                              GdkEventKey *event,
+                                              gpointer data);
 
 
 void
@@ -79,12 +82,24 @@ gnc_commodities_window_destroy_cb (GtkWidget *object,   CommoditiesDialog *cd)
 
     if (cd->window)
     {
-        gtk_widget_destroy(cd->window);
+        gtk_widget_destroy (cd->window);
         cd->window = NULL;
     }
     g_free (cd);
 }
 
+static gboolean
+gnc_commodities_window_delete_event_cb (GtkWidget *widget,
+                                        GdkEvent  *event,
+                                        gpointer   data)
+{
+    CommoditiesDialog *cd = data;
+    // this cb allows the window size to be saved on closing with the X
+    gnc_save_window_size (GNC_PREFS_GROUP,
+                          GTK_WINDOW(cd->window));
+    return FALSE;
+}
+
 void
 gnc_commodities_dialog_edit_clicked (GtkWidget *widget, gpointer data)
 {
@@ -247,6 +262,7 @@ void
 gnc_commodities_dialog_close_clicked (GtkWidget *widget, gpointer data)
 {
     CommoditiesDialog *cd = data;
+
     gnc_close_gui_component_by_data (DIALOG_COMMODITIES_CM_CLASS, cd);
 }
 
@@ -361,6 +377,12 @@ gnc_commodities_dialog_create (GtkWidget * parent, CommoditiesDialog *cd)
     g_signal_connect (cd->window, "destroy",
                       G_CALLBACK(gnc_commodities_window_destroy_cb), cd);
 
+    g_signal_connect (cd->window, "delete-event",
+                      G_CALLBACK(gnc_commodities_window_delete_event_cb), cd);
+
+    g_signal_connect (cd->window, "key_press_event",
+                      G_CALLBACK (gnc_commodities_window_key_press_cb), cd);
+
     gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, cd);
     g_object_unref (G_OBJECT(builder));
 
@@ -401,6 +423,21 @@ show_handler (const char *klass, gint component_id,
     return(TRUE);
 }
 
+gboolean
+gnc_commodities_window_key_press_cb (GtkWidget *widget, GdkEventKey *event,
+                                     gpointer data)
+{
+    CommoditiesDialog *cd = data;
+
+    if (event->keyval == GDK_KEY_Escape)
+    {
+        close_handler (cd);
+        return TRUE;
+    }
+    else
+        return FALSE;
+}
+
 /********************************************************************\
  * gnc_commodities_dialog                                           *
  *   opens up a window to edit price information                    *
diff --git a/gnucash/gnome/dialog-doclink.c b/gnucash/gnome/dialog-doclink.c
index 50cfd62e7..f6525af0f 100644
--- a/gnucash/gnome/dialog-doclink.c
+++ b/gnucash/gnome/dialog-doclink.c
@@ -378,6 +378,22 @@ gnc_doclink_get_uri_dialog (GtkWindow *parent, const gchar *title,
 
 static void close_handler (gpointer user_data);
 
+static gboolean
+gnc_doclink_dialog_window_delete_event_cb (GtkWidget *widget,
+                                           GdkEvent  *event,
+                                           gpointer   user_data)
+{
+    DoclinkDialog *doclink_dialog = user_data;
+    // this cb allows the window size to be saved on closing with the X
+    if (doclink_dialog->is_list_trans)
+        gnc_save_window_size (GNC_PREFS_GROUP_TRANS,
+                              GTK_WINDOW(doclink_dialog->window));
+    else
+        gnc_save_window_size (GNC_PREFS_GROUP_BUS,
+                              GTK_WINDOW(doclink_dialog->window));
+    return FALSE;
+}
+
 static void
 gnc_doclink_dialog_window_destroy_cb (GtkWidget *object, gpointer user_data)
 {
@@ -976,6 +992,9 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
                       G_CALLBACK (gnc_doclink_dialog_window_destroy_cb),
                       doclink_dialog);
 
+    g_signal_connect (doclink_dialog->window, "delete-event",
+                      G_CALLBACK(gnc_doclink_dialog_window_delete_event_cb), doclink_dialog);
+
     g_signal_connect (doclink_dialog->window, "key_press_event",
                       G_CALLBACK (gnc_doclink_dialog_window_key_press_cb),
                       doclink_dialog);
@@ -996,8 +1015,6 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
         g_signal_connect (doclink_dialog->view, "row-activated",
                           G_CALLBACK (row_selected_trans_cb),
                           (gpointer)doclink_dialog);
-        gnc_restore_window_size (GNC_PREFS_GROUP_TRANS,
-                                 GTK_WINDOW (doclink_dialog->window), parent);
         get_trans_info (doclink_dialog);
     }
     else
@@ -1019,8 +1036,6 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
         g_signal_connect (doclink_dialog->view, "row-activated",
                           G_CALLBACK (row_selected_bus_cb),
                           (gpointer)doclink_dialog);
-        gnc_restore_window_size (GNC_PREFS_GROUP_BUS,
-                                 GTK_WINDOW (doclink_dialog->window), parent);
         get_bus_info (doclink_dialog);
     }
 
@@ -1029,8 +1044,6 @@ gnc_doclink_dialog_create (GtkWindow *parent, DoclinkDialog *doclink_dialog)
 
     g_object_unref (G_OBJECT(builder));
 
-    gtk_widget_show_all (GTK_WIDGET(window));
-
     gtk_tree_view_column_set_expand (expanding_column, TRUE);
     gtk_tree_view_columns_autosize (GTK_TREE_VIEW(doclink_dialog->view));
     LEAVE(" ");
@@ -1108,6 +1121,9 @@ gnc_doclink_business_dialog (GtkWindow *parent)
     gnc_gui_component_set_session (doclink_dialog->component_id,
                                    doclink_dialog->session);
 
+    gnc_restore_window_size (GNC_PREFS_GROUP_BUS,
+                             GTK_WINDOW(doclink_dialog->window), parent);
+    gtk_widget_show_all (GTK_WIDGET(doclink_dialog->window));
     LEAVE(" ");
 }
 
@@ -1136,5 +1152,8 @@ gnc_doclink_trans_dialog (GtkWindow *parent)
     gnc_gui_component_set_session (doclink_dialog->component_id,
                                    doclink_dialog->session);
 
+    gnc_restore_window_size (GNC_PREFS_GROUP_TRANS,
+                             GTK_WINDOW(doclink_dialog->window), parent);
+    gtk_widget_show_all (GTK_WIDGET(doclink_dialog->window));
     LEAVE(" ");
 }
diff --git a/gnucash/gnome/dialog-price-edit-db.c b/gnucash/gnome/dialog-price-edit-db.c
index 41f5740bc..341ba840d 100644
--- a/gnucash/gnome/dialog-price-edit-db.c
+++ b/gnucash/gnome/dialog-price-edit-db.c
@@ -59,13 +59,16 @@
 static QofLogModule log_module = GNC_MOD_GUI;
 
 
-void gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data);
+void gnc_prices_dialog_destroy_cb (GtkWidget *object, gpointer data);
 void gnc_prices_dialog_close_cb (GtkDialog *dialog, gpointer data);
 void gnc_prices_dialog_edit_clicked (GtkWidget *widget, gpointer data);
 void gnc_prices_dialog_remove_clicked (GtkWidget *widget, gpointer data);
 void gnc_prices_dialog_remove_old_clicked (GtkWidget *widget, gpointer data);
 void gnc_prices_dialog_add_clicked (GtkWidget *widget, gpointer data);
 void gnc_prices_dialog_get_quotes_clicked (GtkWidget *widget, gpointer data);
+static gboolean gnc_prices_dialog_key_press_cb (GtkWidget *widget,
+                                                GdkEventKey *event,
+                                                gpointer data);
 
 
 typedef struct
@@ -88,7 +91,7 @@ typedef struct
 
 
 void
-gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data)
+gnc_prices_dialog_destroy_cb (GtkWidget *object, gpointer data)
 {
     PricesDialog *pdb_dialog = data;
 
@@ -97,7 +100,7 @@ gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data)
 
     if (pdb_dialog->window)
     {
-        gtk_widget_destroy(pdb_dialog->window);
+        gtk_widget_destroy (pdb_dialog->window);
         pdb_dialog->window = NULL;
     }
 
@@ -106,6 +109,19 @@ gnc_prices_dialog_window_destroy_cb (GtkWidget *object, gpointer data)
 }
 
 
+static gboolean
+gnc_prices_dialog_delete_event_cb (GtkWidget *widget,
+                                   GdkEvent  *event,
+                                   gpointer   data)
+{
+    PricesDialog *pdb_dialog = data;
+    // this cb allows the window size to be saved on closing with the X
+    gnc_save_window_size (GNC_PREFS_GROUP,
+                          GTK_WINDOW(pdb_dialog->window));
+    return FALSE;
+}
+
+
 void
 gnc_prices_dialog_close_cb (GtkDialog *dialog, gpointer data)
 {
@@ -713,6 +729,12 @@ gnc_prices_dialog_create (GtkWidget * parent, PricesDialog *pdb_dialog)
     pdb_dialog->book = qof_session_get_book(pdb_dialog->session);
     pdb_dialog->price_db = gnc_pricedb_get_db(pdb_dialog->book);
 
+    g_signal_connect (pdb_dialog->window, "delete-event",
+                      G_CALLBACK(gnc_prices_dialog_delete_event_cb), pdb_dialog);
+
+    g_signal_connect (pdb_dialog->window, "key_press_event",
+                      G_CALLBACK (gnc_prices_dialog_key_press_cb), pdb_dialog);
+
     /* price tree */
     scrolled_window = GTK_WIDGET(gtk_builder_get_object (builder, "price_list_window"));
     view = gnc_tree_view_price_new(pdb_dialog->book,
@@ -761,7 +783,7 @@ gnc_prices_dialog_create (GtkWidget * parent, PricesDialog *pdb_dialog)
     }
 
     g_signal_connect (pdb_dialog->window, "destroy",
-                      G_CALLBACK(gnc_prices_dialog_window_destroy_cb), pdb_dialog);
+                      G_CALLBACK(gnc_prices_dialog_destroy_cb), pdb_dialog);
 
     gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, pdb_dialog);
     g_object_unref(G_OBJECT(builder));
@@ -811,6 +833,22 @@ show_handler (const char *klass, gint component_id,
 }
 
 
+gboolean
+gnc_prices_dialog_key_press_cb (GtkWidget *widget, GdkEventKey *event,
+                                gpointer data)
+{
+    PricesDialog *pdb_dialog = data;
+
+    if (event->keyval == GDK_KEY_Escape)
+    {
+        close_handler (pdb_dialog);
+        return TRUE;
+    }
+    else
+        return FALSE;
+}
+
+
 /********************************************************************\
  * gnc_prices_dialog                                                *
  *   opens up a window showing all price information                *



Summary of changes:
 gnucash/gnome-utils/dialog-tax-table.c         | 55 +++++++++++++++++++-------
 gnucash/gnome/dialog-billterms.c               | 40 ++++++++++++-------
 gnucash/gnome/dialog-commodities.c             | 39 +++++++++++++++++-
 gnucash/gnome/dialog-doclink.c                 | 31 ++++++++++++---
 gnucash/gnome/dialog-price-edit-db.c           | 46 +++++++++++++++++++--
 gnucash/ui/gnc-plugin-page-account-tree-ui.xml |  1 -
 6 files changed, 172 insertions(+), 40 deletions(-)



More information about the gnucash-changes mailing list