gnucash maint: Multiple changes pushed

Robert Fewell bobit at code.gnucash.org
Thu Oct 8 11:04:44 EDT 2020


Updated	 via  https://github.com/Gnucash/gnucash/commit/f9e1f275 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/42094d3c (commit)
	from  https://github.com/Gnucash/gnucash/commit/af9f7c85 (commit)



commit f9e1f275d206de25357237b90e17eba15e960e46
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Thu Oct 8 16:02:15 2020 +0100

    Change source files dialog-report-style-sheet.* for spaces and tabs

diff --git a/gnucash/gnome/dialog-report-style-sheet.c b/gnucash/gnome/dialog-report-style-sheet.c
index cb51107bc..52de56c76 100644
--- a/gnucash/gnome/dialog-report-style-sheet.c
+++ b/gnucash/gnome/dialog-report-style-sheet.c
@@ -1,6 +1,6 @@
 /********************************************************************
  * dialog-report-style-sheet.c -- window for configuring HTML style *
- *                         sheets in GnuCash                        *
+ *                                sheets in GnuCash                 *
  * Copyright (C) 2000 Bill Gribble <grib at billgribble.com>           *
  * Copyright (c) 2006 David Hampton <hampton at employees.org>         *
  *                                                                  *
@@ -44,20 +44,20 @@ StyleSheetDialog * gnc_style_sheet_dialog = NULL;
 
 struct _stylesheetdialog
 {
-    GtkWidget  * toplevel;
+    GtkWidget     * toplevel;
     GtkTreeView   * list_view;
     GtkListStore  * list_store;
-    GtkWidget  * options_frame;
-    gint         component_id;
-    QofSession  *session;
+    GtkWidget     * options_frame;
+    gint            component_id;
+    QofSession    * session;
 };
 
 typedef struct ss_info
 {
-    GNCOptionWin  * odialog;
-    GNCOptionDB   * odb;
-    SCM           stylesheet;
-    GtkTreeRowReference *row_ref;
+    GNCOptionWin        * odialog;
+    GNCOptionDB         * odb;
+    SCM                   stylesheet;
+    GtkTreeRowReference * row_ref;
 } ss_info;
 
 enum
@@ -79,62 +79,60 @@ void gnc_style_sheet_select_dialog_destroy_cb (GtkWidget *widget, gpointer user_
  ************************************************************/
 
 static void
-dirty_same_stylesheet(gpointer key, gpointer val, gpointer data)
+dirty_same_stylesheet (gpointer key, gpointer val, gpointer data)
 {
     SCM dirty_ss = data;
     SCM rep_ss = NULL;
     SCM report = val;
     SCM func = NULL;
 
-    func = scm_c_eval_string("gnc:report-stylesheet");
-    if (scm_is_procedure(func))
-        rep_ss = scm_call_1(func, report);
+    func = scm_c_eval_string ("gnc:report-stylesheet");
+    if (scm_is_procedure (func))
+        rep_ss = scm_call_1 (func, report);
     else
         return;
 
-    if (scm_is_true(scm_eq_p(rep_ss, dirty_ss)))
+    if (scm_is_true (scm_eq_p (rep_ss, dirty_ss)))
     {
-        func = scm_c_eval_string("gnc:report-set-dirty?!");
+        func = scm_c_eval_string ("gnc:report-set-dirty?!");
         /* This makes _me_ feel dirty! */
-        if (scm_is_procedure(func))
-            scm_call_2(func, report, SCM_BOOL_T);
+        if (scm_is_procedure (func))
+            scm_call_2 (func, report, SCM_BOOL_T);
     }
 }
 
 static void
-gnc_style_sheet_options_apply_cb(GNCOptionWin * propertybox,
-                                 gpointer user_data)
+gnc_style_sheet_options_apply_cb (GNCOptionWin * propertybox,
+                                  gpointer user_data)
 {
     ss_info * ssi = (ss_info *)user_data;
     GHashTable *reports = NULL;
     GList *results = NULL, *iter;
 
     /* FIXME: shouldn't be global */
-    reports = gnc_reports_get_global();
+    reports = gnc_reports_get_global ();
     if (reports)
-        g_hash_table_foreach(reports, dirty_same_stylesheet, ssi->stylesheet);
+        g_hash_table_foreach (reports, dirty_same_stylesheet, ssi->stylesheet);
 
     results = gnc_option_db_commit (ssi->odb);
     for (iter = results; iter; iter = iter->next)
     {
-        GtkWidget *dialog = gtk_message_dialog_new(NULL,
-                                                   0,
-                                                   GTK_MESSAGE_ERROR,
-                                                   GTK_BUTTONS_OK,
-                                                   "%s",
-                                                   (char*)iter->data);
-        gtk_dialog_run(GTK_DIALOG(dialog));
-        gtk_widget_destroy(dialog);
+        GtkWidget *dialog = gtk_message_dialog_new (NULL,
+                                                    0,
+                                                    GTK_MESSAGE_ERROR,
+                                                    GTK_BUTTONS_OK,
+                                                    "%s",
+                                                    (char*)iter->data);
+        gtk_dialog_run (GTK_DIALOG(dialog));
+        gtk_widget_destroy (dialog);
         g_free (iter->data);
     }
     g_list_free (results);
-
 }
 
-
 static void
-gnc_style_sheet_options_close_cb(GNCOptionWin * propertybox,
-                                 gpointer user_data)
+gnc_style_sheet_options_close_cb (GNCOptionWin * propertybox,
+                                  gpointer user_data)
 {
     ss_info * ssi = user_data;
     GtkTreeIter iter;
@@ -147,77 +145,74 @@ gnc_style_sheet_options_close_cb(GNCOptionWin * propertybox,
             gtk_list_store_set (ss->list_store, &iter,
                                 COLUMN_DIALOG, NULL,
                                 -1);
-        gtk_tree_path_free(path);
+        gtk_tree_path_free (path);
     }
     gtk_tree_row_reference_free (ssi->row_ref);
-    gnc_options_dialog_destroy(ssi->odialog);
-    gnc_option_db_destroy(ssi->odb);
-    scm_gc_unprotect_object(ssi->stylesheet);
-    g_free(ssi);
+    gnc_options_dialog_destroy (ssi->odialog);
+    gnc_option_db_destroy (ssi->odb);
+    scm_gc_unprotect_object (ssi->stylesheet);
+    g_free (ssi);
 }
 
-
 static ss_info *
-gnc_style_sheet_dialog_create(StyleSheetDialog * ss,
-                              gchar *name,
-                              SCM sheet_info,
-                              GtkTreeRowReference *row_ref)
+gnc_style_sheet_dialog_create (StyleSheetDialog * ss,
+                               gchar *name,
+                               SCM sheet_info,
+                               GtkTreeRowReference *row_ref)
 {
-    SCM get_options = scm_c_eval_string("gnc:html-style-sheet-options");
+    SCM get_options = scm_c_eval_string ("gnc:html-style-sheet-options");
 
-    SCM            scm_options = scm_call_1(get_options, sheet_info);
-    ss_info        * ssinfo = g_new0(ss_info, 1);
+    SCM            scm_options = scm_call_1 (get_options, sheet_info);
+    ss_info        * ssinfo = g_new0 (ss_info, 1);
     GtkWidget      * window;
     gchar          * title;
-    GtkWindow      * parent = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (ss->list_view)));
+    GtkWindow      * parent = GTK_WINDOW(gtk_widget_get_toplevel (GTK_WIDGET(ss->list_view)));
 
-    title = g_strdup_printf(_("HTML Style Sheet Properties: %s"), name);
-    ssinfo->odialog = gnc_options_dialog_new(title, parent);
-    ssinfo->odb     = gnc_option_db_new(scm_options);
+    title = g_strdup_printf (_("HTML Style Sheet Properties: %s"), name);
+    ssinfo->odialog = gnc_options_dialog_new (title, parent);
+    ssinfo->odb     = gnc_option_db_new (scm_options);
     ssinfo->stylesheet = sheet_info;
     ssinfo->row_ref    = row_ref;
-    g_free(title);
-
-    scm_gc_protect_object(ssinfo->stylesheet);
-    g_object_ref(gnc_options_dialog_widget(ssinfo->odialog));
-
-    gnc_options_dialog_build_contents(ssinfo->odialog,
-                                      ssinfo->odb);
-    gnc_options_dialog_set_apply_cb(ssinfo->odialog,
-                                    gnc_style_sheet_options_apply_cb,
-                                    ssinfo);
-    gnc_options_dialog_set_close_cb(ssinfo->odialog,
-                                    gnc_style_sheet_options_close_cb,
-                                    ssinfo);
-    window = gnc_options_dialog_widget(ssinfo->odialog);
-    gtk_window_set_transient_for(GTK_WINDOW(window),
-                                 GTK_WINDOW(gnc_style_sheet_dialog->toplevel));
-    gtk_window_set_destroy_with_parent(GTK_WINDOW(window), TRUE);
-    gtk_window_present(GTK_WINDOW(window));
-
-    return(ssinfo);
+    g_free (title);
+
+    scm_gc_protect_object (ssinfo->stylesheet);
+    g_object_ref (gnc_options_dialog_widget (ssinfo->odialog));
+
+    gnc_options_dialog_build_contents (ssinfo->odialog,
+                                       ssinfo->odb);
+    gnc_options_dialog_set_apply_cb (ssinfo->odialog,
+                                     gnc_style_sheet_options_apply_cb,
+                                     ssinfo);
+    gnc_options_dialog_set_close_cb (ssinfo->odialog,
+                                     gnc_style_sheet_options_close_cb,
+                                     ssinfo);
+    window = gnc_options_dialog_widget (ssinfo->odialog);
+    gtk_window_set_transient_for (GTK_WINDOW(window),
+                                  GTK_WINDOW(gnc_style_sheet_dialog->toplevel));
+    gtk_window_set_destroy_with_parent (GTK_WINDOW(window), TRUE);
+    gtk_window_present (GTK_WINDOW(window));
+    return (ssinfo);
 }
 
-
 static SCM
 gnc_style_sheet_new (StyleSheetDialog * ssd)
 {
-    SCM              make_ss   = scm_c_eval_string("gnc:make-html-style-sheet");
-    SCM              templates = scm_c_eval_string("(gnc:get-html-templates)");
-    SCM              t_name = scm_c_eval_string("gnc:html-style-sheet-template-name");
-    SCM              new_ss = SCM_BOOL_F;
-    GtkWidget        * template_combo;
-    GtkTreeModel     * template_model;
-    GtkTreeIter      iter;
-    GtkWidget        * name_entry;
-    gint             dialog_retval;
-    GList *template_names = NULL;
+    SCM            make_ss   = scm_c_eval_string ("gnc:make-html-style-sheet");
+    SCM            templates = scm_c_eval_string ("(gnc:get-html-templates)");
+    SCM            t_name    = scm_c_eval_string ("gnc:html-style-sheet-template-name");
+    SCM            new_ss    = SCM_BOOL_F;
+    GtkWidget    * template_combo;
+    GtkTreeModel * template_model;
+    GtkTreeIter    iter;
+    GtkWidget    * name_entry;
+    gint           dialog_retval;
+    GList        * template_names = NULL;
 
     /* get the new name for the style sheet */
-    GtkBuilder *builder;
-    GtkWidget *dlg;
+    GtkBuilder   * builder;
+    GtkWidget    * dlg;
 
-    builder = gtk_builder_new();
+    builder = gtk_builder_new ();
     gnc_builder_add_from_file (builder, "dialog-report.glade", "template_liststore");
     gnc_builder_add_from_file (builder, "dialog-report.glade", "new_style_sheet_dialog");
 
@@ -229,75 +224,73 @@ gnc_style_sheet_new (StyleSheetDialog * ssd)
     gtk_widget_set_name (GTK_WIDGET(dlg), "gnc-id-style-sheet-new");
     gnc_widget_style_context_add_class (GTK_WIDGET(dlg), "gnc-class-style-sheets");
 
-    g_assert(ssd);
+    g_assert (ssd);
 
     /* Erase the initial dummy entry. */
-    template_model = gtk_combo_box_get_model(GTK_COMBO_BOX(template_combo));
-    gtk_list_store_clear(GTK_LIST_STORE(template_model));
+    template_model = gtk_combo_box_get_model (GTK_COMBO_BOX(template_combo));
+    gtk_list_store_clear (GTK_LIST_STORE(template_model));
 
     /* put in the list of style sheet type names */
-    for (; !scm_is_null(templates); templates = SCM_CDR(templates))
+    for (; !scm_is_null (templates); templates = SCM_CDR(templates))
     {
         gchar* orig_name;
 
         SCM t = SCM_CAR(templates);
-        orig_name = gnc_scm_call_1_to_string(t_name, t);
+        orig_name = gnc_scm_call_1_to_string (t_name, t);
 
         /* Store the untranslated names for lookup later */
         template_names = g_list_prepend (template_names, (gpointer)orig_name);
 
         /* The displayed name should be translated */
-        gtk_list_store_append(GTK_LIST_STORE(template_model), &iter);
+        gtk_list_store_append (GTK_LIST_STORE(template_model), &iter);
         gtk_list_store_set (GTK_LIST_STORE(template_model), &iter, 0, _(orig_name), -1);
 
         /* Note: don't g_free orig_name here - template_names still refers to it*/
     }
-    gtk_combo_box_set_active(GTK_COMBO_BOX(template_combo), 0);
+    gtk_combo_box_set_active (GTK_COMBO_BOX(template_combo), 0);
 
     /* get the name */
     gtk_window_set_transient_for (GTK_WINDOW(dlg), GTK_WINDOW(ssd->toplevel));
-    dialog_retval = gtk_dialog_run(GTK_DIALOG(dlg));
+    dialog_retval = gtk_dialog_run (GTK_DIALOG(dlg));
 
     if (dialog_retval == GTK_RESPONSE_OK)
     {
         gint choice = gtk_combo_box_get_active (GTK_COMBO_BOX(template_combo));
         const char *template_str = g_list_nth_data (template_names, choice);
-        const char *name_str     = gtk_entry_get_text(GTK_ENTRY(name_entry));
-        if (name_str && strlen(name_str) == 0)
+        const char *name_str     = gtk_entry_get_text (GTK_ENTRY(name_entry));
+        if (name_str && strlen (name_str) == 0)
         {
             /* If the name is empty, we display an error dialog but
              * refuse to create the new style sheet. */
-            gnc_error_dialog (GTK_WINDOW (ssd->toplevel), "%s", _("You must provide a name for the new style sheet."));
+            gnc_error_dialog (GTK_WINDOW(ssd->toplevel), "%s", _("You must provide a name for the new style sheet."));
             name_str = NULL;
         }
         if (template_str && name_str)
         {
-            new_ss = scm_call_2(make_ss,
-                                scm_from_utf8_string(template_str),
-                                scm_from_utf8_string(name_str));
+            new_ss = scm_call_2 (make_ss,
+                                 scm_from_utf8_string (template_str),
+                                 scm_from_utf8_string (name_str));
         }
     }
 
     g_list_free_full (template_names, g_free);
 
-    g_object_unref(G_OBJECT(builder));
+    g_object_unref (G_OBJECT(builder));
 
-    gtk_widget_destroy(dlg);
-    return(new_ss);
+    gtk_widget_destroy (dlg);
+    return (new_ss);
 }
 
-
 /************************************************************
  *               Style Sheet Selection Dialog               *
  ************************************************************/
 static void
-gnc_style_sheet_select_dialog_add_one(StyleSheetDialog * ss,
-                                      SCM sheet_info,
-                                      gboolean select)
+gnc_style_sheet_select_dialog_add_one (StyleSheetDialog * ss,
+                                       SCM sheet_info,
+                                       gboolean select)
 {
     SCM get_name;
     gchar *c_name;
-    GtkTreeSelection *selection;
     GtkTreeIter iter;
 
     get_name = scm_c_eval_string ("gnc:html-style-sheet-name");
@@ -319,22 +312,22 @@ gnc_style_sheet_select_dialog_add_one(StyleSheetDialog * ss,
 
     if (select)
     {
-        selection = gtk_tree_view_get_selection (ss->list_view);
+        GtkTreeSelection * selection = gtk_tree_view_get_selection (ss->list_view);
         gtk_tree_selection_select_iter (selection, &iter);
     }
 }
 
 static void
-gnc_style_sheet_select_dialog_fill(StyleSheetDialog * ss)
+gnc_style_sheet_select_dialog_fill (StyleSheetDialog * ss)
 {
-    SCM stylesheets = scm_c_eval_string("(gnc:get-html-style-sheets)");
+    SCM stylesheets = scm_c_eval_string ("(gnc:get-html-style-sheets)");
     SCM sheet_info;
 
     /* pack it full of content */
-    for (; !scm_is_null(stylesheets); stylesheets = SCM_CDR(stylesheets))
+    for (; !scm_is_null (stylesheets); stylesheets = SCM_CDR(stylesheets))
     {
         sheet_info = SCM_CAR(stylesheets);
-        gnc_style_sheet_select_dialog_add_one(ss, sheet_info, FALSE);
+        gnc_style_sheet_select_dialog_add_one (ss, sheet_info, FALSE);
     }
 }
 
@@ -345,8 +338,8 @@ gnc_style_sheet_select_dialog_event_cb (GtkWidget *widget,
 {
     StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
 
-    g_return_if_fail(event != NULL);
-    g_return_if_fail(ss != NULL);
+    g_return_if_fail (event != NULL);
+    g_return_if_fail (ss != NULL);
 
     if (event->type != GDK_2BUTTON_PRESS)
         return;
@@ -355,7 +348,6 @@ gnc_style_sheet_select_dialog_event_cb (GtkWidget *widget,
     gnc_style_sheet_select_dialog_edit_cb (NULL, ss);
 }
 
-
 void
 gnc_style_sheet_select_dialog_new_cb (GtkWidget *widget, gpointer user_data)
 {
@@ -372,16 +364,14 @@ gnc_style_sheet_select_dialog_new_cb (GtkWidget *widget, gpointer user_data)
     gnc_style_sheet_select_dialog_edit_cb (NULL, ss);
 }
 
-
 void
 gnc_style_sheet_select_dialog_edit_cb (GtkWidget *widget, gpointer user_data)
 {
     StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
-    GtkTreeSelection  * selection;
+    GtkTreeSelection  * selection = gtk_tree_view_get_selection (ss->list_view);
     GtkTreeModel      * model;
     GtkTreeIter         iter;
 
-    selection = gtk_tree_view_get_selection (ss->list_view);
     if (gtk_tree_selection_get_selected (selection, &model, &iter))
     {
         GtkTreeRowReference * row_ref;
@@ -411,11 +401,10 @@ void
 gnc_style_sheet_select_dialog_delete_cb (GtkWidget *widget, gpointer user_data)
 {
     StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
-    GtkTreeSelection  * selection;
+    GtkTreeSelection  * selection = gtk_tree_view_get_selection (ss->list_view);
     GtkTreeModel      * model;
     GtkTreeIter         iter;
 
-    selection = gtk_tree_view_get_selection (ss->list_view);
     if (gtk_tree_selection_get_selected (selection, &model, &iter))
     {
         ss_info           * ssinfo;
@@ -437,7 +426,6 @@ gnc_style_sheet_select_dialog_delete_cb (GtkWidget *widget, gpointer user_data)
     }
 }
 
-
 void
 gnc_style_sheet_select_dialog_close_cb (GtkWidget *widget, gpointer user_data)
 {
@@ -475,7 +463,6 @@ gnc_style_sheet_select_dialog_destroy_cb (GtkWidget *widget, gpointer user_data)
     g_free (ss);
 }
 
-
 static void
 gnc_style_sheet_window_close_handler (gpointer user_data)
 {
@@ -486,7 +473,6 @@ gnc_style_sheet_window_close_handler (gpointer user_data)
     gtk_widget_destroy (ss->toplevel);
 }
 
-
 static gboolean
 gnc_style_sheet_select_dialog_check_escape_cb (GtkWidget *widget,
                                                GdkEventKey *event,
@@ -501,16 +487,15 @@ gnc_style_sheet_select_dialog_check_escape_cb (GtkWidget *widget,
     return FALSE;
 }
 
-
 static StyleSheetDialog *
-gnc_style_sheet_select_dialog_create(GtkWindow *parent)
+gnc_style_sheet_select_dialog_create (GtkWindow *parent)
 {
-    StyleSheetDialog  * ss = g_new0(StyleSheetDialog, 1);
+    StyleSheetDialog  * ss = g_new0 (StyleSheetDialog, 1);
     GtkBuilder        * builder;
     GtkCellRenderer   * renderer;
     GtkTreeSelection  * selection;
 
-    builder = gtk_builder_new();
+    builder = gtk_builder_new ();
     gnc_builder_add_from_file (builder, "dialog-report.glade", "select_style_sheet_window");
 
     ss->toplevel = GTK_WIDGET(gtk_builder_get_object (builder, "select_style_sheet_window"));
@@ -523,19 +508,20 @@ gnc_style_sheet_select_dialog_create(GtkWindow *parent)
 
     ss->list_view  = GTK_TREE_VIEW(gtk_builder_get_object (builder, "style_sheet_list_view"));
     ss->list_store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_POINTER);
-    gtk_tree_view_set_model(ss->list_view, GTK_TREE_MODEL(ss->list_store));
-    g_object_unref(ss->list_store);
+    gtk_tree_view_set_model (ss->list_view, GTK_TREE_MODEL(ss->list_store));
+    g_object_unref (ss->list_store);
+
     renderer = gtk_cell_renderer_text_new ();
-    gtk_tree_view_insert_column_with_attributes(ss->list_view, -1,
-            _("Style Sheet Name"), renderer,
-            "text", COLUMN_NAME,
-            NULL);
+    gtk_tree_view_insert_column_with_attributes (ss->list_view, -1,
+                                                 _("Style Sheet Name"), renderer,
+                                                 "text", COLUMN_NAME,
+                                                 NULL);
 
     selection = gtk_tree_view_get_selection (ss->list_view);
     gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
 
-    g_signal_connect(ss->list_view, "event-after",
-                     G_CALLBACK(gnc_style_sheet_select_dialog_event_cb), ss);
+    g_signal_connect (ss->list_view, "event-after",
+                      G_CALLBACK(gnc_style_sheet_select_dialog_event_cb), ss);
 
     g_signal_connect (ss->toplevel, "destroy",
                       G_CALLBACK(gnc_style_sheet_select_dialog_destroy_cb), ss);
@@ -546,22 +532,18 @@ gnc_style_sheet_select_dialog_create(GtkWindow *parent)
     g_signal_connect (ss->toplevel, "key-press-event",
                       G_CALLBACK(gnc_style_sheet_select_dialog_check_escape_cb), ss);
 
-    gnc_style_sheet_select_dialog_fill(ss);
+    gnc_style_sheet_select_dialog_fill (ss);
 
     gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, ss);
-    g_object_unref(G_OBJECT(builder));
-
+    g_object_unref (G_OBJECT(builder));
     return ss;
 }
 
-
 void
-gnc_style_sheet_dialog_open(GtkWindow *parent)
+gnc_style_sheet_dialog_open (GtkWindow *parent)
 {
     if (gnc_style_sheet_dialog)
-    {
-        gtk_window_present(GTK_WINDOW(gnc_style_sheet_dialog->toplevel));
-    }
+        gtk_window_present (GTK_WINDOW(gnc_style_sheet_dialog->toplevel));
     else
     {
         gnc_style_sheet_dialog =
@@ -583,4 +565,3 @@ gnc_style_sheet_dialog_open(GtkWindow *parent)
         gtk_widget_show_all (gnc_style_sheet_dialog->toplevel);
     }
 }
-
diff --git a/gnucash/gnome/dialog-report-style-sheet.h b/gnucash/gnome/dialog-report-style-sheet.h
index 42f0c773e..fc1905c57 100644
--- a/gnucash/gnome/dialog-report-style-sheet.h
+++ b/gnucash/gnome/dialog-report-style-sheet.h
@@ -1,6 +1,6 @@
 /********************************************************************
  * dialog-report-style-sheet.h -- window for configuring HTML style *
- *                       sheets in GnuCash                          *
+ *                                sheets in GnuCash                 *
  * Copyright (C) 2000 Bill Gribble <grib at billgribble.com>           *
  *                                                                  *
  * This program is free software; you can redistribute it and/or    *
@@ -26,6 +26,6 @@
 
 typedef struct _stylesheetdialog StyleSheetDialog;
 
-void gnc_style_sheet_dialog_open(GtkWindow *parent);
+void gnc_style_sheet_dialog_open (GtkWindow *parent);
 
 #endif

commit 42094d3cc6b4852bd03f16aeda66933e6059f774
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Thu Oct 8 15:23:21 2020 +0100

    Bug 797956 - Dialog Report Style sheet not work well on Windows
    
    When used on Windows, pressing the edit button would result in the
    style sheet editor behind the selection dialog. To fix this change the
    selection dialog to use a GtkWindow. This also helps when restoring
    Gnucash from being minimised or covered by another application.

diff --git a/gnucash/gnome/dialog-report-style-sheet.c b/gnucash/gnome/dialog-report-style-sheet.c
index 35bcbd57e..cb51107bc 100644
--- a/gnucash/gnome/dialog-report-style-sheet.c
+++ b/gnucash/gnome/dialog-report-style-sheet.c
@@ -30,11 +30,16 @@
 #include "dialog-report-style-sheet.h"
 #include "dialog-options.h"
 #include "dialog-utils.h"
+#include "gnc-component-manager.h"
+#include "gnc-session.h"
 #include "gnc-gtk-utils.h"
 #include "gnc-guile-utils.h"
 #include "gnc-report.h"
 #include "gnc-ui.h"
 
+#define DIALOG_STYLE_SHEETS_CM_CLASS "style-sheets-dialog"
+#define GNC_PREFS_GROUP              "dialogs.style-sheet"
+
 StyleSheetDialog * gnc_style_sheet_dialog = NULL;
 
 struct _stylesheetdialog
@@ -43,6 +48,8 @@ struct _stylesheetdialog
     GtkTreeView   * list_view;
     GtkListStore  * list_store;
     GtkWidget  * options_frame;
+    gint         component_id;
+    QofSession  *session;
 };
 
 typedef struct ss_info
@@ -61,6 +68,11 @@ enum
     N_COLUMNS
 };
 
+void gnc_style_sheet_select_dialog_new_cb (GtkWidget *widget, gpointer user_data);
+void gnc_style_sheet_select_dialog_edit_cb (GtkWidget *widget, gpointer user_data);
+void gnc_style_sheet_select_dialog_delete_cb (GtkWidget *widget, gpointer user_data);
+void gnc_style_sheet_select_dialog_close_cb (GtkWidget *widget, gpointer user_data);
+void gnc_style_sheet_select_dialog_destroy_cb (GtkWidget *widget, gpointer user_data);
 
 /************************************************************
  *     Style Sheet Edit Dialog (I.E. an options dialog)     *
@@ -327,93 +339,166 @@ gnc_style_sheet_select_dialog_fill(StyleSheetDialog * ss)
 }
 
 static void
-gnc_style_sheet_select_dialog_response_cb (GtkDialog *unused,
-        gint response,
-        gpointer user_data)
+gnc_style_sheet_select_dialog_event_cb (GtkWidget *widget,
+                                        GdkEvent *event,
+                                        gpointer user_data)
+{
+    StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
+
+    g_return_if_fail(event != NULL);
+    g_return_if_fail(ss != NULL);
+
+    if (event->type != GDK_2BUTTON_PRESS)
+        return;
+
+    /* Synthesize a click of the edit button */
+    gnc_style_sheet_select_dialog_edit_cb (NULL, ss);
+}
+
+
+void
+gnc_style_sheet_select_dialog_new_cb (GtkWidget *widget, gpointer user_data)
+{
+    StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
+    SCM                 sheet_info;
+
+    sheet_info = gnc_style_sheet_new (ss);
+    if (sheet_info == SCM_BOOL_F)
+        return;
+
+    gnc_style_sheet_select_dialog_add_one (ss, sheet_info, TRUE);
+
+    // now start the edit dialog
+    gnc_style_sheet_select_dialog_edit_cb (NULL, ss);
+}
+
+
+void
+gnc_style_sheet_select_dialog_edit_cb (GtkWidget *widget, gpointer user_data)
 {
-    StyleSheetDialog  * ss;
+    StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
     GtkTreeSelection  * selection;
-    GtkTreeRowReference * row_ref;
     GtkTreeModel      * model;
-    GtkTreePath       * path;
     GtkTreeIter         iter;
-    ss_info           * ssinfo;
-    SCM                 remover;
-    SCM sheet_info;
-    gchar *name;
 
-    ss = (StyleSheetDialog *)user_data;
-    switch (response)
+    selection = gtk_tree_view_get_selection (ss->list_view);
+    if (gtk_tree_selection_get_selected (selection, &model, &iter))
     {
-    case GNC_RESPONSE_NEW:
-        sheet_info = gnc_style_sheet_new(ss);
-        if (sheet_info == SCM_BOOL_F)
-            break;
-        gnc_style_sheet_select_dialog_add_one(ss, sheet_info, TRUE);
-        /* Fall through */
-
-    case GNC_RESPONSE_EDIT:
-        selection = gtk_tree_view_get_selection (ss->list_view);
-        if (gtk_tree_selection_get_selected (selection, &model, &iter))
-        {
-            gtk_tree_model_get (model, &iter,
-                                COLUMN_NAME, &name,
-                                COLUMN_STYLESHEET, &sheet_info,
-                                -1);
-            /* Fire off options dialog here */
-            path = gtk_tree_model_get_path (GTK_TREE_MODEL(ss->list_store), &iter);
-            row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL(ss->list_store), path);
-            ssinfo = gnc_style_sheet_dialog_create(ss, name, sheet_info, row_ref);
-            gtk_list_store_set (ss->list_store, &iter,
-                                COLUMN_DIALOG, ssinfo,
-                                -1);
-            g_free(name);
-        }
-        break;
+        GtkTreeRowReference * row_ref;
+        GtkTreePath         * path;
+        ss_info             * ssinfo;
+        gchar               * name;
+
+        SCM                 sheet_info = NULL;
+
+        gtk_tree_model_get (model, &iter,
+                            COLUMN_NAME, &name,
+                            COLUMN_STYLESHEET, &sheet_info,
+                            -1);
+        /* Fire off options dialog here */
+        path = gtk_tree_model_get_path (GTK_TREE_MODEL(ss->list_store), &iter);
+        row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL(ss->list_store), path);
+        ssinfo = gnc_style_sheet_dialog_create (ss, name, sheet_info, row_ref);
+        gtk_list_store_set (ss->list_store, &iter,
+                            COLUMN_DIALOG, ssinfo,
+                            -1);
+        gtk_tree_path_free (path);
+        g_free (name);
+    }
+}
 
-    case GNC_RESPONSE_DELETE:
-        selection = gtk_tree_view_get_selection (ss->list_view);
-        if (gtk_tree_selection_get_selected (selection, &model, &iter))
-        {
-            gtk_tree_model_get (model, &iter,
-                                COLUMN_STYLESHEET, &sheet_info,
-                                COLUMN_DIALOG, &ssinfo,
-                                -1);
-            gtk_list_store_remove (ss->list_store, &iter);
+void
+gnc_style_sheet_select_dialog_delete_cb (GtkWidget *widget, gpointer user_data)
+{
+    StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
+    GtkTreeSelection  * selection;
+    GtkTreeModel      * model;
+    GtkTreeIter         iter;
 
-            if (ssinfo)
-                gnc_style_sheet_options_close_cb(NULL, ssinfo);
-            remover = scm_c_eval_string("gnc:html-style-sheet-remove");
-            scm_call_1(remover, sheet_info);
-            scm_gc_unprotect_object(sheet_info);
-        }
-        break;
-
-    case GTK_RESPONSE_CLOSE:
-    default:
-        gtk_widget_destroy(ss->toplevel);
-        gnc_style_sheet_dialog = NULL;
-        g_free(ss);
-        break;
+    selection = gtk_tree_view_get_selection (ss->list_view);
+    if (gtk_tree_selection_get_selected (selection, &model, &iter))
+    {
+        ss_info           * ssinfo;
+
+        SCM                 sheet_info = NULL;
+        SCM                 remover;
+
+        gtk_tree_model_get (model, &iter,
+                            COLUMN_STYLESHEET, &sheet_info,
+                            COLUMN_DIALOG, &ssinfo,
+                            -1);
+        gtk_list_store_remove (ss->list_store, &iter);
+
+        if (ssinfo)
+            gnc_style_sheet_options_close_cb (NULL, ssinfo);
+        remover = scm_c_eval_string ("gnc:html-style-sheet-remove");
+        scm_call_1 (remover, sheet_info);
+        scm_gc_unprotect_object (sheet_info);
+    }
+}
+
+
+void
+gnc_style_sheet_select_dialog_close_cb (GtkWidget *widget, gpointer user_data)
+{
+    StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
+    gnc_close_gui_component (ss->component_id);
+}
+
+static gboolean
+gnc_style_sheet_select_dialog_delete_event_cb (GtkWidget *widget,
+                                               GdkEvent  *event,
+                                               gpointer   user_data)
+{
+    StyleSheetDialog  *ss = (StyleSheetDialog *)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(ss->toplevel));
+    return FALSE;
+}
+
+void
+gnc_style_sheet_select_dialog_destroy_cb (GtkWidget *widget, gpointer user_data)
+{
+    StyleSheetDialog  *ss = (StyleSheetDialog *)user_data;
+
+    if (!ss)
+       return;
+
+    gnc_unregister_gui_component (ss->component_id);
+
+    if (ss->toplevel)
+    {
+        gtk_widget_destroy (ss->toplevel);
+        ss->toplevel = NULL;
     }
+    gnc_style_sheet_dialog = NULL;
+    g_free (ss);
 }
 
 
 static void
-gnc_style_sheet_select_dialog_event_cb (GtkWidget *widget,
-                                        GdkEvent *event,
-                                        gpointer user_data)
+gnc_style_sheet_window_close_handler (gpointer user_data)
 {
-    StyleSheetDialog  * ss = user_data;
+    StyleSheetDialog  *ss = (StyleSheetDialog *)user_data;
+    g_return_if_fail (ss);
 
-    g_return_if_fail(event != NULL);
-    g_return_if_fail(ss != NULL);
+    gnc_save_window_size (GNC_PREFS_GROUP, GTK_WINDOW(ss->toplevel));
+    gtk_widget_destroy (ss->toplevel);
+}
 
-    if (event->type != GDK_2BUTTON_PRESS)
-        return;
 
-    /* Synthesize a click of the edit button */
-    gnc_style_sheet_select_dialog_response_cb (NULL, GNC_RESPONSE_EDIT, ss);
+static gboolean
+gnc_style_sheet_select_dialog_check_escape_cb (GtkWidget *widget,
+                                               GdkEventKey *event,
+                                               gpointer user_data)
+{
+    if (event->keyval == GDK_KEY_Escape)
+    {
+        StyleSheetDialog  * ss = (StyleSheetDialog *)user_data;
+        gnc_close_gui_component (ss->component_id);
+        return TRUE;
+    }
+    return FALSE;
 }
 
 
@@ -426,11 +511,11 @@ gnc_style_sheet_select_dialog_create(GtkWindow *parent)
     GtkTreeSelection  * selection;
 
     builder = gtk_builder_new();
-    gnc_builder_add_from_file (builder, "dialog-report.glade", "select_style_sheet_dialog");
+    gnc_builder_add_from_file (builder, "dialog-report.glade", "select_style_sheet_window");
 
-    ss->toplevel   = GTK_WIDGET(gtk_builder_get_object (builder, "select_style_sheet_dialog"));
+    ss->toplevel = GTK_WIDGET(gtk_builder_get_object (builder, "select_style_sheet_window"));
 
-    gtk_window_set_transient_for (GTK_WINDOW (ss->toplevel), GTK_WINDOW(parent));
+    ss->session = gnc_get_current_session ();
 
     // Set the name for this dialog so it can be easily manipulated with css
     gtk_widget_set_name (GTK_WIDGET(ss->toplevel), "gnc-id-style-sheet-select");
@@ -449,15 +534,21 @@ gnc_style_sheet_select_dialog_create(GtkWindow *parent)
     selection = gtk_tree_view_get_selection (ss->list_view);
     gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
 
-    g_signal_connect(ss->toplevel, "response",
-                     G_CALLBACK(gnc_style_sheet_select_dialog_response_cb), ss);
     g_signal_connect(ss->list_view, "event-after",
                      G_CALLBACK(gnc_style_sheet_select_dialog_event_cb), ss);
 
-    gnc_style_sheet_select_dialog_fill(ss);
+    g_signal_connect (ss->toplevel, "destroy",
+                      G_CALLBACK(gnc_style_sheet_select_dialog_destroy_cb), ss);
+
+    g_signal_connect (ss->toplevel, "delete-event",
+                      G_CALLBACK(gnc_style_sheet_select_dialog_delete_event_cb), ss);
 
-    gtk_widget_show_all(ss->toplevel);
+    g_signal_connect (ss->toplevel, "key-press-event",
+                      G_CALLBACK(gnc_style_sheet_select_dialog_check_escape_cb), ss);
+
+    gnc_style_sheet_select_dialog_fill(ss);
 
+    gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, ss);
     g_object_unref(G_OBJECT(builder));
 
     return ss;
@@ -474,7 +565,22 @@ gnc_style_sheet_dialog_open(GtkWindow *parent)
     else
     {
         gnc_style_sheet_dialog =
-            gnc_style_sheet_select_dialog_create(parent);
+            gnc_style_sheet_select_dialog_create (parent);
+
+        /* register with component manager */
+        gnc_style_sheet_dialog->component_id =
+            gnc_register_gui_component (DIALOG_STYLE_SHEETS_CM_CLASS,
+                                        NULL, //no refresh handler
+                                        gnc_style_sheet_window_close_handler,
+                                        gnc_style_sheet_dialog);
+
+        gnc_gui_component_set_session (gnc_style_sheet_dialog->component_id,
+                                       gnc_style_sheet_dialog->session);
+
+        gnc_restore_window_size (GNC_PREFS_GROUP,
+                                 GTK_WINDOW(gnc_style_sheet_dialog->toplevel),
+                                 GTK_WINDOW(parent));
+        gtk_widget_show_all (gnc_style_sheet_dialog->toplevel);
     }
 }
 
diff --git a/gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in b/gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in
index 883e1806f..54db9ec6d 100644
--- a/gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in
+++ b/gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in
@@ -22,6 +22,7 @@
     <child name="transfer" schema="org.gnucash.dialogs.transfer"/>
     <child name="business-doclink" schema="org.gnucash.dialogs.business-doclink"/>
     <child name="trans-doclink" schema="org.gnucash.dialogs.trans-doclink"/>
+    <child name="style-sheet" schema="org.gnucash.dialogs.style-sheet"/>
     <child name="options" schema="org.gnucash.dialogs.options"/>
   </schema>
 
@@ -258,6 +259,16 @@
     </key>
   </schema>
 
+  <schema id="org.gnucash.dialogs.style-sheet" path="/org/gnucash/dialogs/style-sheet/">
+    <key type="(iiii)" name="last-geometry">
+      <default>(-1,-1,-1,-1)</default>
+      <summary>Last window position and size</summary>
+      <description>This setting describes the size and position of the window when it was last closed.
+        The numbers are the X and Y coordinates of the top left corner of the window
+        followed by the width and height of the window.</description>
+    </key>
+  </schema>
+
   <schema id="org.gnucash.dialogs.options" path="/org/gnucash/dialogs/options/">
     <key name="last-geometry" type="(iiii)">
       <default>(-1,-1,-1,-1)</default>
diff --git a/gnucash/gtkbuilder/dialog-report.glade b/gnucash/gtkbuilder/dialog-report.glade
index 7f0cb6ccc..d8cdf22a8 100644
--- a/gnucash/gtkbuilder/dialog-report.glade
+++ b/gnucash/gtkbuilder/dialog-report.glade
@@ -589,19 +589,40 @@
       <placeholder/>
     </child>
   </object>
-  <object class="GtkDialog" id="select_style_sheet_dialog">
+  <object class="GtkWindow" id="select_style_sheet_window">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">Select HTML Style Sheet</property>
     <property name="default_width">300</property>
     <property name="default_height">200</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <object class="GtkBox" id="dialog-vbox9">
+    <child>
+      <object class="GtkBox" id="hbox1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="orientation">vertical</property>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area9">
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkTreeView" id="style_sheet_list_view">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="headers_visible">False</property>
+                <property name="enable_search">False</property>
+                <child internal-child="selection">
+                  <object class="GtkTreeSelection"/>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButtonBox" id="dialog-action_area">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="layout_style">end</property>
@@ -613,6 +634,7 @@
                 <property name="can_default">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
+                <signal name="clicked" handler="gnc_style_sheet_select_dialog_edit_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -628,6 +650,7 @@
                 <property name="can_default">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
+                <signal name="clicked" handler="gnc_style_sheet_select_dialog_new_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -643,6 +666,7 @@
                 <property name="can_default">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
+                <signal name="clicked" handler="gnc_style_sheet_select_dialog_delete_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -658,6 +682,7 @@
                 <property name="can_default">True</property>
                 <property name="receives_default">True</property>
                 <property name="use_underline">True</property>
+                <signal name="clicked" handler="gnc_style_sheet_select_dialog_close_cb" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -670,41 +695,11 @@
             <property name="expand">False</property>
             <property name="fill">True</property>
             <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkScrolledWindow" id="scrolledwindow28">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hscrollbar_policy">always</property>
-            <property name="vscrollbar_policy">always</property>
-            <child>
-              <object class="GtkTreeView" id="style_sheet_list_view">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="headers_visible">False</property>
-                <property name="enable_search">False</property>
-                <child internal-child="selection">
-                  <object class="GtkTreeSelection" id="treeview-selection3"/>
-                </child>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
     </child>
-    <action-widgets>
-      <action-widget response="3">edit_button</action-widget>
-      <action-widget response="1">add_button</action-widget>
-      <action-widget response="2">delete_button</action-widget>
-      <action-widget response="-7">close_button</action-widget>
-    </action-widgets>
     <child type="titlebar">
       <placeholder/>
     </child>



Summary of changes:
 gnucash/gnome/dialog-report-style-sheet.c          | 501 ++++++++++++---------
 gnucash/gnome/dialog-report-style-sheet.h          |   4 +-
 .../gschemas/org.gnucash.dialogs.gschema.xml.in    |  11 +
 gnucash/gtkbuilder/dialog-report.glade             |  69 ++-
 4 files changed, 339 insertions(+), 246 deletions(-)



More information about the gnucash-changes mailing list