diff options
author | Thomas White <taw@bitwiz.org.uk> | 2011-10-04 22:42:02 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2011-10-04 22:42:02 +0200 |
commit | 0d8188624b9668834e22127025b67e3dbd832ecd (patch) | |
tree | 7f1e91218d82627f9a16db0170673e17ebf62c7b | |
parent | 71d3e037a6934fbb4b57aed30c77efcc1efff3b0 (diff) |
Fix cursor (finally..?)
-rw-r--r-- | src/tool_text.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/tool_text.c b/src/tool_text.c index 8866d61..53abe19 100644 --- a/src/tool_text.c +++ b/src/tool_text.c @@ -197,7 +197,7 @@ void insert_text(struct object *op, char *t) { struct text_object *o = (struct text_object *)op; char *tmp; - size_t tlen, olen; + size_t tlen, olen, offs; int i; assert(o->base.type == TEXT); @@ -219,14 +219,16 @@ void insert_text(struct object *op, char *t) tmp = malloc(o->text_len); if ( tmp == NULL ) return; - for ( i=0; i<o->insertion_point; i++ ) { + offs = o->insertion_point + o->insertion_trail; + + for ( i=0; i<offs; i++ ) { tmp[i] = o->text[i]; } for ( i=0; i<tlen; i++ ) { - tmp[i+o->insertion_point] = t[i]; + tmp[i+offs] = t[i]; } for ( i=0; i<olen-o->insertion_point; i++ ) { - tmp[i+o->insertion_point+tlen] = o->text[i+o->insertion_point]; + tmp[i+offs+tlen] = o->text[i+offs]; } tmp[olen+tlen] = '\0'; memcpy(o->text, tmp, o->text_len); @@ -419,7 +421,8 @@ static void click_select(struct presentation *p, struct toolinfo *tip, v = pango_layout_xy_to_index(o->layout, xp, yp, &idx, &trail); - o->insertion_point = idx+trail; + o->insertion_point = idx; + o->insertion_trail = trail; } |