diff options
| author | Cyrille Bagard <nocbos@gmail.com> | 2014-08-26 22:41:12 (GMT) | 
|---|---|---|
| committer | Cyrille Bagard <nocbos@gmail.com> | 2014-08-26 22:41:12 (GMT) | 
| commit | 10b620c3f7d6a9e78aa1e9d6dabef466d0b9e3af (patch) | |
| tree | 3324503e81bdbc83611aa52b4df83b51090d7104 /src/glibext/gcodebuffer.c | |
| parent | 90a79bf4c2c21715e5ef9d8a370928d218c08784 (diff) | |
Looked for coordinates using the new addresses definitions.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@394 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/glibext/gcodebuffer.c')
| -rw-r--r-- | src/glibext/gcodebuffer.c | 27 | 
1 files changed, 14 insertions, 13 deletions
| diff --git a/src/glibext/gcodebuffer.c b/src/glibext/gcodebuffer.c index 708a089..6a21222 100644 --- a/src/glibext/gcodebuffer.c +++ b/src/glibext/gcodebuffer.c @@ -1083,13 +1083,13 @@ gint g_buffer_view_get_height(const GBufferView *view)  *                                                                             *  *  Description : Calcule la position idéale de curseur pour un point donné.   *  *                                                                             * -*  Retour      : Adresse si une a pu être déterminée, VMPA_INVALID sinon.     * +*  Retour      : Adresse si une a pu être déterminée, NULL sinon.             *  *                                                                             *  *  Remarques   : -                                                            *  *                                                                             *  ******************************************************************************/ -vmpa_t g_buffer_view_compute_caret(GBufferView *view, GBufferLine *line, size_t index, gint x, GdkRectangle *caret) +const vmpa2t *g_buffer_view_compute_caret(GBufferView *view, GBufferLine *line, size_t index, gint x, GdkRectangle *caret)  {      gint tmp_x;                             /* Copie de travail modifiable */      GBufferSegment *segment;                /* Segment visé par le pointeur*/ @@ -1098,10 +1098,10 @@ vmpa_t g_buffer_view_compute_caret(GBufferView *view, GBufferLine *line, size_t      tmp_x = x;      tmp_x -= view->left_text; -    if (tmp_x < 0) return VMPA_INVALID; +    if (tmp_x < 0) return NULL;      segment = g_buffer_line_get_segment_at(line, view->max_widths, &tmp_x, true); -    if (segment == NULL) return VMPA_INVALID; +    if (segment == NULL) return NULL;      caret->x = (x - tmp_x) + g_buffer_segment_get_caret_position(segment, tmp_x); @@ -1456,19 +1456,22 @@ GBufferLine *g_buffer_view_find_line_at(GBufferView *view, gint y, size_t *idx)  *                                                                             *  ******************************************************************************/ -bool g_buffer_view_get_address_coordinates(GBufferView *view, vmpa_t addr, gint *x, gint *y) +bool g_buffer_view_get_address_coordinates(GBufferView *view, const vmpa2t *addr, gint *x, gint *y)  { +    bool result;                            /* Bilan à retourner           */      gint lheight;                           /* Hauteur d'une ligne         */ -    vmpa_t current;                         /* Adresse parcourue           */      size_t first;                           /* Première ligne intégrée     */      size_t last;                            /* Dernière ligne intégrée     */      size_t i;                               /* Boucle de parcours          */ +    const vmpa2t *current;                  /* Adresse parcourue           */ +    int ret;                                /* Bilan d'une comparaison     */ + +    result = false;      *x = 0;      *y = 0;      lheight = g_buffer_view_get_line_height(view); -    current = VMPA_MAX;      first = g_code_buffer_get_index_from_address(view->buffer, view->start, true);      last = g_code_buffer_get_index_from_address(view->buffer, view->end, false); @@ -1477,17 +1480,15 @@ bool g_buffer_view_get_address_coordinates(GBufferView *view, vmpa_t addr, gint          for (i = first; i <= last; i++)          {              current = g_buffer_line_get_address(view->buffer->lines[i]); +            ret = cmp_vmpa(current, addr); -            if (current == addr) -                break; - -            if (current > addr) -                return false; +            result = (ret == 0); +            if (ret >= 0) break;              *y += lheight;          } -    return (current == addr); +    return result;  } | 
