char text[MAX_GADGET_TEXTSIZE + 1];
int font_nr = (pressed ? gi->font_active : gi->font);
int font_width = getFontWidth(font_nr);
+ int font_height = getFontHeight(font_nr);
+ struct FontBitmapInfo *font = getFontBitmapInfo(font_nr);
int border_x = gi->border.xsize;
int border_y = gi->border.ysize;
+ int text_x = gi->x + font->draw_xoffset;
+ int text_y = gi->y + font->draw_yoffset;
// left part of gadget
BlitBitmapOnBackground(gd->bitmap, drawto, gd->x, gd->y,
strcpy(text, gi->textinput.value);
strcat(text, " ");
+ // dirty workaround to erase text if input gadget font has draw offset
+ if (font->draw_xoffset != 0 || font->draw_yoffset != 0)
+ for (i = 0; i < gi->textinput.size + 1; i++)
+ BlitBitmapOnBackground(gd->bitmap, drawto,
+ gd->x + border_x, gd->y + border_y,
+ font_width, font_height,
+ text_x + border_x + i * font_width,
+ text_y + border_y);
+
// gadget text value
DrawTextExt(drawto,
gi->x + border_x, gi->y + border_y, text,
BlitBitmapOnBackground(gd->bitmap, drawto, gd->x, gd->y + border_y,
border_x, font_height,
gi->selectbox.x,
- gi->selectbox.y + border_y + i*font_height);
+ gi->selectbox.y + border_y + i * font_height);
BlitBitmapOnBackground(gd->bitmap, drawto,
gd->x + gi->border.width - border_x,
gd->y + border_y,
border_x, font_height,
gi->selectbox.x + box_width - border_x,
- gi->selectbox.y + border_y + i*font_height);
+ gi->selectbox.y + border_y + i * font_height);
}
// bottom left part of gadget border
break;
case GDI_ALT_DESIGN_UNPRESSED:
- gi->alt_design[GD_BUTTON_UNPRESSED].bitmap= va_arg(ap, Bitmap *);
+ gi->alt_design[GD_BUTTON_UNPRESSED].bitmap = va_arg(ap, Bitmap *);
gi->alt_design[GD_BUTTON_UNPRESSED].x = va_arg(ap, int);
gi->alt_design[GD_BUTTON_UNPRESSED].y = va_arg(ap, int);
break;
Bitmap *src_bitmap;
int src_x, src_y;
- gi->width = 2 * border_xsize + gi->textinput.size*font_width +button_size;
+ gi->width = 2 * border_xsize + gi->textinput.size * font_width + button_size;
gi->height = 2 * border_ysize + font_height;
if (gi->selectbox.options == NULL)
int cursor_pos = gi->textinput.cursor_position;
char letter = getCharFromKey(key);
boolean legal_letter = (gi->type == GD_TYPE_TEXT_INPUT_NUMERIC ?
- letter >= '0' && letter <= '9' :
- letter != 0);
+ (letter >= '0' && letter <= '9') || letter == '-' : letter != 0);
if (legal_letter && text_length < gi->textinput.size)
{