summaryrefslogtreecommitdiff
path: root/src/glibext/gbufferline.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r--src/glibext/gbufferline.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c
index af27426..2a3a04f 100644
--- a/src/glibext/gbufferline.c
+++ b/src/glibext/gbufferline.c
@@ -984,6 +984,7 @@ void g_buffer_line_collect_widths(GBufferLine *line, line_width_summary *summary
* Paramètres : line = ligne à venir consulter. *
* index = indice de la colonne visée. *
* summary = résumé des largeurs maximales. *
+* offsets = décalages supplémentaires à appliquer. *
* *
* Description : Fournit la largeur d'une colonne finalement appliquée. *
* *
@@ -993,7 +994,7 @@ void g_buffer_line_collect_widths(GBufferLine *line, line_width_summary *summary
* *
******************************************************************************/
-gint g_buffer_line_compute_max_width(const GBufferLine *line, BufferLineColumn index, const line_width_summary *summary)
+gint g_buffer_line_compute_max_width(const GBufferLine *line, BufferLineColumn index, const line_width_summary *summary, const line_width_summary *offsets)
{
gint result; /* Largeur à retourner */
@@ -1005,6 +1006,9 @@ gint g_buffer_line_compute_max_width(const GBufferLine *line, BufferLineColumn i
else
result = summary->max_widths[index];
+ if (result < offsets->max_widths[index])
+ result = offsets->max_widths[index];
+
return result;
}
@@ -1044,6 +1048,7 @@ const line_segment *g_buffer_line_get_segment_from_coord(const GBufferLine *line
* Paramètres : line = ligne à venir consulter. *
* summary = résumé des largeurs maximales. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* base = position jusqu'au segment trouvé. [OUT] *
* offset = position à la colonne visée. [OUT] *
* dir = direction d'un éventuel déplacement en cours. *
@@ -1058,7 +1063,7 @@ const line_segment *g_buffer_line_get_segment_from_coord(const GBufferLine *line
* *
******************************************************************************/
-bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, gint *base, gint *offset, GdkScrollDirection dir, bool force, col_coord_t *coord)
+bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, const line_width_summary *offsets, gint *base, gint *offset, GdkScrollDirection dir, bool force, col_coord_t *coord)
{
bool result; /* Bilan à retourner */
BufferLineColumn last; /* Dernière colonne remplie */
@@ -1098,7 +1103,7 @@ bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summar
if (i < line->merge_start)
{
- width = g_buffer_line_compute_max_width(line, i, summary);
+ width = g_buffer_line_compute_max_width(line, i, summary, offsets);
/* Si la colonne n'est absolument pas visible, on ne s'arrête pas dessus ! */
if (width == 0) continue;
@@ -1172,7 +1177,7 @@ bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summar
{
if ((i - 1) < line->merge_start)
{
- width = g_buffer_line_compute_max_width(line, i - 1, summary);
+ width = g_buffer_line_compute_max_width(line, i - 1, summary, offsets);
if (width > 0)
*base += (width + COL_MARGIN);
@@ -1250,6 +1255,7 @@ bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summar
* Paramètres : line = ligne à venir consulter. *
* summary = résumé des largeurs maximales. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* base = position jusqu'au segment trouvé. [OUT] *
* offset = position à la colonne visée. [OUT] *
* dir = direction d'un éventuel déplacement en cours. *
@@ -1263,13 +1269,13 @@ bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summar
* *
******************************************************************************/
-const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, gint *base, gint *offset, GdkScrollDirection dir, bool force)
+const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, const line_width_summary *offsets, gint *base, gint *offset, GdkScrollDirection dir, bool force)
{
const line_segment *result; /* Trouvaille à retourner */
col_coord_t coord; /* Emplacement du contenu visé */
bool status; /* Bilan de la localisation */
- status = g_buffer_line_get_coord_at(line, summary, options, base, offset, dir, force, &coord);
+ status = g_buffer_line_get_coord_at(line, summary, options, offsets, base, offset, dir, force, &coord);
if (status)
result = g_buffer_line_get_segment_from_coord(line, &coord);
@@ -1286,6 +1292,7 @@ const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const
* Paramètres : line = ligne à venir consulter. *
* summary = résumé des largeurs maximales. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* base = position jusqu'au segment trouvé. [OUT] *
* offset = position à la colonne visée. [OUT] *
* dir = direction d'un éventuel déplacement en cours. *
@@ -1299,7 +1306,7 @@ const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const
* *
******************************************************************************/
-GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, gint *base, gint *offset, GdkScrollDirection dir, bool force)
+GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, const line_width_summary *offsets, gint *base, gint *offset, GdkScrollDirection dir, bool force)
{
GObject *result; /* Trouvaille à retourner */
col_coord_t target; /* Emplacement du contenu visé */
@@ -1309,7 +1316,7 @@ GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_
result = NULL;
- status = g_buffer_line_get_coord_at(line, summary, options, base, offset, dir, force, &target);
+ status = g_buffer_line_get_coord_at(line, summary, options, offsets, base, offset, dir, force, &target);
if (status)
{
@@ -1338,6 +1345,7 @@ GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_
* coord = cordonnées à consulter puis renseigner. [OUT] *
* summary = résumé des largeurs maximales. *
* options = règles d'affichage des colonnes modulables. *
+* offsets = décalages supplémentaires à appliquer. *
* dir = orientation des recherches. *
* offset = décalage pour amener à l'extrémité nouvelle. [OUT] *
* *
@@ -1349,7 +1357,7 @@ GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_
* *
******************************************************************************/
-bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord, const line_width_summary *summary, const GDisplayOptions *options, GdkScrollDirection dir, gint *offset)
+bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord, const line_width_summary *summary, const GDisplayOptions *options, const line_width_summary *offsets, GdkScrollDirection dir, gint *offset)
{
bool result; /* Bilan à retourner */
size_t count; /* Qté de colonnes en option */
@@ -1435,7 +1443,7 @@ bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord,
if (displayed)
{
- width = g_buffer_line_compute_max_width(line, k, summary);
+ width = g_buffer_line_compute_max_width(line, k, summary, offsets);
if (width > 0)
{
@@ -1535,10 +1543,7 @@ void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const line_width_summ
if (i < line->merge_start)
{
- max_width = g_buffer_line_compute_max_width(line, i, summary);
-
- if (max_width == 0)
- max_width = offsets->max_widths[i];
+ max_width = g_buffer_line_compute_max_width(line, i, summary, offsets);
if (max_width > 0)
x += max_width + COL_MARGIN;