From 2a83a5e2b4d8d566d141e503a3807d7cd4c1bcd8 Mon Sep 17 00:00:00 2001 From: lecoanet Date: Thu, 11 Apr 2002 09:11:13 +0000 Subject: Simplification du protocole de DrawFields, RenderFields, FieldInsertChars, FieldDeleteChars suite au changement de variable dans FieldSet: au lieu de m�moriser wi on m�morise l'item correspondant au fieldset c'est plus logique et �a offre plus de possibilit�s. Correction d'un bug dans DeleteChars et InsertChars: il faut invalider la g�om�trie de l'item afin qu'il refasse le layout des champs. --- generic/Track.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'generic/Track.c') diff --git a/generic/Track.c b/generic/Track.c index e7ebc6b..14c3de2 100644 --- a/generic/Track.c +++ b/generic/Track.c @@ -415,7 +415,7 @@ Init(Item item, track->speed_vector.x = 0.0; track->speed_vector.y = 10.0; } - field_set->wi = wi; + field_set->item = item; field_set->label_format = NULL; /* * Then try to see if some fields are needed. @@ -1264,7 +1264,7 @@ Draw(Item item) /* * Draw the label. */ - FIELD.DrawFields(&track->field_set, item); + FIELD.DrawFields(&track->field_set); } @@ -1525,7 +1525,7 @@ Render(Item item) /* * Render the label. */ - FIELD.RenderFields(&track->field_set, item); + FIELD.RenderFields(&track->field_set); #endif } @@ -2099,10 +2099,10 @@ Part(Item item, *part_spec = Tcl_NewIntObj(*part); } else { + part_str = ""; switch (*part) { default: case ZN_NO_PART: - part_str = ""; break; case CURRENT_POSITION: part_str = "position"; @@ -2119,7 +2119,9 @@ Part(Item item, break; } } - *part_spec = NewStringObj(part_str); + if (part_str[0]) { + *part_spec = NewStringObj(part_str); + } } } return ZN_OK; @@ -2142,7 +2144,7 @@ Index(Item item, int *index) { return FIELD.FieldIndex(&((TrackItem) item)->field_set, field, - item, index_spec, index); + index_spec, index); } @@ -2159,7 +2161,10 @@ InsertChars(Item item, int *index, char *chars) { - FIELD.FieldInsertChars(&((TrackItem) item)->field_set, field, index, chars); + if (FIELD.FieldInsertChars(&((TrackItem) item)->field_set, + field, index, chars)) { + ITEM.Invalidate(item, ZN_COORDS_FLAG); + } } @@ -2176,7 +2181,10 @@ DeleteChars(Item item, int *first, int *last) { - FIELD.FieldDeleteChars(&((TrackItem) item)->field_set, field, first, last); + if (FIELD.FieldDeleteChars(&((TrackItem) item)->field_set, + field, first, last)) { + ITEM.Invalidate(item, ZN_COORDS_FLAG); + } } -- cgit v1.1