AUDIT: r21268 - gnucash/trunk/src/gnome-utils - Bug #612562 - Transfer Funds dialog - 'Show Income/Expense' checkboxes

Geert Janssens gjanssens at code.gnucash.org
Sun Sep 18 13:28:03 EDT 2011


Author: gjanssens
Date: 2011-09-18 13:28:03 -0400 (Sun, 18 Sep 2011)
New Revision: 21268
Trac: http://svn.gnucash.org/trac/changeset/21268

Modified:
   gnucash/trunk/src/gnome-utils/dialog-transfer.c
Log:
Bug #612562 - Transfer Funds dialog - 'Show Income/Expense' checkboxes
are not working
Subaccounts of income and expense are not always shown.
BP

Modified: gnucash/trunk/src/gnome-utils/dialog-transfer.c
===================================================================
--- gnucash/trunk/src/gnome-utils/dialog-transfer.c	2011-09-17 17:40:53 UTC (rev 21267)
+++ gnucash/trunk/src/gnome-utils/dialog-transfer.c	2011-09-18 17:28:03 UTC (rev 21268)
@@ -141,6 +141,9 @@
     gboolean show_hidden;
 } AccountTreeFilterInfo;
 
+static AccountTreeFilterInfo *from_info = NULL;
+static AccountTreeFilterInfo *to_info   = NULL;
+
 struct _acct_list_item
 {
     char *acct_full_name;
@@ -168,7 +171,7 @@
         GdkEventKey *event,
         XferDialog *xferData );
 void gnc_xfer_dialog_fetch (GtkButton *button, XferDialog *xferData);
-gboolean gnc_xfer_dialog_show_inc_exp_visible_cb (Account *account,
+gboolean gnc_xfer_dialog_inc_exp_filter_func (Account *account,
         gpointer data);
 void price_amount_radio_toggled_cb(GtkToggleButton *togglebutton, gpointer data);
 
@@ -243,15 +246,17 @@
 static void
 gnc_xfer_dialog_toggle_cb(GtkToggleButton *button, gpointer data)
 {
-    AccountTreeFilterInfo info;
+    AccountTreeFilterInfo* info;
+    GncTreeViewAccount* treeview = GNC_TREE_VIEW_ACCOUNT (data);
 
-    info.show_inc_exp = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
-    info.show_hidden = FALSE;
+    info = g_object_get_data (G_OBJECT(treeview), "filter-info");
+    if (info)
+    {
+        info->show_inc_exp = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
+        info->show_hidden = FALSE;
 
-    gnc_tree_view_account_set_filter (GNC_TREE_VIEW_ACCOUNT (data),
-                                      gnc_xfer_dialog_show_inc_exp_visible_cb,
-                                      &info,  /* user data */
-                                      NULL    /* destroy callback */);
+        gnc_tree_view_account_refilter (treeview);
+    }
 }
 
 static gboolean
@@ -473,7 +478,7 @@
 }
 
 gboolean
-gnc_xfer_dialog_show_inc_exp_visible_cb (Account *account,
+gnc_xfer_dialog_inc_exp_filter_func (Account *account,
         gpointer data)
 {
     AccountTreeFilterInfo* info;
@@ -505,7 +510,7 @@
     GtkWidget *button;
     GtkTreeSelection *selection;
     gboolean  use_accounting_labels;
-    AccountTreeFilterInfo info;
+    AccountTreeFilterInfo *info;
     GtkBuilder *builder = g_object_get_data (G_OBJECT (xferData->dialog), "builder");
 
     use_accounting_labels = gnc_gconf_get_bool(GCONF_GENERAL,
@@ -541,17 +546,22 @@
                                 "right_trans_window" : "left_trans_window"));
     }
 
+
+    if (direction == XFER_DIALOG_TO)
+        info = to_info;
+    else
+        info = from_info;
+
     tree_view = GTK_TREE_VIEW(gnc_tree_view_account_new(FALSE));
     gtk_container_add(GTK_CONTAINER(scroll_win), GTK_WIDGET(tree_view));
-    info.show_inc_exp = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
-    info.show_hidden = FALSE;
+    info->show_inc_exp = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
+    info->show_hidden = FALSE;
     gnc_tree_view_account_set_filter (GNC_TREE_VIEW_ACCOUNT (tree_view),
-                                      gnc_xfer_dialog_show_inc_exp_visible_cb,
-                                      &info,  /* user data */
+                                      gnc_xfer_dialog_inc_exp_filter_func,
+                                      info,  /* user data */
                                       NULL    /* destroy callback */);
+    g_object_set_data (G_OBJECT(tree_view), "filter-info", info);
 
-    /* Have to force the filter once. Alt is to show income/expense by default. */
-    gnc_tree_view_account_refilter (GNC_TREE_VIEW_ACCOUNT (tree_view));
     gtk_widget_show(GTK_WIDGET(tree_view));
     g_signal_connect (G_OBJECT (tree_view), "key-press-event",
                       G_CALLBACK (gnc_xfer_dialog_key_press_cb), NULL);
@@ -1762,6 +1772,9 @@
         GtkWidget *label;
         gchar *text;
 
+        to_info   = g_new0(AccountTreeFilterInfo, 1);
+        from_info = g_new0(AccountTreeFilterInfo, 1);
+
         gnc_xfer_dialog_fill_tree_view (xferData, XFER_DIALOG_TO);
         gnc_xfer_dialog_fill_tree_view (xferData, XFER_DIALOG_FROM);
 
@@ -1885,6 +1898,8 @@
     gtk_widget_hide (dialog);
     gnc_xfer_dialog_close_cb(GTK_DIALOG(dialog), xferData);
     gtk_widget_destroy (dialog);
+    g_free (to_info);
+    g_free (from_info);
     LEAVE(" ");
 }
 



More information about the gnucash-changes mailing list