Bumped version number to 0.11.99.4.

2001-09-16  Christopher James Lahey  <clahey@ximian.com>

	* configure.in: Bumped version number to 0.11.99.4.

	* gal/e-text/e-completion-view.c (e_completion_view_construct),
	tests/test-table-1.c (create_table): Changed the parameters to
	e_table_simple_new here to adjust to changes in the interface.

	* gal/widgets/e-categories-master-list-array.c (ecmla_default):
	Fixed a memory leak here.

	* gal/widgets/e-categories.c (e_categories_get_save_id): Added
	get_save_id here so that selection would be maintained across
	changes.

From gal/e-table/ChangeLog:

2001-09-16  Christopher James Lahey  <clahey@ximian.com>

	* e-table-model.c, e-table-model.h (e_table_model_class_init):
	Rearranged order of has_save_id and get_save_id to be more
	consistent with ETree.

	* e-table-selection-model.c, e-table-selection-model.h: Turned on
	the code to maintain selection and cursor across changes if the
	model supports get_save_id.

	* e-table-simple.c, e-table-simple.h: Changed this interface to
	take all of the ETableModel functions in the _new function.

	* e-table-subset.c (etss_has_save_id, etss_get_save_id): Added
	these to properly proxy the save_id functionality.

	* e-tree-memory-callbacks.c, e-tree-memory-callbacks.h,
	e-tree-model.c, e-tree-model.h, e-tree-sorted.c: Made the save_id
	parameter to get_node_by_id be const char * instead of char *.

	* e-tree-table-adapter.c (etta_class_init): Rearranged some
	assignments here to be more consistent.

svn path=/trunk/; revision=12869
This commit is contained in:
Christopher James Lahey
2001-09-17 03:57:12 +00:00
committed by Chris Lahey
parent e38cff691a
commit a513a5f502
14 changed files with 218 additions and 206 deletions

View File

@ -171,20 +171,8 @@ e_table_model_free_value (ETableModel *e_table_model, int col, void *value)
ETM_CLASS (e_table_model)->free_value (e_table_model, col, value);
}
char *
e_table_model_get_save_id(ETableModel *e_table_model, int row)
{
g_return_val_if_fail (e_table_model != NULL, "/");
g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), "/");
if (ETM_CLASS (e_table_model)->get_save_id)
return ETM_CLASS (e_table_model)->get_save_id (e_table_model, row);
else
return NULL;
}
gboolean
e_table_model_has_save_id(ETableModel *e_table_model)
e_table_model_has_save_id (ETableModel *e_table_model)
{
g_return_val_if_fail (e_table_model != NULL, FALSE);
g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), FALSE);
@ -195,6 +183,18 @@ e_table_model_has_save_id(ETableModel *e_table_model)
return FALSE;
}
char *
e_table_model_get_save_id (ETableModel *e_table_model, int row)
{
g_return_val_if_fail (e_table_model != NULL, "/");
g_return_val_if_fail (E_IS_TABLE_MODEL (e_table_model), "/");
if (ETM_CLASS (e_table_model)->get_save_id)
return ETM_CLASS (e_table_model)->get_save_id (e_table_model, row);
else
return NULL;
}
gboolean
e_table_model_has_change_pending(ETableModel *e_table_model)
{
@ -316,8 +316,8 @@ e_table_model_class_init (GtkObjectClass *object_class)
klass->set_value_at = NULL;
klass->is_cell_editable = NULL;
klass->get_save_id = NULL;
klass->has_save_id = NULL;
klass->get_save_id = NULL;
klass->has_change_pending = NULL;

View File

@ -32,8 +32,8 @@ typedef struct {
void (*set_value_at) (ETableModel *etm, int col, int row, const void *value);
gboolean (*is_cell_editable) (ETableModel *etm, int col, int row);
char *(*get_save_id) (ETableModel *etm, int row);
gboolean (*has_save_id) (ETableModel *etm);
char *(*get_save_id) (ETableModel *etm, int row);
gboolean (*has_change_pending) (ETableModel *etm);
@ -94,9 +94,9 @@ gboolean e_table_model_is_cell_editable (ETableModel *e_table_model,
int row);
/**/
gboolean e_table_model_has_save_id (ETableModel *etm);
char *e_table_model_get_save_id (ETableModel *etm,
int row);
gboolean e_table_model_has_save_id (ETableModel *etm);
/**/
gboolean e_table_model_has_change_pending (ETableModel *etm);

View File

@ -26,7 +26,6 @@ enum {
ARG_MODEL,
};
#if 0
static void
save_to_hash(int model_row, gpointer closure)
{
@ -35,7 +34,6 @@ save_to_hash(int model_row, gpointer closure)
g_hash_table_insert(etsm->hash, key, key);
}
#endif
static void
free_key(gpointer key, gpointer value, gpointer closure)
@ -60,22 +58,23 @@ model_pre_change (ETableModel *etm, ETableSelectionModel *etsm)
{
free_hash(etsm);
#if 0
if (etsm->model && (!etsm->hash) && e_table_model_has_save_id(etsm->model)) {
if (etsm->model && e_table_model_has_save_id (etsm->model)) {
gint cursor_row;
etsm->hash = g_hash_table_new(g_str_hash, g_str_equal);
e_selection_model_foreach(E_SELECTION_MODEL(etsm), save_to_hash, etsm);
gtk_object_get(GTK_OBJECT(etsm),
"cursor_row", &cursor_row,
NULL);
if (etsm->cursor_id)
g_free (etsm->cursor_id);
if (cursor_row != -1) {
etsm->cursor_id = e_table_model_get_save_id(etm, cursor_row);
}
}
#endif
}
#if 0
static gint
model_changed_idle(ETableSelectionModel *etsm)
{
@ -83,7 +82,7 @@ model_changed_idle(ETableSelectionModel *etsm)
e_selection_model_clear(E_SELECTION_MODEL(etsm));
if (etsm->hash && etm && e_table_model_has_save_id(etm)) {
if (etsm->cursor_id && etm && e_table_model_has_save_id(etm)) {
int row_count = e_table_model_row_count(etm);
int i;
e_selection_model_array_confirm_row_count(E_SELECTION_MODEL_ARRAY(etsm));
@ -91,8 +90,9 @@ model_changed_idle(ETableSelectionModel *etsm)
char *save_id = e_table_model_get_save_id(etm, i);
if (g_hash_table_lookup(etsm->hash, save_id))
e_selection_model_change_one_row(E_SELECTION_MODEL(etsm), i, TRUE);
if (etsm->cursor_id && !strcmp(etsm->cursor_id, save_id)) {
e_selection_model_change_cursor(E_SELECTION_MODEL(etsm), i, e_selection_model_cursor_row(E_SELECTION_MODEL(etsm)));
e_selection_model_change_cursor(E_SELECTION_MODEL(etsm), i, e_selection_model_cursor_col(E_SELECTION_MODEL(etsm)));
g_free(etsm->cursor_id);
etsm->cursor_id = NULL;
}
@ -103,31 +103,26 @@ model_changed_idle(ETableSelectionModel *etsm)
etsm->model_changed_idle_id = 0;
return FALSE;
}
#endif
static void
model_changed(ETableModel *etm, ETableSelectionModel *etsm)
{
e_selection_model_clear(E_SELECTION_MODEL(etsm));
#if 0
if (!etsm->model_changed_idle_id && etm && e_table_model_has_save_id(etm)) {
etsm->model_changed_idle_id = g_idle_add_full(G_PRIORITY_HIGH, (GSourceFunc) model_changed_idle, etsm, NULL);
}
#endif
}
static void
model_row_changed(ETableModel *etm, int row, ETableSelectionModel *etsm)
{
if (etsm->hash)
free_hash(etsm);
free_hash(etsm);
}
static void
model_cell_changed(ETableModel *etm, int col, int row, ETableSelectionModel *etsm)
{
if (etsm->hash)
free_hash(etsm);
free_hash(etsm);
}
#if 1
@ -135,16 +130,14 @@ static void
model_rows_inserted(ETableModel *etm, int row, int count, ETableSelectionModel *etsm)
{
e_selection_model_array_insert_rows(E_SELECTION_MODEL_ARRAY(etsm), row, count);
if (etsm->hash)
free_hash(etsm);
free_hash(etsm);
}
static void
model_rows_deleted(ETableModel *etm, int row, int count, ETableSelectionModel *etsm)
{
e_selection_model_array_delete_rows(E_SELECTION_MODEL_ARRAY(etsm), row, count);
if (etsm->hash)
free_hash(etsm);
free_hash(etsm);
}
#else
@ -251,7 +244,7 @@ static void
e_table_selection_model_init (ETableSelectionModel *selection)
{
selection->model = NULL;
selection->hash = NULL;
/* selection->hash = NULL;*/
selection->cursor_id = NULL;
selection->model_changed_idle_id = 0;

View File

@ -37,7 +37,7 @@ typedef struct {
guint group_info_changed : 1;
GHashTable *hash;
gchar *cursor_id;
char *cursor_id;
} ETableSelectionModel;
typedef struct {

View File

@ -13,11 +13,6 @@
#include <config.h>
#include "e-table-simple.h"
enum {
ARG_0,
ARG_APPEND_ROW,
};
#define PARENT_TYPE e_table_model_get_type ()
static int
@ -42,6 +37,15 @@ simple_row_count (ETableModel *etm)
return 0;
}
static void
simple_append_row (ETableModel *etm, ETableModel *source, int row)
{
ETableSimple *simple = E_TABLE_SIMPLE(etm);
if (simple->append_row)
simple->append_row (etm, source, row, simple->data);
}
static void *
simple_value_at (ETableModel *etm, int col, int row)
{
@ -73,6 +77,28 @@ simple_is_cell_editable (ETableModel *etm, int col, int row)
return FALSE;
}
static gboolean
simple_has_save_id (ETableModel *etm)
{
ETableSimple *simple = E_TABLE_SIMPLE(etm);
if (simple->has_save_id)
return simple->has_save_id (etm, simple->data);
else
return FALSE;
}
static char *
simple_get_save_id (ETableModel *etm, int row)
{
ETableSimple *simple = E_TABLE_SIMPLE(etm);
if (simple->get_save_id)
return simple->get_save_id (etm, row, simple->data);
else
return NULL;
}
/* The default for simple_duplicate_value is to return the raw value. */
static void *
simple_duplicate_value (ETableModel *etm, int col, const void *value)
@ -127,63 +153,27 @@ simple_value_to_string (ETableModel *etm, int col, const void *value)
return g_strdup ("");
}
static void
simple_append_row (ETableModel *etm, ETableModel *source, int row)
{
ETableSimple *simple = E_TABLE_SIMPLE(etm);
if (simple->append_row)
simple->append_row (etm, source, row, simple->data);
}
static void
simple_get_arg (GtkObject *o, GtkArg *arg, guint arg_id)
{
ETableSimple *simple = E_TABLE_SIMPLE (o);
switch (arg_id){
case ARG_APPEND_ROW:
GTK_VALUE_POINTER(*arg) = simple->append_row;
break;
}
}
static void
simple_set_arg (GtkObject *o, GtkArg *arg, guint arg_id)
{
ETableSimple *simple = E_TABLE_SIMPLE (o);
switch (arg_id){
case ARG_APPEND_ROW:
simple->append_row = GTK_VALUE_POINTER(*arg);
break;
default:
arg->type = GTK_TYPE_INVALID;
}
}
static void
e_table_simple_class_init (GtkObjectClass *object_class)
{
ETableModelClass *model_class = (ETableModelClass *) object_class;
object_class->set_arg = simple_set_arg;
object_class->get_arg = simple_get_arg;
model_class->column_count = simple_column_count;
model_class->row_count = simple_row_count;
model_class->append_row = simple_append_row;
model_class->column_count = simple_column_count;
model_class->row_count = simple_row_count;
model_class->value_at = simple_value_at;
model_class->set_value_at = simple_set_value_at;
model_class->is_cell_editable = simple_is_cell_editable;
model_class->duplicate_value = simple_duplicate_value;
model_class->free_value = simple_free_value;
model_class->initialize_value = simple_initialize_value;
model_class->value_is_empty = simple_value_is_empty;
model_class->value_to_string = simple_value_to_string;
model_class->append_row = simple_append_row;
model_class->value_at = simple_value_at;
model_class->set_value_at = simple_set_value_at;
model_class->is_cell_editable = simple_is_cell_editable;
gtk_object_add_arg_type ("ETableSimple::append_row", GTK_TYPE_POINTER,
GTK_ARG_READWRITE, ARG_APPEND_ROW);
model_class->has_save_id = simple_has_save_id;
model_class->get_save_id = simple_get_save_id;
model_class->duplicate_value = simple_duplicate_value;
model_class->free_value = simple_free_value;
model_class->initialize_value = simple_initialize_value;
model_class->value_is_empty = simple_value_is_empty;
model_class->value_to_string = simple_value_to_string;
}
GtkType
@ -237,33 +227,45 @@ e_table_simple_get_type (void)
* object).
*/
ETableModel *
e_table_simple_new (ETableSimpleColumnCountFn col_count,
ETableSimpleRowCountFn row_count,
ETableSimpleValueAtFn value_at,
ETableSimpleSetValueAtFn set_value_at,
ETableSimpleIsCellEditableFn is_cell_editable,
ETableSimpleDuplicateValueFn duplicate_value,
ETableSimpleFreeValueFn free_value,
ETableSimpleInitializeValueFn initialize_value,
ETableSimpleValueIsEmptyFn value_is_empty,
ETableSimpleValueToStringFn value_to_string,
void *data)
e_table_simple_new (ETableSimpleColumnCountFn col_count,
ETableSimpleRowCountFn row_count,
ETableSimpleAppendRowFn append_row,
ETableSimpleValueAtFn value_at,
ETableSimpleSetValueAtFn set_value_at,
ETableSimpleIsCellEditableFn is_cell_editable,
ETableSimpleHasSaveIdFn has_save_id,
ETableSimpleGetSaveIdFn get_save_id,
ETableSimpleDuplicateValueFn duplicate_value,
ETableSimpleFreeValueFn free_value,
ETableSimpleInitializeValueFn initialize_value,
ETableSimpleValueIsEmptyFn value_is_empty,
ETableSimpleValueToStringFn value_to_string,
void *data)
{
ETableSimple *et;
et = gtk_type_new (e_table_simple_get_type ());
et = gtk_type_new (e_table_simple_get_type ());
et->col_count = col_count;
et->row_count = row_count;
et->append_row = append_row;
et->value_at = value_at;
et->set_value_at = set_value_at;
et->is_cell_editable = is_cell_editable;
et->has_save_id = has_save_id;
et->get_save_id = get_save_id;
et->duplicate_value = duplicate_value;
et->free_value = free_value;
et->initialize_value = initialize_value;
et->value_is_empty = value_is_empty;
et->value_to_string = value_to_string;
et->data = data;
et->col_count = col_count;
et->row_count = row_count;
et->value_at = value_at;
et->set_value_at = set_value_at;
et->is_cell_editable = is_cell_editable;
et->duplicate_value = duplicate_value;
et->free_value = free_value;
et->initialize_value = initialize_value;
et->value_is_empty = value_is_empty;
et->value_to_string = value_to_string;
et->data = data;
return (ETableModel *) et;
}
}

View File

@ -22,6 +22,9 @@ typedef void *(*ETableSimpleValueAtFn) (ETableModel *etm, int col,
typedef void (*ETableSimpleSetValueAtFn) (ETableModel *etm, int col, int row, const void *val, void *data);
typedef gboolean (*ETableSimpleIsCellEditableFn) (ETableModel *etm, int col, int row, void *data);
typedef gboolean (*ETableSimpleHasSaveIdFn) (ETableModel *etm, void *data);
typedef char *(*ETableSimpleGetSaveIdFn) (ETableModel *etm, int row, void *data);
typedef void *(*ETableSimpleDuplicateValueFn) (ETableModel *etm, int col, const void *val, void *data);
typedef void (*ETableSimpleFreeValueFn) (ETableModel *etm, int col, void *val, void *data);
typedef void *(*ETableSimpleInitializeValueFn) (ETableModel *etm, int col, void *data);
@ -39,6 +42,9 @@ typedef struct {
ETableSimpleSetValueAtFn set_value_at;
ETableSimpleIsCellEditableFn is_cell_editable;
ETableSimpleHasSaveIdFn has_save_id;
ETableSimpleGetSaveIdFn get_save_id;
ETableSimpleDuplicateValueFn duplicate_value;
ETableSimpleFreeValueFn free_value;
ETableSimpleInitializeValueFn initialize_value;
@ -51,21 +57,25 @@ typedef struct {
ETableModelClass parent_class;
} ETableSimpleClass;
GtkType e_table_simple_get_type (void);
GtkType e_table_simple_get_type (void);
ETableModel *e_table_simple_new (ETableSimpleColumnCountFn col_count,
ETableSimpleRowCountFn row_count,
ETableModel *e_table_simple_new (ETableSimpleColumnCountFn col_count,
ETableSimpleRowCountFn row_count,
ETableSimpleAppendRowFn append_row,
ETableSimpleValueAtFn value_at,
ETableSimpleSetValueAtFn set_value_at,
ETableSimpleIsCellEditableFn is_cell_editable,
ETableSimpleValueAtFn value_at,
ETableSimpleSetValueAtFn set_value_at,
ETableSimpleIsCellEditableFn is_cell_editable,
ETableSimpleDuplicateValueFn duplicate_value,
ETableSimpleFreeValueFn free_value,
ETableSimpleInitializeValueFn initialize_value,
ETableSimpleValueIsEmptyFn value_is_empty,
ETableSimpleValueToStringFn value_to_string,
void *data);
ETableSimpleHasSaveIdFn has_save_id,
ETableSimpleGetSaveIdFn get_save_id,
ETableSimpleDuplicateValueFn duplicate_value,
ETableSimpleFreeValueFn free_value,
ETableSimpleInitializeValueFn initialize_value,
ETableSimpleValueIsEmptyFn value_is_empty,
ETableSimpleValueToStringFn value_to_string,
void *data);
#ifdef __cplusplus
}

View File

@ -25,6 +25,44 @@ static ETableModelClass *etss_parent_class;
#define ETSS_CLASS(object) (E_TABLE_SUBSET_CLASS(GTK_OBJECT(object)->klass))
static gint
etss_get_view_row (ETableSubset *etss, int row)
{
int limit;
const int n = etss->n_map;
const int * const map_table = etss->map_table;
int i;
limit = MIN(n, etss->last_access + 10);
for (i = etss->last_access; i < limit; i++) {
if (map_table [i] == row){
d(g_print("a) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return i;
}
}
limit = MAX(0, etss->last_access - 10);
for (i = etss->last_access - 1; i >= limit; i--) {
if (map_table [i] == row){
e_table_model_row_changed (E_TABLE_MODEL (etss), i);
d(g_print("b) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return i;
}
}
for (i = 0; i < n; i++){
if (map_table [i] == row){
e_table_model_row_changed (E_TABLE_MODEL (etss), i);
d(g_print("c) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return i;
}
}
return -1;
}
static void
etss_destroy (GtkObject *object)
{
@ -103,6 +141,22 @@ etss_is_cell_editable (ETableModel *etm, int col, int row)
return e_table_model_is_cell_editable (etss->source, col, etss->map_table [row]);
}
static gboolean
etss_has_save_id (ETableModel *etm)
{
ETableSubset *etss = (ETableSubset *)etm;
return e_table_model_has_save_id (etss->source);
}
static char *
etss_get_save_id (ETableModel *etm, int row)
{
ETableSubset *etss = (ETableSubset *)etm;
return e_table_model_get_save_id (etss->source, etss->map_table [row]);
}
static void
etss_append_row (ETableModel *etm, ETableModel *source, int row)
{
@ -162,10 +216,15 @@ etss_class_init (GtkObjectClass *object_class)
table_class->column_count = etss_column_count;
table_class->row_count = etss_row_count;
table_class->append_row = etss_append_row;
table_class->value_at = etss_value_at;
table_class->set_value_at = etss_set_value_at;
table_class->is_cell_editable = etss_is_cell_editable;
table_class->append_row = etss_append_row;
table_class->has_save_id = etss_has_save_id;
table_class->get_save_id = etss_get_save_id;
table_class->duplicate_value = etss_duplicate_value;
table_class->free_value = etss_free_value;
table_class->initialize_value = etss_initialize_value;
@ -203,77 +262,17 @@ etss_proxy_model_changed_real (ETableSubset *etss, ETableModel *etm)
static void
etss_proxy_model_row_changed_real (ETableSubset *etss, ETableModel *etm, int row)
{
int limit;
const int n = etss->n_map;
const int * const map_table = etss->map_table;
int i;
limit = MIN(n, etss->last_access + 10);
for (i = etss->last_access; i < limit; i++) {
if (map_table [i] == row){
e_table_model_row_changed (E_TABLE_MODEL (etss), i);
d(g_print("a) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return;
}
}
limit = MAX(0, etss->last_access - 10);
for (i = etss->last_access - 1; i >= limit; i--) {
if (map_table [i] == row){
e_table_model_row_changed (E_TABLE_MODEL (etss), i);
d(g_print("b) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return;
}
}
for (i = 0; i < n; i++){
if (map_table [i] == row){
e_table_model_row_changed (E_TABLE_MODEL (etss), i);
d(g_print("c) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return;
}
}
int view_row = etss_get_view_row (etss, row);
if (view_row != -1)
e_table_model_row_changed (E_TABLE_MODEL (etss), view_row);
}
static void
etss_proxy_model_cell_changed_real (ETableSubset *etss, ETableModel *etm, int col, int row)
{
int limit;
const int n = etss->n_map;
const int * const map_table = etss->map_table;
int i;
limit = MIN(n, etss->last_access + 10);
for (i = etss->last_access; i < limit; i++) {
if (map_table [i] == row){
e_table_model_cell_changed (E_TABLE_MODEL (etss), col, i);
d(g_print("d) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return;
}
}
limit = MAX(0, etss->last_access - 10);
for (i = etss->last_access - 1; i >= limit; i--) {
if (map_table [i] == row){
e_table_model_cell_changed (E_TABLE_MODEL (etss), col, i);
d(g_print("e) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return;
}
}
for (i = 0; i < n; i++){
if (map_table [i] == row){
e_table_model_cell_changed (E_TABLE_MODEL (etss), col, i);
d(g_print("f) Found %d from %d\n", i, etss->last_access));
etss->last_access = i;
return;
}
}
int view_row = etss_get_view_row (etss, row);
if (view_row != -1)
e_table_model_cell_changed (E_TABLE_MODEL (etss), col, view_row);
}
static void

View File

@ -69,7 +69,7 @@ etmc_has_get_node_by_id (ETreeModel *etm)
}
static ETreePath
etmc_get_node_by_id (ETreeModel *etm, gchar *save_id)
etmc_get_node_by_id (ETreeModel *etm, const char *save_id)
{
ETreeMemoryCallbacks *etmc = E_TREE_MEMORY_CALLBACKS(etm);

View File

@ -24,7 +24,7 @@ typedef gboolean (*ETreeMemoryCallbacksHasSaveIdFn) (ETreeModel *etre
typedef gchar *(*ETreeMemoryCallbacksGetSaveIdFn) (ETreeModel *etree, ETreePath path, void *model_data);
typedef gboolean (*ETreeMemoryCallbacksHasGetNodeByIdFn) (ETreeModel *etree, void *model_data);
typedef ETreePath (*ETreeMemoryCallbacksGetNodeByIdFn) (ETreeModel *etree, gchar *save_id, void *model_data);
typedef ETreePath (*ETreeMemoryCallbacksGetNodeByIdFn) (ETreeModel *etree, const char *save_id, void *model_data);
typedef void* (*ETreeMemoryCallbacksValueAtFn) (ETreeModel *etree, ETreePath path, int col, void *model_data);
typedef void (*ETreeMemoryCallbacksSetValueAtFn) (ETreeModel *etree, ETreePath path, int col, const void *val, void *model_data);

View File

@ -620,7 +620,7 @@ e_tree_model_has_get_node_by_id (ETreeModel *etree)
* return values: The path for this save id.
*/
ETreePath
e_tree_model_get_node_by_id (ETreeModel *etree, gchar *save_id)
e_tree_model_get_node_by_id (ETreeModel *etree, const char *save_id)
{
g_return_val_if_fail (etree != NULL, NULL);
g_return_val_if_fail (E_IS_TREE_MODEL (etree), NULL);

View File

@ -54,7 +54,7 @@ struct ETreeModelClass {
gchar *(*get_save_id) (ETreeModel *etm, ETreePath node);
gboolean (*has_get_node_by_id) (ETreeModel *etm);
ETreePath (*get_node_by_id) (ETreeModel *etm, gchar *save_id);
ETreePath (*get_node_by_id) (ETreeModel *etm, const char *save_id);
gboolean (*has_change_pending) (ETreeModel *etm);
@ -119,7 +119,7 @@ gchar *e_tree_model_get_save_id (ETreeModel *model,
gboolean e_tree_model_has_get_node_by_id (ETreeModel *model);
ETreePath e_tree_model_get_node_by_id (ETreeModel *model,
gchar *save_id);
const char *save_id);
gboolean e_tree_model_has_change_pending (ETreeModel *model);

View File

@ -847,7 +847,7 @@ ets_has_get_node_by_id (ETreeModel *etm)
}
static ETreePath
ets_get_node_by_id (ETreeModel *etm, gchar *save_id)
ets_get_node_by_id (ETreeModel *etm, const char *save_id)
{
ETreeSorted *ets = E_TREE_SORTED(etm);
ETreePath node;

View File

@ -553,14 +553,17 @@ etta_class_init (ETreeTableAdapterClass *klass)
object_class->destroy = etta_destroy;
table_class->column_count = etta_column_count;
table_class->has_save_id = etta_has_save_id;
table_class->get_save_id = etta_get_save_id;
table_class->has_change_pending = etta_has_change_pending;
table_class->row_count = etta_row_count;
table_class->append_row = etta_append_row;
table_class->value_at = etta_value_at;
table_class->set_value_at = etta_set_value_at;
table_class->is_cell_editable = etta_is_cell_editable;
table_class->append_row = etta_append_row;
table_class->has_save_id = etta_has_save_id;
table_class->get_save_id = etta_get_save_id;
table_class->has_change_pending = etta_has_change_pending;
table_class->duplicate_value = etta_duplicate_value;
table_class->free_value = etta_free_value;
table_class->initialize_value = etta_initialize_value;

View File

@ -732,9 +732,14 @@ e_completion_view_construct (ECompletionView *cv, ECompletion *completion)
cv->model = e_table_simple_new (table_col_count,
table_row_count,
NULL,
table_value_at,
NULL,
table_is_cell_editable,
NULL, NULL,
NULL, NULL, NULL, NULL,
table_value_to_string,
cv);