mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Merge branch 'maint'
This commit is contained in:
commit
48c24d9936
@ -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 *
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user