r19861 - gnucash/trunk/src/business/business-gnome - Bug #635439: Patch to autoset owner in the payment dialog
Mike Evans
mikee at code.gnucash.org
Mon Nov 22 10:13:26 EST 2010
Author: mikee
Date: 2010-11-22 10:13:26 -0500 (Mon, 22 Nov 2010)
New Revision: 19861
Trac: http://svn.gnucash.org/trac/changeset/19861
Modified:
gnucash/trunk/src/business/business-gnome/business-gnome-utils.c
gnucash/trunk/src/business/business-gnome/dialog-payment.c
Log:
Bug #635439: Patch to autoset owner in the payment dialog
Patch by Matthijs Kooijman <matthijs at stdin.nl>
Modified: gnucash/trunk/src/business/business-gnome/business-gnome-utils.c
===================================================================
--- gnucash/trunk/src/business/business-gnome/business-gnome-utils.c 2010-11-22 13:45:43 UTC (rev 19860)
+++ gnucash/trunk/src/business/business-gnome/business-gnome-utils.c 2010-11-22 15:13:26 UTC (rev 19861)
@@ -290,7 +290,6 @@
void gnc_invoice_set_invoice (GtkWidget *widget, GncInvoice *invoice)
{
g_return_if_fail (widget != NULL);
- g_return_if_fail (invoice != NULL);
gnc_general_search_set_selected (GNC_GENERAL_SEARCH (widget), invoice);
}
@@ -310,7 +309,6 @@
gncOwnerCopy(owner, &isi->owner);
isi->have_owner = TRUE;
- gnc_general_search_set_selected(GNC_GENERAL_SEARCH(widget), NULL);
/* Reset the label */
gnc_invoice_select_search_set_label(isi);
Modified: gnucash/trunk/src/business/business-gnome/dialog-payment.c
===================================================================
--- gnucash/trunk/src/business/business-gnome/dialog-payment.c 2010-11-22 13:45:43 UTC (rev 19860)
+++ gnucash/trunk/src/business/business-gnome/dialog-payment.c 2010-11-22 15:13:26 UTC (rev 19861)
@@ -96,17 +96,29 @@
gtk_widget_destroy (pw->dialog);
}
+/* Forward declaration */
+static void gnc_payment_set_owner (PaymentWindow *pw, GncOwner *owner);
+
static void
gnc_payment_dialog_invoice_changed(PaymentWindow *pw)
{
GNCLot *lot;
gnc_numeric val;
+ GncOwner *owner;
/* Set the payment amount in the dialog */
if (pw->invoice)
{
lot = gncInvoiceGetPostedLot (pw->invoice);
val = gnc_numeric_abs (gnc_lot_get_balance (lot));
+ /* If a invoice is selected without selecting an owner first, or
+ * if the owner for the selected invoice is different from the
+ * previously selected owner, make sure the right owner is
+ * selected. */
+ owner = gncOwnerGetEndOwner (gncInvoiceGetOwner (pw->invoice));
+ if (pw->owner.owner.undefined == NULL || pw->owner.owner.undefined != owner->owner.undefined) {
+ gnc_payment_set_owner (pw, owner);
+ }
}
else
{
@@ -124,18 +136,19 @@
KvpValue* value;
KvpFrame* slots;
- /* If the owner changed, the invoice selection is invalid */
- pw->invoice = NULL;
+ /* The selected invoice has a different owner than the newly
+ * selected owner, reset it */
+ if (pw->invoice != NULL && !gncOwnerEqual(gncOwnerGetEndOwner(gncInvoiceGetOwner(pw->invoice)), &pw->owner)) {
+ pw->invoice = NULL;
+ gnc_invoice_set_invoice(pw->invoice_choice, NULL);
+ }
+
+ /* Limit the invoice selection to this owner */
gnc_invoice_set_owner(pw->invoice_choice, &pw->owner);
- /* note that set_owner implies ...set_invoice(...,NULL); */
/* in case we don't get the callback */
gnc_payment_dialog_invoice_changed(pw);
- /* XXX: We should set the sensitive flag on the invoice_choice
- * based on whether 'owner' is NULL or not...
- */
-
/* Now handle the account tree */
slots = gncOwnerGetSlots(&pw->owner);
if (slots)
More information about the gnucash-changes
mailing list