Merge branch 'maint'

This commit is contained in:
Mike Alexander 2014-09-02 00:21:24 -04:00
commit 48c24d9936
4 changed files with 59 additions and 4 deletions

View File

@ -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;
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;
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 *

View File

@ -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;

View File

@ -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);

View File

@ -349,6 +349,10 @@ gnucash_sheet_cursor_move (GnucashSheet *sheet, VirtualLocation 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);