+ slider->render(renderer);
+}
+
+void Entry::touch_press(int x, int y, unsigned finger)
+{
+ if(finger==0)
+ set_focus();
+ Widget::touch_press(x, y, finger);
+}
+
+bool Entry::key_press(unsigned key, unsigned)
+{
+ got_key_press = true;
+ if(key==Input::KEY_BACKSPACE)
+ {
+ if(edit_pos>0)
+ {
+ text.erase(--edit_pos, 1);
+ check_view_range();
+ rebuild();
+ }
+ }
+ else if(key==Input::KEY_ENTER && multiline)
+ {
+ text.insert(edit_pos++, "\n");
+ check_view_range();
+ rebuild();
+ }
+ else
+ return false;
+
+ return true;
+}
+
+bool Entry::character(wchar_t ch)
+{
+ if(got_key_press && ch>=' ')
+ {
+ text.insert(edit_pos, StringCodec::encode<StringCodec::Utf8>(StringCodec::ustring(1, ch)));
+ ++edit_pos;
+ rebuild();
+ return true;
+ }
+
+ return false;