diff --git a/ChangeLog b/ChangeLog index 124f5c9d5f..b0407c88f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2003-02-17 Derek Atkins + + * src/gnome-utils/dialog-transfer.c: don't round the exchange + rate when returning it to callers... Compute it from the + from_amount and to_amount. + * src/register/ledger-core/split-register.c: change the rate-cell + to a shares_print_info so we don't lose accuracy due to rounding + errors. + Fixes bug #106332 + 2003-02-16 David Hampton * src/quotes: List HTML::TableExtract as an explicit requirement, diff --git a/src/gnome-utils/dialog-transfer.c b/src/gnome-utils/dialog-transfer.c index 567fefb48d..720afc9717 100644 --- a/src/gnome-utils/dialog-transfer.c +++ b/src/gnome-utils/dialog-transfer.c @@ -1398,15 +1398,14 @@ gnc_xfer_dialog_ok_cb(GtkWidget * widget, gpointer data) if (xferData->exch_rate) { - /* If the to_amount is active, then call the callback, just in case the - * user hit "return" -- because the exit-focus signal handler was probably - * not executed. - */ - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (xferData->amount_radio))) - gnc_xfer_to_amount_update_cb(xferData->to_amount_edit, NULL, xferData); + gnc_numeric to_amt, from_amt; + + from_amt = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT(xferData->amount_edit)); + to_amt = gnc_amount_edit_get_amount (GNC_AMOUNT_EDIT(xferData->to_amount_edit)); *(xferData->exch_rate) = - gnc_numeric_abs(gnc_amount_edit_get_amount(GNC_AMOUNT_EDIT(xferData->price_edit))); + gnc_numeric_abs (gnc_numeric_div (to_amount, amount, GNC_DENOM_AUTO, + GNC_DENOM_REDUCE)); } else { diff --git a/src/register/ledger-core/split-register.c b/src/register/ledger-core/split-register.c index 3be7df2bd9..7c90a372ba 100644 --- a/src/register/ledger-core/split-register.c +++ b/src/register/ledger-core/split-register.c @@ -2101,14 +2101,12 @@ gnc_split_register_config_cells (SplitRegister *reg) ((PriceCell *) gnc_table_layout_get_cell (reg->table->layout, TSHRS_CELL), gnc_default_share_print_info ()); - /* Initialize the rate cells */ - gnc_price_cell_set_fraction - ((PriceCell *) - gnc_table_layout_get_cell (reg->table->layout, RATE_CELL), 1000000); - + /* Initialize the rate cell + * use a share_print_info to make sure we don't have rounding errors + */ gnc_price_cell_set_print_info ((PriceCell *) gnc_table_layout_get_cell (reg->table->layout, RATE_CELL), - gnc_default_price_print_info()); + gnc_default_share_print_info()); /* The action cell should accept strings not in the list */ gnc_combo_cell_set_strict