diff options
Diffstat (limited to 'src/glibext/gbuffersegment.c')
-rw-r--r-- | src/glibext/gbuffersegment.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/glibext/gbuffersegment.c b/src/glibext/gbuffersegment.c index 8e7613f..af77c38 100644 --- a/src/glibext/gbuffersegment.c +++ b/src/glibext/gbuffersegment.c @@ -125,6 +125,10 @@ struct _GBufferSegmentClass double x_advances[CAIRO_FONTS_COUNT]; /* Largeurs par caractère */ rendering_pattern_t patterns[RTT_COUNT];/* Modèles d'impression */ + /* Signaux */ + + void (* content_changed) (GBufferSegment *); + }; @@ -296,6 +300,16 @@ static void g_buffer_segment_class_init(GBufferSegmentClass *class) gtk_widget_path_free(path); g_object_unref(context); + /* Signaux */ + + g_signal_new("content-changed", + G_TYPE_BUFFER_SEGMENT, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(GBufferSegmentClass, content_changed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + } @@ -478,6 +492,34 @@ GObject *g_buffer_segment_get_creator(const GBufferSegment *segment) /****************************************************************************** * * +* Paramètres : segment = fragment de texte à mettre à jour. * +* text = chaîne de caractères à traiter. * +* length = quantité de ces caractères. * +* * +* Description : Met à jour le contenu d'un fragment de texte. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void g_buffer_segment_update_text(GBufferSegment *segment, const char *text, size_t length) +{ + free(segment->text); + + segment->text = strndup(text, length); + segment->hash = fnv_64a_hash(segment->text); + + g_buffer_segment_prepare(segment, length); + + g_signal_emit_by_name(segment, "content-changed"); + +} + + +/****************************************************************************** +* * * Paramètres : segment = fragment de texte à consulter. * * ref = segment de référence servant à la comparaison. * * * |