Hi, The attached patch adds a double click action to the account list in the invoice payment dialog. The behaviour is as follows: * if the account that is being double clicked has child accounts, the children are expanded * otherwise the account being double clicked on is selected and the dialog window is closed.
I have more or less copied this behaviour from the commodities dialog, as I find it a very useful feature. It saves me a lot of mouse gestures when paying invoices. Geert
Index: src/business/business-gnome/dialog-payment.c =================================================================== --- src/business/business-gnome/dialog-payment.c (revision 18377) +++ src/business/business-gnome/dialog-payment.c (working copy) @@ -74,6 +74,8 @@ void gnc_payment_ok_cb (GtkWidget *widget, gpointer data); void gnc_payment_cancel_cb (GtkWidget *widget, gpointer data); void gnc_payment_window_destroy_cb (GtkWidget *widget, gpointer data); +void gnc_payment_acct_tree_row_activated_cb (GtkWidget *widget, GtkTreePath *path, + GtkTreeViewColumn *column, PaymentWindow *pw); static void @@ -360,6 +362,35 @@ g_free (pw); } +void +gnc_payment_acct_tree_row_activated_cb (GtkWidget *widget, GtkTreePath *path, + GtkTreeViewColumn *column, PaymentWindow *pw) +{ +GtkTreeView *view; +GtkTreeModel *model; +GtkTreeIter iter; + +g_return_if_fail(widget); +view = GTK_TREE_VIEW(widget); + +model = gtk_tree_view_get_model(view); +if (gtk_tree_model_get_iter(model, &iter, path)) +{ + if (gtk_tree_model_iter_has_child(model, &iter)) + { + /* There are children, + * just expand or collapse the row. */ + if (gtk_tree_view_row_expanded(view, path)) + gtk_tree_view_collapse_row(view, path); + else + gtk_tree_view_expand_row(view, path, FALSE); + } + else + /* It's an account without any children, so click the Ok button. */ + gnc_payment_ok_cb(widget, pw); +} +} + /* Select the list of accounts to show in the tree */ static void gnc_payment_set_account_types (GncTreeViewAccount *tree) @@ -483,6 +514,9 @@ g_signal_connect (G_OBJECT (pw->invoice_choice), "changed", G_CALLBACK (gnc_payment_dialog_invoice_changed_cb), pw); + g_signal_connect (G_OBJECT (pw->acct_tree), "row-activated", + G_CALLBACK (gnc_payment_acct_tree_row_activated_cb), pw); + /* Register with the component manager */ pw->component_id = gnc_register_gui_component (cm_class,
_______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel