aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2013-04-12 22:43:24 +0200
committerThomas White <taw@bitwiz.org.uk>2013-04-12 22:43:24 +0200
commit5e6162f72c6202fd2da8dbe6a42204610434299f (patch)
treea3512a134a229bbcfb71ce81491c0a437a0356da /src
parentf2fb1d5309200b5689a7486c19c22ab9aa5915f5 (diff)
Fix cursor position
Diffstat (limited to 'src')
-rw-r--r--src/wrap.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/wrap.c b/src/wrap.c
index 98a1fd7..dcd6996 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -118,8 +118,8 @@ void get_cursor_pos(struct frame *fr, size_t pos,
box = 0;
for ( i=0; i<l->n_boxes-1; i++ ) {
box = i;
- if ( l->boxes[i+1].sc_offset > pos ) break;
if ( l->boxes[i+1].type == WRAP_BOX_SENTINEL ) break;
+ if ( l->boxes[i+1].sc_offset > pos ) break;
*xposd += l->boxes[i].width;
if ( i < l->n_boxes-2 ) {
*xposd += l->boxes[i].sp;
@@ -127,16 +127,23 @@ void get_cursor_pos(struct frame *fr, size_t pos,
}
b = &l->boxes[box];
- pango_glyph_string_index_to_x(b->glyphs, b->text, strlen(b->text),
- &b->item->analysis, pos - b->sc_offset,
- FALSE, &p);
- //printf("offset %i in '%s' -> %i\n", (int)pos-(int)b->sc_offset, b->text, p);
-
- *xposd += p;
- *xposd /= PANGO_SCALE;
- *xposd += fr->lop.pad_l;
- //printf("%i -> line %i, box %i -> %f, %f\n",
- // (int)pos, line, box, *xposd, *yposd);
+ if ( b->type == WRAP_BOX_PANGO ) {
+ pango_glyph_string_index_to_x(b->glyphs, b->text,
+ strlen(b->text),
+ &b->item->analysis,
+ pos - b->sc_offset,
+ FALSE, &p);
+ //printf("offset %i in '%s' -> %i\n",
+ // (int)pos-(int)b->sc_offset, b->text, p);
+
+ *xposd += p;
+ *xposd /= PANGO_SCALE;
+ *xposd += fr->lop.pad_l;
+ //printf("%i -> line %i, box %i -> %f, %f\n",
+ // (int)pos, line, box, *xposd, *yposd);
+
+ } else {
+ }
}