Index: ui/jive_textinput.c =================================================================== --- ui/jive_textinput.c (revision 9016) +++ ui/jive_textinput.c (working copy) @@ -308,40 +308,50 @@ if (drawLayer && peer->font) { if (peer->is_sh) { + +if (strlen(text) > 0 && (cursor - cursor_width) > 0) { /* pre-cursor */ tsrf = jive_font_ndraw_text(peer->font, peer->sh, text, cursor - cursor_width); jive_surface_blit(tsrf, srf, text_x + 1, text_y + offset_y + 1); jive_surface_free(tsrf); - +} +if (strlen(text + cursor - cursor_width) > 0 && (cursor_width) > 0) { /* cursor */ tsrf = jive_font_ndraw_text(peer->cursor_font, peer->sh, text + cursor - cursor_width, cursor_width); jive_surface_blit(tsrf, srf, cursor_x + (cursor_w - len_2) / 2 + 1, text_y + offset_cursor_y + 1); jive_surface_free(tsrf); - +} +if (strlen(text + cursor) > 0) { /* post-cursor */ if (cursor < text_len) { tsrf = jive_font_draw_text(peer->font, peer->sh, text + cursor); jive_surface_blit(tsrf, srf, cursor_x + cursor_w + 1, text_y + offset_y + 1); jive_surface_free(tsrf); } +} + } +if (strlen(text) > 0 && (cursor - cursor_width) > 0) { /* pre-cursor */ tsrf = jive_font_ndraw_text(peer->font, peer->fg, text, cursor - cursor_width); jive_surface_blit(tsrf, srf, text_x, text_y + offset_y); jive_surface_free(tsrf); - +} +if (strlen(text + cursor - cursor_width) > 0 && (cursor_width) > 0) { /* cursor */ tsrf = jive_font_ndraw_text(peer->cursor_font, peer->cursor_color, text + cursor - cursor_width, cursor_width); jive_surface_blit(tsrf, srf, cursor_x + (cursor_w - len_2) / 2, text_y + offset_cursor_y); jive_surface_free(tsrf); - +} +if (strlen(text + cursor) > 0) { /* post-cursor */ if (cursor < text_len) { tsrf = jive_font_draw_text(peer->font, peer->fg, text + cursor); jive_surface_blit(tsrf, srf, cursor_x + cursor_w, text_y + offset_y); jive_surface_free(tsrf); } +} if ((cursor > text_len || cursor == 0) && peer->enter_tile) { /* draw enter in cursor */ Index: ui/jive_textarea.c =================================================================== --- ui/jive_textarea.c (revision 9016) +++ ui/jive_textarea.c (working copy) @@ -467,6 +467,7 @@ break; } +if (strlen(&text[line]) > 0) { /* shadow text */ if (peer->is_sh) { tsrf = jive_font_draw_text(peer->font, peer->sh, &text[line]); @@ -478,7 +479,7 @@ tsrf = jive_font_draw_text(peer->font, peer->fg, &text[line]); jive_surface_blit(tsrf, srf, x, y); jive_surface_free(tsrf); - +} text[next] = c; text[(next - 1)] = b;