From b0046a3699f814f39e31192e21c17c15b0dd8474 Mon Sep 17 00:00:00 2001 From: Jon Trowbridge Date: Mon, 29 Jan 2001 20:27:38 +0000 Subject: Connect to the model's "position" signal. (e_text_init): Set default value 2001-01-29 Jon Trowbridge * gal/e-text/e-text.c (e_text_init): Connect to the model's "position" signal. (e_text_init): Set default value for rgba_object as blue. (e_text_destroy): Disconnect model position signal. (fix_selection): Some extra sanity checking to keep the selection from spilling outside of the bounds of the text string as it expands or contracts. Should be obsolete due to the changes to objectify_uris --- but I'll leave this in here for now, in an attempt to avoid non-\0-terminated strings, segfaults, and all of that fun stuff. (e_text_text_model_position): Move our cursor according to the suggestions made by our ETextModel, via the "position" signal. (text_width_with_objects): Check that text is not NULL. (text_draw_with_objects): Accept an extra GdkGC for use in drawing objects. (e_text_set_arg): Properly handle the "position" signal when changing models. (e_text_draw): Initialize the GC for drawing objects, if necessary. (_insert): Comment out the code that adjustes text->selection_*. The cursor is now moved by the ETextModel directly via the position signal, not by the view. * gal/e-text/e-text-model-uri.c (objectify_uris): Add more sophisticated uri recognition via regular expressions. (objectify_uris): Changed to track position changes as model->text expands and contracts along with the objects. Block the objectification of any chunks of text that straddle our current position. (e_text_model_uri_set_text): Added position info to objectify_uris call. (e_text_model_uri_insert): Added position info to objectify_uris call. (e_text_model_uri_insert_length): Added position info to objectify_uris call. (e_text_model_uri_delete): Added position info to objectify_uris call. * gal/e-text/e-text-model.c (e_text_model_class_init): Added a "position" signal that allows the ETextModel to send cursor positioning information back to any view. We need this for text with objects, where the text string can grow and shrink in ways that the view doesn't expect. (e_text_model_real_insert): Added sanity checking of args and a position emission. (e_text_model_real_insert_length): Added sanity checking of args and a position emission. (e_text_model_real_delete): Added sanity checking of args. (e_text_model_suggest_position): A wrapper around the "position" signal emitter. svn path=/trunk/; revision=7894 --- widgets/text/e-text-model.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'widgets/text/e-text-model.h') diff --git a/widgets/text/e-text-model.h b/widgets/text/e-text-model.h index 7006b24eca..b8029c0e9e 100644 --- a/widgets/text/e-text-model.h +++ b/widgets/text/e-text-model.h @@ -43,7 +43,8 @@ struct _ETextModelClass { GtkObjectClass parent_class; /* Signal */ - void (* changed) (ETextModel *model); + void (* changed) (ETextModel *model); + void (* position) (ETextModel *model, gint position); /* Virtual methods */ char *(* get_text) (ETextModel *model); @@ -68,6 +69,8 @@ void e_text_model_insert(ETextModel *model, gint position, gchar *text); void e_text_model_insert_length(ETextModel *model, gint position, gchar *text, gint length); void e_text_model_delete(ETextModel *model, gint position, gint length); +void e_text_model_suggest_position(ETextModel *model, gint position); + gint e_text_model_object_count(ETextModel *model); const gchar *e_text_model_get_nth_object(ETextModel *model, gint n); void e_text_model_activate_nth_object(ETextModel *model, gint n); -- cgit