summaryrefslogtreecommitdiff
path: root/src/glibext/gbufferview.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext/gbufferview.c')
-rw-r--r--src/glibext/gbufferview.c51
1 files changed, 31 insertions, 20 deletions
diff --git a/src/glibext/gbufferview.c b/src/glibext/gbufferview.c
index 79a475e..bc8cf54 100644
--- a/src/glibext/gbufferview.c
+++ b/src/glibext/gbufferview.c
@@ -77,10 +77,10 @@ static void g_buffer_view_finalize(GBufferView *);
static void on_buffer_cache_size_changed(const GBufferCache *, bool, size_t, size_t, GBufferView *);
/* Calcule la position idéale de curseur pour un point donné. */
-bool _g_buffer_view_compute_caret_full(GBufferView *, gint, GBufferLine *, size_t, const GDisplayOptions *, cairo_rectangle_int_t *, GLineCursor **);
+bool _g_buffer_view_compute_caret_full(GBufferView *, gint, GBufferLine *, size_t, const GDisplayOptions *, const line_width_summary *, cairo_rectangle_int_t *, GLineCursor **);
/* Déplace le curseur au sein d'une vue de tampon. */
-static bool _g_buffer_view_move_caret(GBufferView *, const GBufferLine *, size_t, cairo_rectangle_int_t *, bool, GdkScrollDirection, const GDisplayOptions *);
+static bool _g_buffer_view_move_caret(GBufferView *, const GBufferLine *, size_t, cairo_rectangle_int_t *, bool, GdkScrollDirection, const GDisplayOptions *, const line_width_summary *);
/* Fournit la ligne présente à une ordonnée donnée. */
@@ -579,6 +579,7 @@ gint g_buffer_view_get_height(const GBufferView *view)
* x = abscisse proposée pour le nouvel emplacement. *
* y = ordonnée proposée pour le nouvel emplacement. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* caret = position du curseur à construire. [OUT] *
* cursor = emplacement correspondant à cette position. [OUT] *
* *
@@ -590,7 +591,7 @@ gint g_buffer_view_get_height(const GBufferView *view)
* *
******************************************************************************/
-bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const GDisplayOptions *options, cairo_rectangle_int_t *caret, GLineCursor **cursor)
+bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const GDisplayOptions *options, const line_width_summary *offsets, cairo_rectangle_int_t *caret, GLineCursor **cursor)
{
bool result; /* Bilan à retourner */
gint lheight; /* Hauteur d'une ligne */
@@ -615,7 +616,7 @@ bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const G
/* Calcul d'une position */
- result = _g_buffer_view_compute_caret_full(view, x, line, index, options, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, x, line, index, options, offsets, caret, cursor);
g_object_unref(G_OBJECT(line));
@@ -633,6 +634,7 @@ bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const G
* line = ligne correspondant à la position. *
* index = indice de cette même ligne dans le tampon. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* caret = position du curseur à construire. [OUT] *
* cursor = emplacement correspondant à cette position. [OUT] *
* *
@@ -644,7 +646,7 @@ bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const G
* *
******************************************************************************/
-bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *line, size_t index, const GDisplayOptions *options, cairo_rectangle_int_t *caret, GLineCursor **cursor)
+bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *line, size_t index, const GDisplayOptions *options, const line_width_summary *offsets, cairo_rectangle_int_t *caret, GLineCursor **cursor)
{
bool result; /* Bilan à retourner */
gint text_pos; /* Abscisse de départ du texte */
@@ -668,7 +670,7 @@ bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *l
x -= text_pos;
- status = g_buffer_line_get_coord_at(line, &summary, options, &base, &x,
+ status = g_buffer_line_get_coord_at(line, &summary, options, offsets, &base, &x,
GDK_SCROLL_LEFT, true, (col_coord_t []) { { 0 } });
if (!status)
@@ -705,6 +707,7 @@ bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *l
* ctrl = indique la demande d'un parcours rapide. *
* dir = direction du parcours. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* *
* Description : Déplace le curseur au sein d'une vue de tampon. *
* *
@@ -714,7 +717,7 @@ bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *l
* *
******************************************************************************/
-static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line, size_t index, cairo_rectangle_int_t *caret, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options)
+static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line, size_t index, cairo_rectangle_int_t *caret, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options, const line_width_summary *offsets)
{
bool result; /* Bilan à retourner */
gint text_pos; /* Abscisse de départ du texte */
@@ -740,7 +743,7 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
/* Déplacement au sein du segment courant ? */
- result = g_buffer_line_get_coord_at(line, &summary, options, &base, &offset, dir, false, &coord);
+ result = g_buffer_line_get_coord_at(line, &summary, options, offsets, &base, &offset, dir, false, &coord);
if (result)
{
@@ -756,7 +759,7 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
{
base = 0;
- result = g_buffer_line_find_near_coord(line, &coord, &summary, options, dir, &offset);
+ result = g_buffer_line_find_near_coord(line, &coord, &summary, options, offsets, dir, &offset);
}
@@ -778,6 +781,7 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
* ctrl = indique la demande d'un parcours rapide. *
* dir = direction du parcours. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* caret = position du curseur à faire évoluer. [OUT] *
* cursor = emplacement correspondant à cette position. [OUT] *
* *
@@ -789,7 +793,7 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
* *
******************************************************************************/
-bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options, cairo_rectangle_int_t *caret, GLineCursor **cursor)
+bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options, const line_width_summary *offsets, cairo_rectangle_int_t *caret, GLineCursor **cursor)
{
bool result; /* Bilan à retourner */
size_t index; /* Indice de ligne de tampon */
@@ -817,7 +821,8 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
index--;
other = g_buffer_cache_find_line_by_index(view->cache, index);
- result = _g_buffer_view_compute_caret_full(view, caret->x, other, index, options, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, caret->x, other, index,
+ options, offsets, caret, cursor);
g_object_unref(G_OBJECT(other));
}
@@ -831,7 +836,8 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
index++;
other = g_buffer_cache_find_line_by_index(view->cache, index);
- result = _g_buffer_view_compute_caret_full(view, caret->x, other, index, options, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, caret->x, other, index,
+ options, offsets, caret, cursor);
g_object_unref(G_OBJECT(other));
}
@@ -840,7 +846,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
case GDK_SCROLL_LEFT:
- moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_LEFT, options);
+ moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_LEFT, options, offsets);
if (moved)
{
@@ -853,7 +859,8 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
index--;
other = g_buffer_cache_find_line_by_index(view->cache, index);
- result = _g_buffer_view_compute_caret_full(view, INT_MAX, other, index, options, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, INT_MAX, other, index,
+ options, offsets, caret, cursor);
g_object_unref(G_OBJECT(other));
}
@@ -862,7 +869,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
case GDK_SCROLL_RIGHT:
- moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_RIGHT, options);
+ moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_RIGHT, options, offsets);
if (moved)
{
@@ -877,7 +884,8 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
text_pos = g_buffer_cache_get_text_position(view->cache);
other = g_buffer_cache_find_line_by_index(view->cache, index);
- result = _g_buffer_view_compute_caret_full(view, text_pos, other, index, options, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, text_pos, other, index,
+ options, offsets, caret, cursor);
g_object_unref(G_OBJECT(other));
}
@@ -910,6 +918,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
* x = abscisse de la zone principale à traiter. *
* y = ordonnée de la zone principale à traiter. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* *
* Description : Trouve le créateur à l'origine d'un emplacement donné. *
* *
@@ -919,7 +928,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
* *
******************************************************************************/
-GObject *g_buffer_view_find_creator(GBufferView *view, gint x, gint y, const GDisplayOptions *options)
+GObject *g_buffer_view_find_creator(GBufferView *view, gint x, gint y, const GDisplayOptions *options, const line_width_summary *offsets)
{
GObject *result; /* Trouvaille à faire remonter */
gint text_pos; /* Abscisse de départ du texte */
@@ -957,7 +966,8 @@ GObject *g_buffer_view_find_creator(GBufferView *view, gint x, gint y, const GDi
x -= text_pos;
- result = g_buffer_line_get_creator_at(line, &summary, options, (gint []) { 0 }, &x, GDK_SCROLL_LEFT, false);
+ result = g_buffer_line_get_creator_at(line, &summary, options, offsets,
+ (gint []) { 0 }, &x, GDK_SCROLL_LEFT, false);
g_object_unref(G_OBJECT(line));
@@ -1003,6 +1013,7 @@ bool g_buffer_view_unhighlight_segments(GBufferView *view)
* x = abscisse de la zone principale à traiter. *
* y = ordonnée de la zone principale à traiter. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* *
* Description : Surligne tous les segments similaires à celui sous la souris.*
* *
@@ -1012,7 +1023,7 @@ bool g_buffer_view_unhighlight_segments(GBufferView *view)
* *
******************************************************************************/
-bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const GDisplayOptions *options)
+bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const GDisplayOptions *options, const line_width_summary *offsets)
{
bool result; /* Besoin à faire remonter */
gint text_pos; /* Abscisse de départ du texte */
@@ -1056,7 +1067,7 @@ bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const G
x -= text_pos;
- segment = g_buffer_line_get_segment_at(line, &summary, options,
+ segment = g_buffer_line_get_segment_at(line, &summary, options, offsets,
(gint []) { 0 }, &x, GDK_SCROLL_LEFT, true);
g_object_unref(G_OBJECT(line));