diff --git a/src/business/business-gnome/dialog-invoice.c b/src/business/business-gnome/dialog-invoice.c index 249cdab3f8..5b4203c921 100644 --- a/src/business/business-gnome/dialog-invoice.c +++ b/src/business/business-gnome/dialog-invoice.c @@ -315,6 +315,23 @@ gnc_invoice_window_destroy_cb (GtkWidget *widget, gpointer data) g_free (iw); } +static int +gnc_invoice_owner_changed_cb (GtkWidget *widget, gpointer data) +{ + InvoiceWindow *iw = data; + GncInvoice *invoice; + + if (!iw) + return FALSE; + + gnc_owner_get_owner (iw->owner_choice, &(iw->owner)); + invoice = iw_get_invoice (iw); + gncInvoiceSetOwner (invoice, &(iw->owner)); + gnc_entry_ledger_reset_query (iw->ledger); + + return FALSE; +} + static int gnc_invoice_on_close_cb (GnomeDialog *dialog, gpointer data) { @@ -671,6 +688,10 @@ gnc_invoice_new_window (GtkWidget *parent, GNCBook *bookp, GNC_INVOICE_MODULE_NAME, GNC_EVENT_MODIFY | GNC_EVENT_DESTROY); + gtk_signal_connect (GTK_OBJECT (iw->owner_choice), "changed", + GTK_SIGNAL_FUNC (gnc_invoice_owner_changed_cb), + iw); + gnc_table_realize_gui (gnc_entry_ledger_get_table (entry_ledger)); /* Now fill in a lot of the pieces and display properly */ diff --git a/src/business/business-gnome/dialog-order.c b/src/business/business-gnome/dialog-order.c index 085378fbd1..eea801325d 100644 --- a/src/business/business-gnome/dialog-order.c +++ b/src/business/business-gnome/dialog-order.c @@ -277,6 +277,7 @@ static int gnc_order_owner_changed_cb (GtkWidget *widget, gpointer data) { OrderWindow *ow = data; + GncOrder *order; if (!ow) return FALSE; @@ -293,6 +294,10 @@ gnc_order_owner_changed_cb (GtkWidget *widget, gpointer data) gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), ""); break; } + + /* Set the Order's owner now! */ + order = ow_get_order (ow); + gncOrderSetOwner (order, &(ow->owner)); return FALSE; } diff --git a/src/business/business-ledger/gncEntryLedger.c b/src/business/business-ledger/gncEntryLedger.c index 7bbc3abb5e..33718b59da 100644 --- a/src/business/business-ledger/gncEntryLedger.c +++ b/src/business/business-ledger/gncEntryLedger.c @@ -348,6 +348,15 @@ void gnc_entry_ledger_set_default_invoice (GncEntryLedger *ledger, gnc_entry_ledger_display_refresh (ledger); } +void gnc_entry_ledger_reset_query (GncEntryLedger *ledger) +{ + if (!ledger) return; + if (!ledger->invoice) return; + + create_invoice_query (ledger); + gnc_entry_ledger_display_refresh (ledger); +} + void gnc_entry_ledger_set_parent (GncEntryLedger *ledger, gncUIWidget parent) { if (!ledger) return; diff --git a/src/business/business-ledger/gncEntryLedger.h b/src/business/business-ledger/gncEntryLedger.h index 816f97e7ed..09bef50191 100644 --- a/src/business/business-ledger/gncEntryLedger.h +++ b/src/business/business-ledger/gncEntryLedger.h @@ -88,4 +88,6 @@ void gnc_entry_ledger_cancel_cursor_changes (GncEntryLedger *ledger); gboolean gnc_entry_ledger_check_close (GtkWidget *parent, GncEntryLedger *ledger); +void gnc_entry_ledger_reset_query (GncEntryLedger *ledger); + #endif /* GNC_ENTRY_LEDGER_H */