gnucash master: Multiple changes pushed
Mike Alexander
mta at code.gnucash.org
Tue Sep 2 00:25:03 EDT 2014
Updated via https://github.com/Gnucash/gnucash/commit/48c24d99 (commit)
via https://github.com/Gnucash/gnucash/commit/8d9b3c7c (commit)
via https://github.com/Gnucash/gnucash/commit/668aab4a (commit)
from https://github.com/Gnucash/gnucash/commit/8edb3031 (commit)
commit 48c24d993658de44865815cb18c27ab2d3cf73ae
Merge: 8edb303 8d9b3c7
Author: Mike Alexander <mta at umich.edu>
Date: Tue Sep 2 00:21:24 2014 -0400
Merge branch 'maint'
commit 8d9b3c7c5d0cab8a03060f18c4fe9ee67c255a3a
Author: Mike Alexander <mta at umich.edu>
Date: Mon Sep 1 01:43:17 2014 -0400
Bug 735769: Enable price and shares cells in a split if it is not in the trans currency.
The label for the cells are changed to "Exch. Rate" and "Oth. Curr." in this case.
diff --git a/src/register/ledger-core/split-register-model.c b/src/register/ledger-core/split-register-model.c
index 5af4a3b..4ff22af 100644
--- a/src/register/ledger-core/split-register-model.c
+++ b/src/register/ledger-core/split-register-model.c
@@ -145,6 +145,44 @@ gnc_split_register_get_rbaln (VirtualLocation virt_loc, gpointer user_data, gboo
return balance;
}
+static gnc_commodity *
+gnc_split_register_get_split_commodity (SplitRegister *reg,
+ VirtualLocation virt_loc)
+{
+ CursorClass cursor_class;
+ Account *account;
+ Split *split;
+
+ split = gnc_split_register_get_split (reg, virt_loc.vcell_loc);
+ if (!split)
+ return NULL;
+
+ cursor_class = gnc_split_register_get_cursor_class (reg,
+ virt_loc.vcell_loc);
+ if (cursor_class != CURSOR_CLASS_SPLIT)
+ return NULL;
+
+ account = NULL;
+
+ if (virt_cell_loc_equal (virt_loc.vcell_loc,
+ reg->table->current_cursor_loc.vcell_loc) &&
+ gnc_table_layout_get_cell_changed (reg->table->layout, XFRM_CELL, FALSE))
+ {
+ const char *name;
+
+ name = gnc_table_layout_get_cell_value (reg->table->layout, XFRM_CELL);
+ account = gnc_account_lookup_for_register (gnc_get_current_root_account (), name);
+ }
+
+ if (!account)
+ account = xaccSplitGetAccount (split);
+
+ if (!account)
+ return NULL;
+
+ return xaccAccountGetCommodity(account);
+}
+
static gboolean
gnc_split_register_use_security_cells (SplitRegister *reg,
VirtualLocation virt_loc)
@@ -182,7 +220,9 @@ gnc_split_register_use_security_cells (SplitRegister *reg,
if (xaccTransUseTradingAccounts (xaccSplitGetParent (split)))
{
- if (!gnc_commodity_is_iso(xaccAccountGetCommodity(account)))
+ gnc_commodity *commod = xaccAccountGetCommodity(account);
+ if (!gnc_commodity_is_iso(commod) ||
+ !gnc_commodity_equal(commod, xaccTransGetCurrency(xaccSplitGetParent(split))))
return TRUE;
}
@@ -341,11 +381,16 @@ gnc_split_register_get_price_label (VirtualLocation virt_loc,
gpointer user_data)
{
SplitRegister *reg = user_data;
+ gnc_commodity *commod;
if (!gnc_split_register_use_security_cells (reg, virt_loc))
return NULL;
- return _("Price");
+ commod = gnc_split_register_get_split_commodity (reg, virt_loc);
+ if (!commod || !gnc_commodity_is_iso(commod))
+ return _("Price");
+ else
+ return _("Exch. Rate");
}
static const char *
@@ -353,11 +398,16 @@ gnc_split_register_get_shares_label (VirtualLocation virt_loc,
gpointer user_data)
{
SplitRegister *reg = user_data;
+ gnc_commodity *commod;
if (!gnc_split_register_use_security_cells (reg, virt_loc))
return NULL;
- return _("Shares");
+ commod = gnc_split_register_get_split_commodity (reg, virt_loc);
+ if (!commod || !gnc_commodity_is_iso(commod))
+ return _("Shares");
+ else
+ return _("Oth. Curr.");
}
static const char *
commit 668aab4a2b31c1ee770b90127fcc76b309bc2349
Author: Mike Alexander <mta at umich.edu>
Date: Mon Sep 1 01:36:06 2014 -0400
If the cursor moves from one register cell to another, refresh the register headers.
If trading accounts are on and the transaction is expanded then the headers
depend on the type of split the cursor is in.
diff --git a/src/register/register-gnome/gnucash-header.c b/src/register/register-gnome/gnucash-header.c
index dddd7bb..7d902d5 100644
--- a/src/register/register-gnome/gnucash-header.c
+++ b/src/register/register-gnome/gnucash-header.c
@@ -222,7 +222,7 @@ gnc_header_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
}
-static void
+void
gnc_header_request_redraw (GncHeader *header)
{
GnomeCanvas *canvas = GNOME_CANVAS_ITEM(header)->canvas;
diff --git a/src/register/register-gnome/gnucash-header.h b/src/register/register-gnome/gnucash-header.h
index 553ca3b..fa2091a 100644
--- a/src/register/register-gnome/gnucash-header.h
+++ b/src/register/register-gnome/gnucash-header.h
@@ -64,6 +64,7 @@ typedef struct
GtkWidget *gnc_header_new (GnucashSheet *sheet);
void gnc_header_reconfigure (GncHeader *header);
+void gnc_header_request_redraw (GncHeader *header);
void gnc_header_set_header_rows (GncHeader *header,
int num_phys_rows);
diff --git a/src/register/register-gnome/gnucash-sheet.c b/src/register/register-gnome/gnucash-sheet.c
index 348236d..1c17b76 100644
--- a/src/register/register-gnome/gnucash-sheet.c
+++ b/src/register/register-gnome/gnucash-sheet.c
@@ -348,6 +348,10 @@ gnucash_sheet_cursor_move (GnucashSheet *sheet, VirtualLocation virt_loc)
gnucash_sheet_make_cell_visible (sheet, virt_loc);
changed_cells = !virt_loc_equal (virt_loc, old_virt_loc);
+
+ /* If we've changed cells, redraw the headers */
+ if (changed_cells)
+ gnc_header_request_redraw (GNC_HEADER(sheet->header_item));
/* Now turn on the editing controls. */
gnucash_sheet_activate_cursor_cell (sheet, changed_cells);
Summary of changes:
src/register/ledger-core/split-register-model.c | 56 +++++++++++++++++++++++--
src/register/register-gnome/gnucash-header.c | 2 +-
src/register/register-gnome/gnucash-header.h | 1 +
src/register/register-gnome/gnucash-sheet.c | 4 ++
4 files changed, 59 insertions(+), 4 deletions(-)
More information about the gnucash-changes
mailing list