Bumped the version number to 0.16.99.0 and GAL_CURRENT to 17.

2001-10-31  Christopher James Lahey  <clahey@ximian.com>

	* configure.in: Bumped the version number to 0.16.99.0 and
	GAL_CURRENT to 17.

From gal/e-table/ChangeLog:

2001-10-31  Christopher James Lahey  <clahey@ximian.com>

	* e-table-item.c (eti_unfreeze): Check for unfreezing past 0 here
	and give a warning.
	(eti_add_table_model): Call eti_freeze here since
	eti_table_model_changed will call unfreeze.

	* e-tree-memory.c (e_tree_memory_node_remove): Send deleted signal
	after freeing the child.

	* e-tree-model.c, e-tree-model.h: Added node_deleted signal.
	removed/deleted signals will always come in pairs in that order
	with a single pre_change for both of them.

	* e-tree-selection-model.c (etsm_node_deleted): Clear the tree on
	deleted here instead of on removed.

	* e-tree-sorted.c (ets_proxy_node_deleted): Chain deleted here.
	Chains to NULL node which is fine for now.

svn path=/trunk/; revision=14557
This commit is contained in:
Christopher James Lahey
2001-10-31 23:42:08 +00:00
committed by Chris Lahey
parent f553e16d8f
commit 71a63f1498
6 changed files with 78 additions and 4 deletions

View File

@ -978,6 +978,7 @@ eti_freeze (ETableItem *eti)
static void
eti_unfreeze (ETableItem *eti)
{
g_return_if_fail (eti->frozen_count != 0);
eti->frozen_count --;
if (eti->frozen_count == 0 && eti->queue_show_cursor) {
eti_show_cursor (eti, 0);
@ -1210,7 +1211,8 @@ eti_add_table_model (ETableItem *eti, ETableModel *table_model)
if (eti->source_model)
gtk_object_ref(GTK_OBJECT(eti->source_model));
}
eti_freeze (eti);
eti_table_model_changed (table_model, eti);
}

View File

@ -571,6 +571,9 @@ e_tree_memory_node_remove (ETreeMemory *etree, ETreePath node)
if (path == etree->priv->root)
etree->priv->root = NULL;
if (!etree->priv->frozen)
e_tree_model_node_deleted(E_TREE_MODEL(etree), path);
return ret;
}

View File

@ -52,6 +52,7 @@ enum {
NODE_COL_CHANGED,
NODE_INSERTED,
NODE_REMOVED,
NODE_DELETED,
LAST_SIGNAL
};
@ -121,6 +122,14 @@ e_tree_model_class_init (GtkObjectClass *klass)
e_marshal_NONE__POINTER_POINTER_INT,
GTK_TYPE_NONE, 3, GTK_TYPE_POINTER, GTK_TYPE_POINTER, GTK_TYPE_INT);
e_tree_model_signals [NODE_DELETED] =
gtk_signal_new ("node_deleted",
GTK_RUN_LAST,
E_OBJECT_CLASS_TYPE (klass),
GTK_SIGNAL_OFFSET (ETreeModelClass, node_deleted),
gtk_marshal_NONE__POINTER,
GTK_TYPE_NONE, 1, GTK_TYPE_POINTER);
E_OBJECT_CLASS_ADD_SIGNALS (klass, e_tree_model_signals, LAST_SIGNAL);
tree_class->get_root = NULL;
@ -165,6 +174,7 @@ e_tree_model_class_init (GtkObjectClass *klass)
tree_class->node_col_changed = NULL;
tree_class->node_inserted = NULL;
tree_class->node_removed = NULL;
tree_class->node_deleted = NULL;
}
static void
@ -312,6 +322,24 @@ e_tree_model_node_removed (ETreeModel *tree_model, ETreePath parent_node, ETree
parent_node, removed_node, old_position);
}
/**
* e_tree_model_node_deleted:
* @tree_model:
* @deleted_node:
*
*
**/
void
e_tree_model_node_deleted (ETreeModel *tree_model, ETreePath deleted_node)
{
g_return_if_fail (tree_model != NULL);
g_return_if_fail (E_IS_TREE_MODEL (tree_model));
gtk_signal_emit (GTK_OBJECT (tree_model),
e_tree_model_signals [NODE_DELETED],
deleted_node);
}
/**

View File

@ -97,6 +97,11 @@ struct ETreeModelClass {
/*
* Signals
*/
/* During remove, the ETreePath of the child is removed from
* the tree but is still valid. At node_deleted, the
* ETreePath is no longer valid.
*/
void (*pre_change) (ETreeModel *etm);
void (*no_change) (ETreeModel *etm);
void (*node_changed) (ETreeModel *etm, ETreePath node);
@ -104,6 +109,7 @@ struct ETreeModelClass {
void (*node_col_changed) (ETreeModel *etm, ETreePath node, int col);
void (*node_inserted) (ETreeModel *etm, ETreePath parent, ETreePath inserted_node);
void (*node_removed) (ETreeModel *etm, ETreePath parent, ETreePath removed_node, int old_position);
void (*node_deleted) (ETreeModel *etm, ETreePath deleted_node);
};
GtkType e_tree_model_get_type (void);
ETreeModel *e_tree_model_new (void);
@ -201,6 +207,8 @@ void e_tree_model_node_removed (ETreeModel *tree_model,
ETreePath parent_node,
ETreePath removed_node,
int old_position);
void e_tree_model_node_deleted (ETreeModel *tree_model,
ETreePath deleted_node);
#ifdef __cplusplus
}

View File

@ -79,6 +79,7 @@ struct ETreeSelectionModelPriv {
int tree_model_node_col_changed_id;
int tree_model_node_inserted_id;
int tree_model_node_removed_id;
int tree_model_node_deleted_id;
int sorted_model_node_resorted_id;
};
@ -378,7 +379,7 @@ etsm_no_change (ETreeModel *etm, ETreeSelectionModel *etsm)
}
static void
etsm_node_changed (ETreeModel *etm, ETreePath node, ETreeSelectionModel *etsm)
clear_tree (ETreeSelectionModel *etsm, ETreeModel *etm)
{
int cursor_row;
@ -407,6 +408,12 @@ etsm_node_changed (ETreeModel *etm, ETreePath node, ETreeSelectionModel *etsm)
g_free (etsm->priv->cursor_save_id);
etsm->priv->cursor_save_id = NULL;
}
static void
etsm_node_changed (ETreeModel *etm, ETreePath node, ETreeSelectionModel *etsm)
{
clear_tree (etsm, etm);
etsm_unfreeze (etsm);
}
@ -429,7 +436,8 @@ etsm_node_col_changed (ETreeModel *etm, ETreePath node, int col, ETreeSelectionM
static void
etsm_node_inserted (ETreeModel *etm, ETreePath parent, ETreePath child, ETreeSelectionModel *etsm)
{
etsm_node_changed(etm, parent, etsm);
clear_tree (etsm, etm);
etsm_unfreeze (etsm);
#if 0
ETreeSelectionModelNode *node;
ETreePath path;
@ -451,7 +459,13 @@ etsm_node_inserted (ETreeModel *etm, ETreePath parent, ETreePath child, ETreeSel
static void
etsm_node_removed (ETreeModel *etm, ETreePath parent, ETreePath child, int old_position, ETreeSelectionModel *etsm)
{
etsm_node_changed(etm, parent, etsm);
}
static void
etsm_node_deleted (ETreeModel *etm, ETreePath parent, ETreePath child, int old_position, ETreeSelectionModel *etsm)
{
clear_tree (etsm, etm);
etsm_unfreeze (etsm);
}
@ -492,6 +506,8 @@ add_model(ETreeSelectionModel *etsm, ETreeModel *model)
GTK_SIGNAL_FUNC (etsm_node_inserted), etsm);
priv->tree_model_node_removed_id = gtk_signal_connect_after (GTK_OBJECT (priv->model), "node_removed",
GTK_SIGNAL_FUNC (etsm_node_removed), etsm);
priv->tree_model_node_deleted_id = gtk_signal_connect_after (GTK_OBJECT (priv->model), "node_deleted",
GTK_SIGNAL_FUNC (etsm_node_deleted), etsm);
}
static void
@ -516,6 +532,8 @@ drop_model(ETreeSelectionModel *etsm)
priv->tree_model_node_inserted_id);
gtk_signal_disconnect (GTK_OBJECT (priv->model),
priv->tree_model_node_removed_id);
gtk_signal_disconnect (GTK_OBJECT (priv->model),
priv->tree_model_node_deleted_id);
gtk_object_unref (GTK_OBJECT (priv->model));
priv->model = NULL;
@ -527,6 +545,7 @@ drop_model(ETreeSelectionModel *etsm)
priv->tree_model_node_col_changed_id = 0;
priv->tree_model_node_inserted_id = 0;
priv->tree_model_node_removed_id = 0;
priv->tree_model_node_deleted_id = 0;
}
@ -1231,6 +1250,7 @@ e_tree_selection_model_init (ETreeSelectionModel *etsm)
priv->tree_model_node_col_changed_id = 0;
priv->tree_model_node_inserted_id = 0;
priv->tree_model_node_removed_id = 0;
priv->tree_model_node_deleted_id = 0;
priv->sorted_model_node_resorted_id = 0;
}

View File

@ -99,6 +99,7 @@ struct ETreeSortedPriv {
int tree_model_node_col_changed_id;
int tree_model_node_inserted_id;
int tree_model_node_removed_id;
int tree_model_node_deleted_id;
int sort_info_changed_id;
int sort_idle_id;
@ -611,6 +612,8 @@ ets_destroy (GtkObject *object)
priv->tree_model_node_inserted_id);
gtk_signal_disconnect (GTK_OBJECT (priv->source),
priv->tree_model_node_removed_id);
gtk_signal_disconnect (GTK_OBJECT (priv->source),
priv->tree_model_node_deleted_id);
gtk_object_unref (GTK_OBJECT (priv->source));
priv->source = NULL;
@ -622,6 +625,7 @@ ets_destroy (GtkObject *object)
priv->tree_model_node_col_changed_id = 0;
priv->tree_model_node_inserted_id = 0;
priv->tree_model_node_removed_id = 0;
priv->tree_model_node_deleted_id = 0;
}
if (priv->sort_info) {
@ -1153,6 +1157,12 @@ ets_proxy_node_removed (ETreeModel *etm, ETreePath parent, ETreePath child, int
}
}
static void
ets_proxy_node_deleted (ETreeModel *etm, ETreePath child, ETreeSorted *ets)
{
e_tree_model_node_deleted(E_TREE_MODEL(ets), NULL);
}
static void
ets_sort_info_changed (ETableSortInfo *sort_info, ETreeSorted *ets)
{
@ -1256,6 +1266,7 @@ e_tree_sorted_init (GtkObject *object)
priv->tree_model_node_col_changed_id = 0;
priv->tree_model_node_inserted_id = 0;
priv->tree_model_node_removed_id = 0;
priv->tree_model_node_deleted_id = 0;
priv->sort_info_changed_id = 0;
priv->sort_idle_id = 0;
@ -1300,6 +1311,8 @@ e_tree_sorted_construct (ETreeSorted *ets, ETreeModel *source, ETableHeader *ful
GTK_SIGNAL_FUNC (ets_proxy_node_inserted), ets);
ets->priv->tree_model_node_removed_id = gtk_signal_connect (GTK_OBJECT (source), "node_removed",
GTK_SIGNAL_FUNC (ets_proxy_node_removed), ets);
ets->priv->tree_model_node_deleted_id = gtk_signal_connect (GTK_OBJECT (source), "node_deleted",
GTK_SIGNAL_FUNC (ets_proxy_node_deleted), ets);
ets->priv->sort_info_changed_id = gtk_signal_connect (GTK_OBJECT (sort_info), "sort_info_changed",
GTK_SIGNAL_FUNC (ets_sort_info_changed), ets);