summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext')
-rw-r--r--src/glibext/gbufferline.c22
-rw-r--r--src/glibext/linecolumn.c44
-rw-r--r--src/glibext/linecolumn.h3
3 files changed, 57 insertions, 12 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c
index 4eb56d9..8c8f4f6 100644
--- a/src/glibext/gbufferline.c
+++ b/src/glibext/gbufferline.c
@@ -666,8 +666,7 @@ bool g_buffer_line_has_text(const GBufferLine *line, BufferLineColumn first, Buf
char *g_buffer_line_get_text(const GBufferLine *line, BufferLineColumn first, BufferLineColumn end, bool markup)
{
char *result; /* Construction à retourner */
- BufferLineColumn i; /* Boucle de parcours #1 */
- size_t j; /* Boucle de parcours #2 */
+ BufferLineColumn i; /* Boucle de parcours */
char *extra; /* Contenu à intégrer au texte */
result = NULL;
@@ -679,19 +678,18 @@ char *g_buffer_line_get_text(const GBufferLine *line, BufferLineColumn first, Bu
if (i > first && result != NULL)
result = stradd(result, " ");
- for (j = 0; j < line->columns[i].count; j++)
- {
- extra = get_line_segment_text(line->columns[i].segments[j], markup);
+ extra = get_line_column_text(&line->columns[i], markup);
- if (result == NULL)
- result = extra;
+ /* Si la colonne était vide, suivante ! */
+ if (extra == NULL) continue;
- else
- {
- result = stradd(result, extra);
- free(extra);
- }
+ if (result == NULL)
+ result = extra;
+ else
+ {
+ result = stradd(result, extra);
+ free(extra);
}
}
diff --git a/src/glibext/linecolumn.c b/src/glibext/linecolumn.c
index 0c4a77d..0d38b90 100644
--- a/src/glibext/linecolumn.c
+++ b/src/glibext/linecolumn.c
@@ -28,6 +28,9 @@
#include <malloc.h>
+#include "../common/extstr.h"
+
+
/******************************************************************************
* *
@@ -429,6 +432,47 @@ void draw_line_column_segments(const line_column *column, cairo_t *cairo, gint x
/******************************************************************************
* *
+* Paramètres : column = colonne de ligne de texte à venir consulter. *
+* markup = indique si le texte doit être décoré ou non. *
+* *
+* Description : Donne le texte représenté par une colonne de ligne de texte. *
+* *
+* Retour : Texte à libérer de la mémoire après usage. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+char *get_line_column_text(const line_column *column, bool markup)
+{
+ char *result; /* Construction à retourner */
+ size_t i; /* Boucle de parcours */
+ char *extra; /* Contenu à intégrer au texte */
+
+ result = NULL;
+
+ for (i = 0; i < column->count; i++)
+ {
+ extra = get_line_segment_text(column->segments[i], markup);
+
+ if (result == NULL)
+ result = extra;
+
+ else
+ {
+ result = stradd(result, extra);
+ free(extra);
+ }
+
+ }
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : column = colonne de ligne de texte à manipuler. *
* ctx = éléments à disposition pour l'exportation. *
* type = type d'exportation attendue. *
diff --git a/src/glibext/linecolumn.h b/src/glibext/linecolumn.h
index c88baec..5877e36 100644
--- a/src/glibext/linecolumn.h
+++ b/src/glibext/linecolumn.h
@@ -85,6 +85,9 @@ line_segment *get_line_column_content_from_index(const line_column *, size_t);
/* Imprime le contenu d'une colonne de ligne de texte. */
void draw_line_column_segments(const line_column *, cairo_t *, gint, gint, const segcnt_list *);
+/* Donne le texte représenté par une colonne de ligne de texte. */
+char *get_line_column_text(const line_column *, bool);
+
/* Exporte la ligne de texte représentée. */
void export_line_column_segments(const line_column *, buffer_export_context *, BufferExportType, int);