gnucash maint: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Sat Dec 7 08:29:51 EST 2019


Updated	 via  https://github.com/Gnucash/gnucash/commit/6266ca2f (commit)
	 via  https://github.com/Gnucash/gnucash/commit/17bbf870 (commit)
	from  https://github.com/Gnucash/gnucash/commit/b5f9cd0b (commit)



commit 6266ca2f12292836223a2cf74c9de7d97e8a258e
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Nov 29 19:48:39 2019 +0800

    g_free() output of get_negative_color
    
    because gdk_rgba_to_string() returns a newly-allocated string
    
    * get_negative_color is gchar* instead of const gchar*
    * move to dialog-utils.c
    * rename get_negative_color() to get_negative_color_str() in
    window-main-summarybar.c
    * add g_free to gnc_tree_model_account_dispose ()
    * modify code to g_free () after use

diff --git a/gnucash/gnome-utils/dialog-utils.c b/gnucash/gnome-utils/dialog-utils.c
index 3ff96017b..ca66223fe 100644
--- a/gnucash/gnome-utils/dialog-utils.c
+++ b/gnucash/gnome-utils/dialog-utils.c
@@ -894,3 +894,14 @@ gnc_cost_policy_select_new (void)
     return cost_policy_widget;
 }
 
+gchar*
+get_negative_color (void)
+{
+    GdkRGBA color;
+    GtkWidget *label = gtk_label_new ("Color");
+    GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET(label));
+    gtk_style_context_add_class (context, "negative-numbers");
+    gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, &color);
+
+    return gdk_rgba_to_string (&color);
+}
diff --git a/gnucash/gnome-utils/dialog-utils.h b/gnucash/gnome-utils/dialog-utils.h
index c30571d18..93857ef71 100644
--- a/gnucash/gnome-utils/dialog-utils.h
+++ b/gnucash/gnome-utils/dialog-utils.h
@@ -161,4 +161,6 @@ gboolean gnc_new_book_option_display (GtkWidget *parent);
 GtkWidget *
 gnc_cost_policy_select_new (void);
 
+gchar* get_negative_color (void);
+
 #endif /* DIALOG_UTILS_H */
diff --git a/gnucash/gnome-utils/gnc-tree-model-account.c b/gnucash/gnome-utils/gnc-tree-model-account.c
index 79de8f420..90e2dc983 100644
--- a/gnucash/gnome-utils/gnc-tree-model-account.c
+++ b/gnucash/gnome-utils/gnc-tree-model-account.c
@@ -32,6 +32,7 @@
 #include "gnc-tree-model-account.h"
 #include "gnc-component-manager.h"
 #include "Account.h"
+#include "dialog-utils.h"
 #include "gnc-accounting-period.h"
 #include "gnc-commodity.h"
 #include "gnc-prefs.h"
@@ -96,7 +97,7 @@ typedef struct GncTreeModelAccountPrivate
     QofBook *book;
     Account *root;
     gint event_handler_id;
-    const gchar *negative_color;
+    gchar *negative_color;
 
     GHashTable *account_values_hash;
 
@@ -109,17 +110,7 @@ typedef struct GncTreeModelAccountPrivate
 /************************************************************/
 /*           Account Tree Model - Misc Functions            */
 /************************************************************/
-static gchar*
-get_negative_color (void)
-{
-    GdkRGBA color;
-    GtkWidget *label = gtk_label_new ("Color");
-    GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET(label));
-    gtk_style_context_add_class (context, "negative-numbers");
-    gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, &color);
 
-    return gdk_rgba_to_string (&color);
-}
 
 /** Tell the GncTreeModelAccount code to update the color that it will
  *  use for negative numbers.  This function will iterate over all
@@ -144,7 +135,14 @@ gnc_tree_model_account_update_color (gpointer gsettings, gchar *key, gpointer us
                                                        g_free, g_free);
 
     use_red = gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_NEGATIVE_IN_RED);
-    priv->negative_color = use_red ? get_negative_color () : NULL;
+
+    if (priv->negative_color)
+        g_free (priv->negative_color);
+
+    if (use_red)
+        priv->negative_color = get_negative_color ();
+    else
+        priv->negative_color = NULL;
 }
 
 /************************************************************/
@@ -190,7 +188,14 @@ gnc_tree_model_account_init (GncTreeModelAccount *model)
     priv = GNC_TREE_MODEL_ACCOUNT_GET_PRIVATE(model);
     priv->book = NULL;
     priv->root = NULL;
-    priv->negative_color = red ? get_negative_color () : NULL;
+
+    if (priv->negative_color)
+        g_free (priv->negative_color);
+
+    if (red)
+        priv->negative_color = get_negative_color ();
+    else
+        priv->negative_color = NULL;
 
     // create the account values cache hash
     priv->account_values_hash = g_hash_table_new_full (g_str_hash, g_str_equal,
@@ -244,6 +249,9 @@ gnc_tree_model_account_dispose (GObject *object)
         priv->event_handler_id = 0;
     }
 
+    if (priv->negative_color)
+        g_free (priv->negative_color);
+
     // destroy the cached acount values
     g_hash_table_destroy (priv->account_values_hash);
 
diff --git a/gnucash/gnome-utils/window-main-summarybar.c b/gnucash/gnome-utils/window-main-summarybar.c
index 9262bded3..14b992835 100644
--- a/gnucash/gnome-utils/window-main-summarybar.c
+++ b/gnucash/gnome-utils/window-main-summarybar.c
@@ -443,7 +443,7 @@ gnc_main_window_summary_refresh (GNCMainSummary * summary)
 }
 
 static gchar*
-get_negative_color (void)
+get_negative_color_str (void)
 {
     GdkRGBA color;
     GdkRGBA *rgba;
@@ -467,7 +467,7 @@ summarybar_update_color (gpointer gsettings, gchar *key, gpointer user_data)
 {
     GNCMainSummary *summary = user_data;
 
-    summary->negative_color = get_negative_color();
+    summary->negative_color = get_negative_color_str();
     summary->show_negative_color = gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_NEGATIVE_IN_RED);
 
     gnc_main_window_summary_refresh (summary);
@@ -640,7 +640,7 @@ gnc_main_window_summary_new (void)
     retval->totals_combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (retval->datamodel));
     g_object_unref (retval->datamodel);
 
-    retval->negative_color = get_negative_color();
+    retval->negative_color = get_negative_color_str();
     retval->show_negative_color = gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_NEGATIVE_IN_RED);
     gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL, GNC_PREF_NEGATIVE_IN_RED,
                           summarybar_update_color, retval);
diff --git a/gnucash/gnome/gnc-budget-view.c b/gnucash/gnome/gnc-budget-view.c
index 02ace74b9..780a1f062 100644
--- a/gnucash/gnome/gnc-budget-view.c
+++ b/gnucash/gnome/gnc-budget-view.c
@@ -911,18 +911,6 @@ gbv_get_accumulated_budget_amount(GncBudget* budget, Account* account, guint per
     return info.total;
 }
 
-static gchar*
-get_negative_color (void)
-{
-    GdkRGBA color;
-    GtkWidget *label = gtk_label_new ("Color");
-    GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET(label));
-    gtk_style_context_add_class (context, "negative-numbers");
-    gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, &color);
-    gtk_widget_destroy(label);
-    
-    return gdk_rgba_to_string(&color);
-}
 
 /** \brief Calculates and displays budget amount for a period in a defined account.
 
@@ -991,11 +979,16 @@ budget_col_source(Account *account, GtkTreeViewColumn *col,
 
             xaccSPrintAmount(amtbuff, numeric,
                              gnc_account_print_info(account, FALSE));
-            g_object_set(cell, "foreground",
-                         red && gnc_numeric_negative_p(numeric)
-                             ? get_negative_color()
-                             : NULL,
-                         NULL);
+
+            if (red && gnc_numeric_negative_p(numeric))
+            {
+                gchar *color = get_negative_color ();
+                g_object_set(cell, "foreground", color, NULL);
+                g_free (color);
+            }
+            else
+                g_object_set(cell, "foreground", NULL, NULL);
+
         }
     }
     return g_strdup(amtbuff);
@@ -1078,8 +1071,16 @@ budget_total_col_source(Account *account, GtkTreeViewColumn *col,
     total = bgv_get_total_for_account(account, budget, NULL);
     xaccSPrintAmount(amtbuff, total,
                      gnc_account_print_info(account, TRUE));
-    g_object_set(cell, "foreground",
-                 red && gnc_numeric_negative_p(total) ? get_negative_color () : NULL, NULL);
+
+    if (red && gnc_numeric_negative_p(total))
+    {
+        gchar *color = get_negative_color ();
+        g_object_set(cell, "foreground", color, NULL);
+        g_free (color);
+    }
+    else
+        g_object_set(cell, "foreground", NULL, NULL);
+
     return g_strdup(amtbuff);
 }
 
@@ -1218,8 +1219,14 @@ totals_col_source(GtkTreeViewColumn *col, GtkCellRenderer *cell,
     xaccSPrintAmount(amtbuff, total,
                      gnc_commodity_print_info(total_currency,
                                               period_num < 0 ? TRUE : FALSE));
-    g_object_set(cell, "foreground",
-                 red && gnc_numeric_negative_p(total) ? get_negative_color () : NULL, NULL);
+    if (red && gnc_numeric_negative_p(total))
+    {
+        gchar *color = get_negative_color ();
+        g_object_set(cell, "foreground", color, NULL);
+        g_free (color);
+    }
+    else
+        g_object_set(cell, "foreground", NULL, NULL);
 
     g_object_set(G_OBJECT(cell), "text", amtbuff, "xalign", 1.0, NULL);
 }

commit 17bbf870e5bdacf96114a8ef2aa5a763bc880877
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Fri Nov 29 21:50:47 2019 +0800

    Bug 797401 - Invoice Reports need an overall page width set
    
    Use html5 @media to set main-table to page width.

diff --git a/gnucash/report/business-reports/invoice.scm b/gnucash/report/business-reports/invoice.scm
index 84bf7eedb..a56dcdec4 100644
--- a/gnucash/report/business-reports/invoice.scm
+++ b/gnucash/report/business-reports/invoice.scm
@@ -43,6 +43,7 @@
 .company-table > table * { padding: 0px; }
 .client-table > table * { padding: 0px; }
 .invoice-details-table > table * { padding: 0px; }
+ at media print { .main-table > table { width: 100%; }}
 ")
 
 (define (date-col columns-used)



Summary of changes:
 gnucash/gnome-utils/dialog-utils.c           | 11 +++++++
 gnucash/gnome-utils/dialog-utils.h           |  2 ++
 gnucash/gnome-utils/gnc-tree-model-account.c | 34 +++++++++++--------
 gnucash/gnome-utils/window-main-summarybar.c |  6 ++--
 gnucash/gnome/gnc-budget-view.c              | 49 ++++++++++++++++------------
 gnucash/report/business-reports/invoice.scm  |  1 +
 6 files changed, 66 insertions(+), 37 deletions(-)



More information about the gnucash-changes mailing list