mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Register rewrite Update, changes the way the transaction changed dialog pops up. This update changes the way the transaction changed dialog pops up and also when you navigate to a cell it automaticly changes to allow input. Author: Robert Fewell
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@22888 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
46a0bf1f87
commit
6ab48e64bc
@ -706,8 +706,6 @@ gnc_tree_control_split_reg_jump_to_blank (GncTreeViewSplitReg *view)
|
|||||||
|
|
||||||
spath = gnc_tree_view_split_reg_get_sort_path_from_model_path (view, mpath);
|
spath = gnc_tree_view_split_reg_get_sort_path_from_model_path (view, mpath);
|
||||||
|
|
||||||
gtk_tree_selection_select_path (gtk_tree_view_get_selection (GTK_TREE_VIEW (view)), spath);
|
|
||||||
|
|
||||||
/* Set cursor to new spath */
|
/* Set cursor to new spath */
|
||||||
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, NULL, FALSE);
|
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, NULL, FALSE);
|
||||||
|
|
||||||
@ -738,8 +736,6 @@ gnc_tree_control_split_reg_jump_to (GncTreeViewSplitReg *view, Transaction *tran
|
|||||||
if (split)
|
if (split)
|
||||||
gnc_tree_view_split_reg_expand_trans (view, xaccSplitGetParent (split));
|
gnc_tree_view_split_reg_expand_trans (view, xaccSplitGetParent (split));
|
||||||
|
|
||||||
gtk_tree_selection_select_path (gtk_tree_view_get_selection (GTK_TREE_VIEW (view)), spath);
|
|
||||||
|
|
||||||
/* Set cursor to new spath, if amount, cursor is set to correct column ready for editing */
|
/* Set cursor to new spath, if amount, cursor is set to correct column ready for editing */
|
||||||
if (amount)
|
if (amount)
|
||||||
{
|
{
|
||||||
@ -866,14 +862,12 @@ gnc_tree_control_split_reg_goto_rel_trans_row (GncTreeViewSplitReg *view, gint r
|
|||||||
if (relative != 0)
|
if (relative != 0)
|
||||||
gnc_tree_view_split_reg_block_selection (view, FALSE);
|
gnc_tree_view_split_reg_block_selection (view, FALSE);
|
||||||
|
|
||||||
gtk_tree_selection_select_path (gtk_tree_view_get_selection (GTK_TREE_VIEW (view)), new_spath);
|
/* Set cursor to new spath */
|
||||||
|
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), new_spath, NULL, FALSE);
|
||||||
|
|
||||||
if (relative == 0)
|
if (relative == 0)
|
||||||
gnc_tree_view_split_reg_block_selection (view, FALSE);
|
gnc_tree_view_split_reg_block_selection (view, FALSE);
|
||||||
|
|
||||||
/* Set cursor to new spath */
|
|
||||||
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), new_spath, NULL, FALSE);
|
|
||||||
|
|
||||||
LEAVE("new_spath is %s", gtk_tree_path_to_string (new_spath));
|
LEAVE("new_spath is %s", gtk_tree_path_to_string (new_spath));
|
||||||
|
|
||||||
gtk_tree_path_free (new_spath);
|
gtk_tree_path_free (new_spath);
|
||||||
|
@ -54,6 +54,14 @@ enum
|
|||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
RESET, //0
|
||||||
|
ACCEPT, //1
|
||||||
|
DISCARD,//2
|
||||||
|
CANCEL //3
|
||||||
|
}TransConfirm;
|
||||||
|
|
||||||
|
|
||||||
/** Static Globals *******************************************************/
|
/** Static Globals *******************************************************/
|
||||||
static QofLogModule log_module = GNC_MOD_GUI;
|
static QofLogModule log_module = GNC_MOD_GUI;
|
||||||
|
|
||||||
@ -239,7 +247,7 @@ struct GncTreeViewSplitRegPrivate
|
|||||||
GtkTreeRowReference *current_ref; // The current model path reference
|
GtkTreeRowReference *current_ref; // The current model path reference
|
||||||
|
|
||||||
Transaction *dirty_trans; // Set when transaction is changed
|
Transaction *dirty_trans; // Set when transaction is changed
|
||||||
GtkTreeRowReference *edit_ref; // The model edit path reference
|
TransConfirm trans_confirm; // This is the return value for transaction_changed_confirm
|
||||||
|
|
||||||
GtkCellRenderer *temp_cr; // Pointer to Temp Cell Renderer
|
GtkCellRenderer *temp_cr; // Pointer to Temp Cell Renderer
|
||||||
gulong fo_handler_id; // Focus out callback id
|
gulong fo_handler_id; // Focus out callback id
|
||||||
@ -410,11 +418,26 @@ gnc_tree_view_split_reg_get_sort_path_from_model_path (GncTreeViewSplitReg *view
|
|||||||
f_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (s_model));
|
f_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (s_model));
|
||||||
|
|
||||||
fpath = gtk_tree_model_filter_convert_child_path_to_path (GTK_TREE_MODEL_FILTER (f_model), mpath);
|
fpath = gtk_tree_model_filter_convert_child_path_to_path (GTK_TREE_MODEL_FILTER (f_model), mpath);
|
||||||
|
//FIXME Leak fpath
|
||||||
return gtk_tree_model_sort_convert_child_path_to_path (GTK_TREE_MODEL_SORT (s_model), fpath);
|
return gtk_tree_model_sort_convert_child_path_to_path (GTK_TREE_MODEL_SORT (s_model), fpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Get model path from the sort model path */
|
||||||
|
GtkTreePath *
|
||||||
|
gnc_tree_view_split_reg_get_model_path_from_sort_path (GncTreeViewSplitReg *view, GtkTreePath *spath)
|
||||||
|
{
|
||||||
|
GtkTreeModel *f_model, *s_model;
|
||||||
|
GtkTreePath *fpath;
|
||||||
|
|
||||||
|
s_model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
|
||||||
|
f_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (s_model));
|
||||||
|
|
||||||
|
fpath = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (s_model), spath);
|
||||||
|
//FIXME Leak fpath
|
||||||
|
return gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (f_model), fpath);
|
||||||
|
}
|
||||||
|
|
||||||
/* Forces the entire split register tree to be re-evaluated for visibility. */
|
/* Forces the entire split register tree to be re-evaluated for visibility. */
|
||||||
void
|
void
|
||||||
gnc_tree_view_split_reg_refilter (GncTreeViewSplitReg *view)
|
gnc_tree_view_split_reg_refilter (GncTreeViewSplitReg *view)
|
||||||
@ -442,6 +465,7 @@ gnc_tree_view_split_reg_init (GncTreeViewSplitReg *view)
|
|||||||
view->priv->fo_handler_id = 0;
|
view->priv->fo_handler_id = 0;
|
||||||
view->sort_depth = 1;
|
view->sort_depth = 1;
|
||||||
view->priv->auto_complete = FALSE;
|
view->priv->auto_complete = FALSE;
|
||||||
|
view->priv->trans_confirm = RESET;
|
||||||
|
|
||||||
view->priv->acct_short_names = gnc_gconf_get_bool (GCONF_GENERAL_REGISTER, "show_leaf_account_names", NULL);
|
view->priv->acct_short_names = gnc_gconf_get_bool (GCONF_GENERAL_REGISTER, "show_leaf_account_names", NULL);
|
||||||
}
|
}
|
||||||
@ -472,12 +496,6 @@ gnc_tree_view_split_reg_dispose (GObject *object)
|
|||||||
view->priv->current_ref = NULL;
|
view->priv->current_ref = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(view->priv->edit_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (parent_class)->dispose)
|
if (G_OBJECT_CLASS (parent_class)->dispose)
|
||||||
(* G_OBJECT_CLASS (parent_class)->dispose) (object);
|
(* G_OBJECT_CLASS (parent_class)->dispose) (object);
|
||||||
|
|
||||||
@ -1049,8 +1067,6 @@ gnc_tree_view_split_reg_default_selection (GncTreeViewSplitReg *view)
|
|||||||
}
|
}
|
||||||
view->priv->current_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (model), new_mpath);
|
view->priv->current_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (model), new_mpath);
|
||||||
|
|
||||||
gtk_tree_selection_select_path (gtk_tree_view_get_selection (GTK_TREE_VIEW (view)), spath);
|
|
||||||
|
|
||||||
/* Set cursor to new spath */
|
/* Set cursor to new spath */
|
||||||
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, NULL, FALSE);
|
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, NULL, FALSE);
|
||||||
|
|
||||||
@ -2868,12 +2884,7 @@ start_edit (GtkCellRenderer *cr, GtkCellEditable *editable,
|
|||||||
//FIXME this could be the sort path instead of model path / check !!
|
//FIXME this could be the sort path instead of model path / check !!
|
||||||
path = gtk_tree_path_new_from_string (path_string);
|
path = gtk_tree_path_new_from_string (path_string);
|
||||||
|
|
||||||
if(view->priv->edit_ref != NULL)
|
//FIXME stuff here...
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
view->priv->edit_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (model), path);
|
|
||||||
|
|
||||||
gtk_tree_path_free (path);
|
gtk_tree_path_free (path);
|
||||||
|
|
||||||
@ -3148,16 +3159,12 @@ transaction_changed_confirm (GncTreeViewSplitReg *view,
|
|||||||
case GTK_RESPONSE_ACCEPT:
|
case GTK_RESPONSE_ACCEPT:
|
||||||
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (FALSE));
|
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (FALSE));
|
||||||
xaccTransCommitEdit (view->priv->dirty_trans);
|
xaccTransCommitEdit (view->priv->dirty_trans);
|
||||||
if(view->priv->edit_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
split = gnc_tree_model_split_get_blank_split (model);
|
split = gnc_tree_model_split_get_blank_split (model);
|
||||||
xaccSplitReinit (split); // Clear the blank split
|
xaccSplitReinit (split); // Clear the blank split
|
||||||
view->priv->dirty_trans = NULL;
|
view->priv->dirty_trans = NULL;
|
||||||
view->change_allowed = FALSE;
|
view->change_allowed = FALSE;
|
||||||
view->priv->auto_complete = FALSE;
|
view->priv->auto_complete = FALSE;
|
||||||
|
view->priv->trans_confirm = ACCEPT;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -3171,24 +3178,23 @@ transaction_changed_confirm (GncTreeViewSplitReg *view,
|
|||||||
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (FALSE));
|
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (FALSE));
|
||||||
xaccTransRollbackEdit (view->priv->dirty_trans);
|
xaccTransRollbackEdit (view->priv->dirty_trans);
|
||||||
|
|
||||||
view->priv->dirty_trans = NULL;
|
|
||||||
|
|
||||||
split = gnc_tree_model_split_get_blank_split (model);
|
split = gnc_tree_model_split_get_blank_split (model);
|
||||||
xaccSplitReinit (split); // Clear the blank split
|
xaccSplitReinit (split); // Clear the blank split
|
||||||
view->change_allowed = FALSE;
|
view->change_allowed = FALSE;
|
||||||
view->priv->auto_complete = FALSE;
|
view->priv->auto_complete = FALSE;
|
||||||
|
view->priv->trans_confirm = DISCARD;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GTK_RESPONSE_CANCEL:
|
case GTK_RESPONSE_CANCEL:
|
||||||
|
view->priv->trans_confirm = CANCEL;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3928,7 +3934,8 @@ gtv_selection_to_blank (GncTreeViewSplitReg *view)
|
|||||||
|
|
||||||
spath = gnc_tree_view_split_reg_get_sort_path_from_model_path (view, bpath);
|
spath = gnc_tree_view_split_reg_get_sort_path_from_model_path (view, bpath);
|
||||||
|
|
||||||
gtk_tree_selection_select_path (gtk_tree_view_get_selection (GTK_TREE_VIEW (view)), spath);
|
/* Set cursor to new spath */
|
||||||
|
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, NULL, FALSE);
|
||||||
|
|
||||||
gtk_tree_path_free (bpath);
|
gtk_tree_path_free (bpath);
|
||||||
gtk_tree_path_free (spath);
|
gtk_tree_path_free (spath);
|
||||||
@ -4053,15 +4060,19 @@ gtv_split_reg_recn_tests (GncTreeViewSplitReg *view, GtkTreeViewColumn *column)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This is the callback for the mouse click on a selected row */
|
/* This is the callback for the mouse click */
|
||||||
static gboolean
|
static gboolean
|
||||||
gtv_split_reg_button_cb (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
|
gtv_split_reg_button_cb (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
|
||||||
{
|
{
|
||||||
GncTreeViewSplitReg *view = GNC_TREE_VIEW_SPLIT_REG (widget);
|
GncTreeViewSplitReg *view = GNC_TREE_VIEW_SPLIT_REG (widget);
|
||||||
GncTreeModelSplitReg *model;
|
GncTreeModelSplitReg *model;
|
||||||
GtkTreePath *spath;
|
GtkTreePath *mpath, *spath;
|
||||||
GtkTreeViewColumn *col;
|
GtkTreeViewColumn *col;
|
||||||
ViewCol viewcol;
|
ViewCol viewcol;
|
||||||
|
GtkTreeIter m_iter;
|
||||||
|
Split *split = NULL;
|
||||||
|
Transaction *trans = NULL;
|
||||||
|
gboolean is_trow1, is_trow2, is_split, is_blank;
|
||||||
|
|
||||||
model = gnc_tree_view_split_reg_get_model_from_view (view);
|
model = gnc_tree_view_split_reg_get_model_from_view (view);
|
||||||
|
|
||||||
@ -4074,21 +4085,68 @@ gtv_split_reg_button_cb (GtkWidget *widget, GdkEventButton *event, gpointer user
|
|||||||
if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (view), (gint) event->x, (gint) event->y,
|
if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (view), (gint) event->x, (gint) event->y,
|
||||||
&spath, &col, NULL, NULL))
|
&spath, &col, NULL, NULL))
|
||||||
{
|
{
|
||||||
// Are we on a selected row.
|
mpath = gnc_tree_view_split_reg_get_model_path_from_sort_path (view, spath);
|
||||||
if (gtk_tree_selection_path_is_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (view)), spath))
|
|
||||||
{
|
|
||||||
/* Set cursor to column */
|
|
||||||
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, col, TRUE);
|
|
||||||
|
|
||||||
|
if (gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &m_iter, mpath))
|
||||||
|
{
|
||||||
|
DEBUG("Mouse Button Press - mpath is %s, spath is %s", gtk_tree_path_to_string (mpath), gtk_tree_path_to_string (spath));
|
||||||
|
|
||||||
|
// Reset the transaction confirm flag.
|
||||||
|
view->priv->trans_confirm = RESET;
|
||||||
|
|
||||||
|
gnc_tree_model_split_reg_get_split_and_trans (
|
||||||
|
GNC_TREE_MODEL_SPLIT_REG (model), &m_iter, &is_trow1, &is_trow2, &is_split, &is_blank, &split, &trans);
|
||||||
|
|
||||||
|
// Ask for confirmation if data has been edited, transaction_changed_confirm return TRUE if canceled
|
||||||
|
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) && transaction_changed_confirm (view, trans))
|
||||||
|
{
|
||||||
|
DEBUG("MBP - Restore position - Cancel / Discard");
|
||||||
|
|
||||||
|
/* Restore position - Cancel / Discard */
|
||||||
|
if (view->priv->trans_confirm == CANCEL)
|
||||||
|
{
|
||||||
|
DEBUG("MBP - Cancel");
|
||||||
|
|
||||||
|
// Expand trans on split-trans (We only expand on cancel and more than two splits)
|
||||||
|
if ((xaccTransCountSplits (view->priv->dirty_trans) > 2) && view->priv->dirty_trans != NULL)
|
||||||
|
{
|
||||||
|
// Jump to the first split of dirty_trans.
|
||||||
|
gnc_tree_control_split_reg_jump_to (view, NULL, xaccTransGetSplit (view->priv->dirty_trans, 0), FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// Jump to the dirty_trans.
|
||||||
|
gnc_tree_control_split_reg_jump_to (view, view->priv->dirty_trans, NULL, FALSE);
|
||||||
|
|
||||||
|
gtk_tree_path_free (spath);
|
||||||
|
gtk_tree_path_free (mpath);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (view->priv->trans_confirm == DISCARD)
|
||||||
|
{
|
||||||
|
DEBUG("MBP - Discard");
|
||||||
|
view->priv->dirty_trans = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skip */
|
||||||
// Reconcile tests
|
// Reconcile tests
|
||||||
if (gtv_split_reg_recn_tests (view, col))
|
if (gtv_split_reg_recn_tests (view, col))
|
||||||
{
|
{
|
||||||
gtk_tree_path_free (spath);
|
gtk_tree_path_free (spath);
|
||||||
|
gtk_tree_path_free (mpath);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set cursor to column */
|
||||||
|
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, col, TRUE);
|
||||||
|
gtk_tree_path_free (spath);
|
||||||
|
gtk_tree_path_free (mpath);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
gtk_tree_path_free (spath);
|
||||||
|
gtk_tree_path_free (mpath);
|
||||||
}
|
}
|
||||||
gtk_tree_path_free (spath);
|
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -4164,49 +4222,53 @@ gtv_split_reg_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reset the transaction confirm flag.
|
||||||
|
view->priv->trans_confirm = RESET;
|
||||||
|
|
||||||
/* Have we stepped off the end */
|
/* Have we stepped off the end */
|
||||||
if (!spath || !gnc_tree_view_path_is_valid (GNC_TREE_VIEW (view), spath)) // We have stepped off the end
|
if (!spath || !gnc_tree_view_path_is_valid (GNC_TREE_VIEW (view), spath)) // We have stepped off the end
|
||||||
{
|
{
|
||||||
//Ask for confirmation if data has been edited, transaction_changed_confirm return TRUE if canceled
|
//Ask for confirmation if data has been edited, transaction_changed_confirm return TRUE if canceled
|
||||||
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) && transaction_changed_confirm (view, NULL))
|
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) && transaction_changed_confirm (view, NULL))
|
||||||
{
|
{
|
||||||
Transaction *dirty_trans;
|
|
||||||
|
|
||||||
/* Restore position - Cancel / Discard */
|
/* Restore position - Cancel / Discard */
|
||||||
if (view->priv->current_ref != NULL)
|
DEBUG("KN - Restore position - Cancel / Discard");
|
||||||
|
|
||||||
|
if (view->priv->trans_confirm == CANCEL)
|
||||||
{
|
{
|
||||||
gtk_tree_row_reference_free (view->priv->current_ref);
|
DEBUG("KN - Cancel");
|
||||||
view->priv->current_ref = NULL;
|
|
||||||
|
// Expand trans on split-trans (We only expand on cancel)
|
||||||
|
if ((xaccTransCountSplits (view->priv->dirty_trans) > 2) && view->priv->dirty_trans != NULL)
|
||||||
|
{
|
||||||
|
// Jump to the first split of dirty_trans.
|
||||||
|
gnc_tree_control_split_reg_jump_to (view, NULL, xaccTransGetSplit (view->priv->dirty_trans, 0), FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// Jump to the dirty_trans.
|
||||||
|
gnc_tree_control_split_reg_jump_to (view, view->priv->dirty_trans, NULL, FALSE);
|
||||||
|
|
||||||
|
gtk_tree_path_free (spath);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (gtk_tree_row_reference_valid (view->priv->edit_ref))
|
|
||||||
view->priv->current_ref = gtk_tree_row_reference_copy (view->priv->edit_ref);
|
|
||||||
|
|
||||||
dirty_trans = gnc_tree_view_split_reg_get_dirty_trans_by_ref (view);
|
if (view->priv->trans_confirm == DISCARD)
|
||||||
|
|
||||||
// Expand trans on split-trans (We only expand on cancel, view->priv->dirty_trans is not NULL on cancel)
|
|
||||||
if ((xaccTransCountSplits (dirty_trans) > 2) && view->priv->dirty_trans != NULL)
|
|
||||||
{
|
{
|
||||||
// Jump to the first split of dirty_trans.
|
DEBUG("KN - Discard");
|
||||||
gnc_tree_control_split_reg_jump_to (view, NULL, xaccTransGetSplit (dirty_trans, 0), FALSE);
|
gnc_tree_view_split_reg_block_selection (view, TRUE);
|
||||||
|
|
||||||
|
// Check to see if dirty_trans expanded, collapse it.
|
||||||
|
if (gnc_tree_view_split_reg_trans_expanded (view, view->priv->dirty_trans))
|
||||||
|
gnc_tree_view_split_reg_collapse_trans (view, view->priv->dirty_trans);
|
||||||
|
|
||||||
|
gnc_tree_view_split_reg_block_selection (view, FALSE);
|
||||||
|
view->priv->dirty_trans = NULL;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
// Jump to the dirty_trans.
|
|
||||||
gnc_tree_control_split_reg_jump_to (view, dirty_trans, NULL, FALSE);
|
|
||||||
|
|
||||||
/* Remove the blank split and re-add - done so we keep it last in list */
|
|
||||||
gnc_tree_model_split_reg_set_blank_split_parent (model, dirty_trans, TRUE);
|
|
||||||
gnc_tree_model_split_reg_set_blank_split_parent (model, dirty_trans, FALSE);
|
|
||||||
|
|
||||||
/* give gtk+ a chance to handle pending events */
|
|
||||||
while (gtk_events_pending ())
|
|
||||||
gtk_main_iteration ();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
/* Set cursor to new column, open for editing */
|
||||||
/* Set cursor to new column, open for editing */
|
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, col, TRUE);
|
||||||
gtk_tree_view_set_cursor (GTK_TREE_VIEW (view), spath, col, TRUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_tree_path_free (spath);
|
gtk_tree_path_free (spath);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -4254,13 +4316,10 @@ gtv_split_reg_motion_cb (GtkTreeSelection *sel, gpointer user_data)
|
|||||||
|
|
||||||
//g_print ("Motion - mpath is %s spath is %s\n\n", gtk_tree_path_to_string (mpath), gtk_tree_path_to_string (spath));
|
//g_print ("Motion - mpath is %s spath is %s\n\n", gtk_tree_path_to_string (mpath), gtk_tree_path_to_string (spath));
|
||||||
|
|
||||||
//g_print("Motion - current_ref is valid %d edit_ref is %d\n", gtk_tree_row_reference_valid (view->priv->current_ref),
|
//g_print("Motion - current_ref is valid %d\n", gtk_tree_row_reference_valid (view->priv->current_ref));
|
||||||
// gtk_tree_row_reference_valid (view->priv->edit_ref));
|
|
||||||
|
|
||||||
//if(gtk_tree_row_reference_valid (view->priv->current_ref))
|
//if (gtk_tree_row_reference_valid (view->priv->current_ref))
|
||||||
// g_print("Motion - Old Current Path is '%s'\n", gtk_tree_path_to_string (gtk_tree_row_reference_get_path (view->priv->current_ref)));
|
// g_print("Motion - Old Current Path is '%s'\n", gtk_tree_path_to_string (gtk_tree_row_reference_get_path (view->priv->current_ref)));
|
||||||
//if(gtk_tree_row_reference_valid (view->priv->edit_ref))
|
|
||||||
// g_print("Motion - Old Edit path is '%s'\n", gtk_tree_path_to_string (gtk_tree_row_reference_get_path (view->priv->edit_ref)));
|
|
||||||
|
|
||||||
/* save the current path */
|
/* save the current path */
|
||||||
if(view->priv->current_ref != NULL)
|
if(view->priv->current_ref != NULL)
|
||||||
@ -4278,67 +4337,26 @@ gtv_split_reg_motion_cb (GtkTreeSelection *sel, gpointer user_data)
|
|||||||
|
|
||||||
gtk_tree_path_free (mpath);
|
gtk_tree_path_free (mpath);
|
||||||
|
|
||||||
//if(gtk_tree_row_reference_valid (view->priv->current_ref))
|
//if (gtk_tree_row_reference_valid (view->priv->current_ref))
|
||||||
// g_print("Motion - Current Path is '%s'\n", gtk_tree_path_to_string (gtk_tree_row_reference_get_path (view->priv->current_ref)));
|
// g_print("Motion - Current Path is '%s'\n", gtk_tree_path_to_string (gtk_tree_row_reference_get_path (view->priv->current_ref)));
|
||||||
//if(gtk_tree_row_reference_valid (view->priv->edit_ref))
|
|
||||||
// g_print("Motion - Edit path is '%s'\n", gtk_tree_path_to_string (gtk_tree_row_reference_get_path (view->priv->edit_ref)));
|
|
||||||
|
|
||||||
gnc_tree_model_split_reg_get_split_and_trans (
|
gnc_tree_model_split_reg_get_split_and_trans (
|
||||||
GNC_TREE_MODEL_SPLIT_REG (model), &m_iter, &is_trow1, &is_trow2, &is_split, &is_blank, &split, &trans);
|
GNC_TREE_MODEL_SPLIT_REG (model), &m_iter, &is_trow1, &is_trow2, &is_split, &is_blank, &split, &trans);
|
||||||
|
|
||||||
//g_print("Motion - get model split %p, trans %p, is_split %d, is_blank %d\n", split, trans, is_split, is_blank);
|
//g_print("## Motion - get model split %p, trans %p, is_split %d, is_blank %d\n", split, trans, is_split, is_blank);
|
||||||
|
|
||||||
//Ask for confirmation if data has been edited, transaction_changed_confirm return TRUE if canceled
|
/* Move the blank split */
|
||||||
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) && transaction_changed_confirm (view, trans))
|
gnc_tree_model_split_reg_set_blank_split_parent (model, trans, FALSE);
|
||||||
{
|
|
||||||
Transaction *dirty_trans;
|
|
||||||
//g_print("Restore position - Cancel / Discard\n");
|
|
||||||
|
|
||||||
/* Restore position - Cancel / Discard */
|
|
||||||
if (view->priv->current_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->current_ref);
|
|
||||||
view->priv->current_ref = NULL;
|
|
||||||
}
|
|
||||||
if (gtk_tree_row_reference_valid (view->priv->edit_ref))
|
|
||||||
view->priv->current_ref = gtk_tree_row_reference_copy (view->priv->edit_ref);
|
|
||||||
|
|
||||||
dirty_trans = gnc_tree_view_split_reg_get_dirty_trans_by_ref (view);
|
|
||||||
|
|
||||||
// Expand trans on split-trans (We only expand on cancel, view->priv->dirty_trans is not NULL on cancel)
|
|
||||||
if ((xaccTransCountSplits (dirty_trans) > 2) && view->priv->dirty_trans != NULL)
|
|
||||||
{
|
|
||||||
// Jump to the first split of dirty_trans.
|
|
||||||
gnc_tree_control_split_reg_jump_to (view, NULL, xaccTransGetSplit (dirty_trans, 0), FALSE);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
// Jump to the dirty_trans.
|
|
||||||
gnc_tree_control_split_reg_jump_to (view, dirty_trans, NULL, FALSE);
|
|
||||||
|
|
||||||
/* Remove the blank split and re-add - done so we keep it last in list */
|
|
||||||
gnc_tree_model_split_reg_set_blank_split_parent (model, dirty_trans, TRUE);
|
|
||||||
gnc_tree_model_split_reg_set_blank_split_parent (model, dirty_trans, FALSE);
|
|
||||||
|
|
||||||
/* give gtk+ a chance to handle pending events */
|
|
||||||
while (gtk_events_pending ())
|
|
||||||
gtk_main_iteration ();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//g_print("Commit and skip\n");
|
|
||||||
/* Commit and skip */
|
|
||||||
/* Move the blank split */
|
|
||||||
gnc_tree_model_split_reg_set_blank_split_parent (model, trans, FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/* Save trans / split / depth to the current values */
|
||||||
old_trans = view->priv->current_trans;
|
old_trans = view->priv->current_trans;
|
||||||
view->priv->current_trans = trans;
|
view->priv->current_trans = trans;
|
||||||
view->priv->current_split = split;
|
view->priv->current_split = split;
|
||||||
view->priv->current_depth = depth;
|
view->priv->current_depth = depth;
|
||||||
|
|
||||||
//g_print("Motion - ** view->priv-> c_trans is %p c_split is %p depth %d **\n\n", view->priv->current_trans, view->priv->current_split, view->priv->current_depth);
|
//g_print("Motion - ** view->priv-> c_trans is %p c_split is %p depth %d, old_trans is %p **\n\n", view->priv->current_trans,
|
||||||
|
// view->priv->current_split, view->priv->current_depth, old_trans);
|
||||||
|
|
||||||
/* Auto expand transaction and collapse previous transaction */
|
/* Auto expand transaction and collapse previous transaction */
|
||||||
if (old_trans != trans)
|
if (old_trans != trans)
|
||||||
{
|
{
|
||||||
@ -4347,8 +4365,12 @@ gtv_split_reg_motion_cb (GtkTreeSelection *sel, gpointer user_data)
|
|||||||
|
|
||||||
if (model->style != REG2_STYLE_JOURNAL)
|
if (model->style != REG2_STYLE_JOURNAL)
|
||||||
{
|
{
|
||||||
|
gnc_tree_view_split_reg_block_selection (view, TRUE);
|
||||||
|
|
||||||
if (gnc_tree_view_split_reg_trans_expanded (view, old_trans))
|
if (gnc_tree_view_split_reg_trans_expanded (view, old_trans))
|
||||||
gnc_tree_view_split_reg_collapse_trans (view, old_trans);
|
gnc_tree_view_split_reg_collapse_trans (view, old_trans);
|
||||||
|
|
||||||
|
gnc_tree_view_split_reg_block_selection (view, FALSE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
gnc_tree_view_split_reg_expand_trans (view, NULL);
|
gnc_tree_view_split_reg_expand_trans (view, NULL);
|
||||||
@ -4367,9 +4389,9 @@ gtv_split_reg_motion_cb (GtkTreeSelection *sel, gpointer user_data)
|
|||||||
|
|
||||||
// Check to see if current trans is expanded and remember
|
// Check to see if current trans is expanded and remember
|
||||||
if (gnc_tree_view_split_reg_trans_expanded (view, trans))
|
if (gnc_tree_view_split_reg_trans_expanded (view, trans))
|
||||||
view->priv->expanded = TRUE;
|
view->priv->expanded = TRUE;
|
||||||
else
|
else
|
||||||
view->priv->expanded = FALSE;
|
view->priv->expanded = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -5200,22 +5222,6 @@ gtv_get_editable_start_editing_cb (GtkCellRenderer *cr, GtkCellEditable *editabl
|
|||||||
}
|
}
|
||||||
|
|
||||||
gtv_split_reg_help (view, cr, viewcol, depth);
|
gtv_split_reg_help (view, cr, viewcol, depth);
|
||||||
//FIXME
|
|
||||||
fpath = gtk_tree_model_sort_convert_path_to_child_path (GTK_TREE_MODEL_SORT (s_model), spath);
|
|
||||||
|
|
||||||
mpath = gtk_tree_model_filter_convert_path_to_child_path (GTK_TREE_MODEL_FILTER (f_model), fpath);
|
|
||||||
|
|
||||||
if (view->priv->edit_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
view->priv->edit_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (model), mpath);
|
|
||||||
|
|
||||||
DEBUG("edit_path is %s", gtk_tree_path_to_string (gtk_tree_row_reference_get_path (view->priv->edit_ref)));
|
|
||||||
gtk_tree_path_free (mpath);
|
|
||||||
gtk_tree_path_free (fpath);
|
|
||||||
//FIXME
|
|
||||||
gtk_tree_path_free (spath);
|
gtk_tree_path_free (spath);
|
||||||
|
|
||||||
view->priv->temp_cr = cr;
|
view->priv->temp_cr = cr;
|
||||||
@ -5266,11 +5272,7 @@ gtv_split_reg_editing_canceled_cb (GtkCellRenderer *cr, gpointer user_data)
|
|||||||
|
|
||||||
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) == FALSE) // Not edited, reset edit path
|
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) == FALSE) // Not edited, reset edit path
|
||||||
{
|
{
|
||||||
if(view->priv->edit_ref != NULL)
|
view->priv->dirty_trans = NULL;
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reset Help text */
|
/* Reset Help text */
|
||||||
@ -5352,35 +5354,6 @@ gnc_tree_view_split_reg_get_dirty_trans (GncTreeViewSplitReg *view)
|
|||||||
return view->priv->dirty_trans;
|
return view->priv->dirty_trans;
|
||||||
}
|
}
|
||||||
|
|
||||||
Transaction *
|
|
||||||
gnc_tree_view_split_reg_get_dirty_trans_by_ref (GncTreeViewSplitReg *view)
|
|
||||||
{
|
|
||||||
GncTreeModelSplitReg *model;
|
|
||||||
GtkTreePath *mpath;
|
|
||||||
Split *split = NULL;
|
|
||||||
Transaction *trans = NULL;
|
|
||||||
gboolean is_trow1, is_trow2, is_split, is_blank;
|
|
||||||
GtkTreeIter m_iter;
|
|
||||||
gboolean valid;
|
|
||||||
|
|
||||||
model = gnc_tree_view_split_reg_get_model_from_view (view);
|
|
||||||
|
|
||||||
mpath = gtk_tree_row_reference_get_path (view->priv->edit_ref);
|
|
||||||
|
|
||||||
// this can be NULL when tabbing off the end of the list.
|
|
||||||
if (mpath == NULL)
|
|
||||||
trans = view->priv->current_trans;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
valid = gtk_tree_model_get_iter (GTK_TREE_MODEL (model), &m_iter, mpath);
|
|
||||||
|
|
||||||
if (valid)
|
|
||||||
gnc_tree_model_split_reg_get_split_and_trans (
|
|
||||||
GNC_TREE_MODEL_SPLIT_REG (model), &m_iter, &is_trow1, &is_trow2, &is_split, &is_blank, &split, &trans);
|
|
||||||
}
|
|
||||||
return trans;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Sets dirty_trans to trans or NULL to clear */
|
/* Sets dirty_trans to trans or NULL to clear */
|
||||||
void
|
void
|
||||||
@ -5392,22 +5365,11 @@ gnc_tree_view_split_reg_set_dirty_trans (GncTreeViewSplitReg *view, Transaction
|
|||||||
|
|
||||||
if (trans == NULL)
|
if (trans == NULL)
|
||||||
{
|
{
|
||||||
if(view->priv->edit_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (FALSE));
|
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (FALSE));
|
||||||
view->priv->dirty_trans = NULL;
|
view->priv->dirty_trans = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(view->priv->edit_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
view->priv->edit_ref = gtk_tree_row_reference_copy (view->priv->current_ref);
|
|
||||||
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (TRUE));
|
g_object_set_data (G_OBJECT (view), "data-edited", GINT_TO_POINTER (TRUE));
|
||||||
view->priv->dirty_trans = trans;
|
view->priv->dirty_trans = trans;
|
||||||
}
|
}
|
||||||
@ -5422,31 +5384,6 @@ gnc_tree_view_split_reg_get_current_path (GncTreeViewSplitReg *view)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Set the Current path to path */
|
|
||||||
void
|
|
||||||
gnc_tree_view_split_reg_set_current_path (GncTreeViewSplitReg *view, GtkTreePath *path)
|
|
||||||
{
|
|
||||||
GncTreeModelSplitReg *model;
|
|
||||||
|
|
||||||
model = gnc_tree_view_split_reg_get_model_from_view (view);
|
|
||||||
|
|
||||||
//FIXME I am not sure this function is needed, it is usualy followed by set selection which
|
|
||||||
// will do this any way ?????
|
|
||||||
|
|
||||||
if (view->priv->current_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->current_ref);
|
|
||||||
view->priv->current_ref = NULL;
|
|
||||||
}
|
|
||||||
view->priv->current_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (model), path);
|
|
||||||
|
|
||||||
//FIXME this is crap - not needed...
|
|
||||||
// view->priv->current_trans = gnc_tree_view_split_reg_get_current_trans (view);
|
|
||||||
// view->priv->current_split = gnc_tree_view_split_reg_get_current_split (view);
|
|
||||||
// view->priv->current_depth = gnc_tree_view_reg_get_selected_row_depth (view);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Reinit transaction / delete the splits */
|
/* Reinit transaction / delete the splits */
|
||||||
void
|
void
|
||||||
gnc_tree_view_split_reg_reinit_trans (GncTreeViewSplitReg *view)
|
gnc_tree_view_split_reg_reinit_trans (GncTreeViewSplitReg *view)
|
||||||
@ -5552,41 +5489,43 @@ gnc_tree_view_split_reg_enter (GncTreeViewSplitReg *view)
|
|||||||
/* Make sure we have stopped editing */
|
/* Make sure we have stopped editing */
|
||||||
gnc_tree_view_split_reg_finish_edit (view);
|
gnc_tree_view_split_reg_finish_edit (view);
|
||||||
|
|
||||||
|
// Reset the transaction confirm flag.
|
||||||
|
view->priv->trans_confirm = RESET;
|
||||||
|
|
||||||
/* Ask for confirmation if data has been edited, transaction_changed_confirm return TRUE if canceled */
|
/* Ask for confirmation if data has been edited, transaction_changed_confirm return TRUE if canceled */
|
||||||
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) && transaction_changed_confirm (view, NULL))
|
if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (view), "data-edited")) && transaction_changed_confirm (view, NULL))
|
||||||
{
|
{
|
||||||
Transaction *dirty_trans;
|
|
||||||
|
|
||||||
/* Restore position - Cancel / Discard */
|
/* Restore position - Cancel / Discard */
|
||||||
if (view->priv->current_ref != NULL)
|
DEBUG("Enter - Restore position - Cancel / Discard");
|
||||||
|
|
||||||
|
if (view->priv->trans_confirm == CANCEL)
|
||||||
{
|
{
|
||||||
gtk_tree_row_reference_free (view->priv->current_ref);
|
DEBUG("Enter - Cancel");
|
||||||
view->priv->current_ref = NULL;
|
|
||||||
|
// Expand trans on split-trans (We only expand on cancel).
|
||||||
|
if ((xaccTransCountSplits (view->priv->dirty_trans) > 2) && view->priv->dirty_trans != NULL)
|
||||||
|
{
|
||||||
|
// Jump to the first split of dirty_trans.
|
||||||
|
gnc_tree_control_split_reg_jump_to (view, NULL, xaccTransGetSplit (view->priv->dirty_trans, 0), FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// Jump to the dirty_trans.
|
||||||
|
gnc_tree_control_split_reg_jump_to (view, view->priv->dirty_trans, NULL, FALSE);
|
||||||
}
|
}
|
||||||
if (gtk_tree_row_reference_valid (view->priv->edit_ref))
|
|
||||||
view->priv->current_ref = gtk_tree_row_reference_copy (view->priv->edit_ref);
|
|
||||||
|
|
||||||
dirty_trans = gnc_tree_view_split_reg_get_dirty_trans_by_ref (view);
|
if (view->priv->trans_confirm == DISCARD)
|
||||||
|
|
||||||
// Expand trans on split-trans (We only expand on cancel, view->priv->dirty_trans is not NULL on cancel)
|
|
||||||
if ((xaccTransCountSplits (dirty_trans) > 2) && view->priv->dirty_trans != NULL)
|
|
||||||
{
|
{
|
||||||
// Jump to the first split of dirty_trans.
|
DEBUG("Enter - Discard");
|
||||||
gnc_tree_control_split_reg_jump_to (view, NULL, xaccTransGetSplit (dirty_trans, 0), FALSE);
|
gnc_tree_view_split_reg_block_selection (view, TRUE);
|
||||||
|
|
||||||
|
// Check to see if dirty_trans expanded, collapse it.
|
||||||
|
if (gnc_tree_view_split_reg_trans_expanded (view, view->priv->dirty_trans))
|
||||||
|
gnc_tree_view_split_reg_collapse_trans (view, view->priv->dirty_trans);
|
||||||
|
|
||||||
|
gnc_tree_view_split_reg_block_selection (view, FALSE);
|
||||||
|
|
||||||
|
view->priv->dirty_trans = NULL;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
// Jump to the dirty_trans.
|
|
||||||
gnc_tree_control_split_reg_jump_to (view, dirty_trans, NULL, FALSE);
|
|
||||||
|
|
||||||
/* Remove the blank split and re-add - done so we keep it last in list */
|
|
||||||
gnc_tree_model_split_reg_set_blank_split_parent (model, dirty_trans, TRUE);
|
|
||||||
gnc_tree_model_split_reg_set_blank_split_parent (model, dirty_trans, FALSE);
|
|
||||||
|
|
||||||
/* give gtk+ a chance to handle pending events */
|
|
||||||
while (gtk_events_pending ())
|
|
||||||
gtk_main_iteration ();
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -5621,12 +5560,6 @@ gnc_tree_view_split_reg_cancel_edit (GncTreeViewSplitReg *view, gboolean reg_clo
|
|||||||
|
|
||||||
split = gnc_tree_model_split_get_blank_split (model);
|
split = gnc_tree_model_split_get_blank_split (model);
|
||||||
xaccSplitReinit (split); // Clear the blank split
|
xaccSplitReinit (split); // Clear the blank split
|
||||||
|
|
||||||
if (view->priv->edit_ref != NULL)
|
|
||||||
{
|
|
||||||
gtk_tree_row_reference_free (view->priv->edit_ref);
|
|
||||||
view->priv->edit_ref = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/* Reset allow changes for reconciled transctions */
|
/* Reset allow changes for reconciled transctions */
|
||||||
view->change_allowed = FALSE;
|
view->change_allowed = FALSE;
|
||||||
@ -5684,7 +5617,7 @@ gnc_tree_view_split_reg_trans_expanded (GncTreeViewSplitReg *view, Transaction *
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Collapse the transaction, if trans is NULL, use current_ref */
|
/* Collapse the transaction, if trans is NULL, use current_ref */
|
||||||
void
|
void
|
||||||
gnc_tree_view_split_reg_collapse_trans (GncTreeViewSplitReg *view, Transaction *trans)
|
gnc_tree_view_split_reg_collapse_trans (GncTreeViewSplitReg *view, Transaction *trans)
|
||||||
{
|
{
|
||||||
|
@ -127,10 +127,6 @@ Split * gnc_tree_view_split_reg_get_current_split (GncTreeViewSplitReg *view);
|
|||||||
|
|
||||||
Transaction * gnc_tree_view_split_reg_get_dirty_trans (GncTreeViewSplitReg *view);
|
Transaction * gnc_tree_view_split_reg_get_dirty_trans (GncTreeViewSplitReg *view);
|
||||||
|
|
||||||
Transaction * gnc_tree_view_split_reg_get_dirty_trans_by_ref (GncTreeViewSplitReg *view);
|
|
||||||
|
|
||||||
void gnc_tree_view_split_reg_set_current_path (GncTreeViewSplitReg *view, GtkTreePath *path);
|
|
||||||
|
|
||||||
GtkTreePath * gnc_tree_view_split_reg_get_current_path (GncTreeViewSplitReg *view);
|
GtkTreePath * gnc_tree_view_split_reg_get_current_path (GncTreeViewSplitReg *view);
|
||||||
|
|
||||||
RowDepth gnc_tree_view_reg_get_selected_row_depth (GncTreeViewSplitReg *view);
|
RowDepth gnc_tree_view_reg_get_selected_row_depth (GncTreeViewSplitReg *view);
|
||||||
@ -150,9 +146,12 @@ void gnc_tree_view_split_reg_collapse_trans (GncTreeViewSplitReg *view, Transact
|
|||||||
const char * gnc_tree_view_split_reg_get_credit_debit_string (GncTreeViewSplitReg *view, gboolean credit);
|
const char * gnc_tree_view_split_reg_get_credit_debit_string (GncTreeViewSplitReg *view, gboolean credit);
|
||||||
|
|
||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
|
/* Get sort model path from the model path */
|
||||||
GtkTreePath * gnc_tree_view_split_reg_get_sort_path_from_model_path (GncTreeViewSplitReg *view, GtkTreePath *mpath);
|
GtkTreePath * gnc_tree_view_split_reg_get_sort_path_from_model_path (GncTreeViewSplitReg *view, GtkTreePath *mpath);
|
||||||
|
|
||||||
|
/* Get model path from the sort model path */
|
||||||
|
GtkTreePath * gnc_tree_view_split_reg_get_model_path_from_sort_path (GncTreeViewSplitReg *view, GtkTreePath *spath);
|
||||||
|
|
||||||
GncTreeModelSplitReg * gnc_tree_view_split_reg_get_model_from_view (GncTreeViewSplitReg *view);
|
GncTreeModelSplitReg * gnc_tree_view_split_reg_get_model_from_view (GncTreeViewSplitReg *view);
|
||||||
|
|
||||||
gboolean gnc_tree_view_split_reg_scroll_to_cell (GncTreeViewSplitReg *view);
|
gboolean gnc_tree_view_split_reg_scroll_to_cell (GncTreeViewSplitReg *view);
|
||||||
|
Loading…
Reference in New Issue
Block a user