+void ModifyTextInputTextValue(struct GadgetInfo *gi, char *new_text)
+{
+ struct GadgetTextInput *text = &gi->text;
+ int max_textsize = MAX_GADGET_TEXTSIZE;
+
+ if (text->size)
+ max_textsize = MIN(text->size, MAX_GADGET_TEXTSIZE - 1);
+
+ strncpy(text->value, new_text, max_textsize);
+ text->value[max_textsize] = '\0';
+ text->cursor_position = strlen(text->value);
+
+ if (gi->mapped)
+ DrawGadget(gi, DG_UNPRESSED, DG_DIRECT);
+}
+
+void ModifyTextInputNumberValue(struct GadgetInfo *gi, int new_value)
+{
+ struct GadgetTextInput *text = &gi->text;
+
+ text->number_value = (new_value < text->number_min ? text->number_min :
+ new_value > text->number_max ? text->number_max :
+ new_value);
+
+ sprintf(text->value, "%d", text->number_value);
+
+ if (gi->mapped)
+ DrawGadget(gi, DG_UNPRESSED, DG_DIRECT);
+}
+
+/* global pointer to gadget actually in use (when mouse button pressed) */
+static struct GadgetInfo *last_gi = NULL;
+