summaryrefslogtreecommitdiff
path: root/framebuffer
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2012-07-31 22:30:39 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2012-07-31 22:30:39 +0100
commit75cc4a06be412fa89fedfec13f524296aa106462 (patch)
treef123a724708506c19a53ae27f9fff8345c4c056f /framebuffer
parent53183b2411f10dbaf1a0b85ded1d2bd8b6df5ea9 (diff)
downloadnetsurf-75cc4a06be412fa89fedfec13f524296aa106462.tar.gz
netsurf-75cc4a06be412fa89fedfec13f524296aa106462.tar.bz2
Factor out some repeated code.
Diffstat (limited to 'framebuffer')
-rw-r--r--framebuffer/fbtk/text.c33
1 files changed, 10 insertions, 23 deletions
diff --git a/framebuffer/fbtk/text.c b/framebuffer/fbtk/text.c
index 879d88888..d71b162f6 100644
--- a/framebuffer/fbtk/text.c
+++ b/framebuffer/fbtk/text.c
@@ -282,6 +282,7 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi)
plot_font_style_t font_style;
int fh;
int border;
+ bool caret_moved = false;
fb_text_font_style(widget, &fh, &border, &font_style);
@@ -324,13 +325,8 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi)
nsfont.font_width(&font_style, widget->u.text.text,
widget->u.text.len, &widget->u.text.width);
- nsfont.font_width(&font_style, widget->u.text.text,
- widget->u.text.idx, &widget->u.text.idx_offset);
- fbtk_set_caret(widget, true,
- widget->u.text.idx_offset + border,
- border,
- widget->height - border - border,
- fb_text_input_remove_caret_cb);
+
+ caret_moved = true;
break;
case NSFB_KEY_RETURN:
@@ -340,27 +336,14 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi)
case NSFB_KEY_RIGHT:
if (widget->u.text.idx < widget->u.text.len)
widget->u.text.idx++;
-
- nsfont.font_width(&font_style, widget->u.text.text,
- widget->u.text.idx, &widget->u.text.idx_offset);
- fbtk_set_caret(widget, true,
- widget->u.text.idx_offset + border,
- border,
- widget->height - border - border,
- fb_text_input_remove_caret_cb);
+ caret_moved = true;
break;
case NSFB_KEY_LEFT:
if (widget->u.text.idx > 0)
widget->u.text.idx--;
- nsfont.font_width(&font_style, widget->u.text.text,
- widget->u.text.idx, &widget->u.text.idx_offset);
- fbtk_set_caret(widget, true,
- widget->u.text.idx_offset + border,
- border,
- widget->height - border - border,
- fb_text_input_remove_caret_cb);
+ caret_moved = true;
break;
case NSFB_KEY_PAGEUP:
@@ -398,6 +381,11 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi)
nsfont.font_width(&font_style, widget->u.text.text,
widget->u.text.len, &widget->u.text.width);
+ caret_moved = true;
+ break;
+ }
+
+ if (caret_moved) {
nsfont.font_width(&font_style, widget->u.text.text,
widget->u.text.idx, &widget->u.text.idx_offset);
fbtk_set_caret(widget, true,
@@ -405,7 +393,6 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi)
border,
widget->height - border - border,
fb_text_input_remove_caret_cb);
- break;
}
fbtk_request_redraw(widget);