getFontCharSource(font_nr, FONT_ASCII_CURSOR, &src_bitmap, &src_x, &src_y);
src_x += font_width / 2;
src_y += font_height / 2;
- gi->selectbox.inverse_color = GetPixel(src_bitmap, src_x, src_y);
+
+ /* there may be esoteric cases with missing or too small font bitmap */
+ if (src_bitmap != NULL &&
+ src_x < src_bitmap->width && src_y < src_bitmap->height)
+ gi->selectbox.inverse_color = GetPixel(src_bitmap, src_x, src_y);
/* always start with closed selectbox */
gi->selectbox.open = FALSE;
MultiMapGadgets(MULTIMAP_ALL | MULTIMAP_REMAP);
}
-static boolean anyTextInputGadgetActive()
+boolean anyTextInputGadgetActive()
{
return (last_gi && (last_gi->type & GD_TYPE_TEXT_INPUT) && last_gi->mapped);
}
-static boolean anyTextAreaGadgetActive()
+boolean anyTextAreaGadgetActive()
{
return (last_gi && (last_gi->type & GD_TYPE_TEXT_AREA) && last_gi->mapped);
}
-static boolean anySelectboxGadgetActive()
+boolean anySelectboxGadgetActive()
{
return (last_gi && (last_gi->type & GD_TYPE_SELECTBOX) && last_gi->mapped);
}
+boolean anyScrollbarGadgetActive()
+{
+ return (last_gi && (last_gi->type & GD_TYPE_SCROLLBAR) && last_gi->mapped);
+}
+
+boolean anyTextGadgetActive()
+{
+ return (anyTextInputGadgetActive() ||
+ anyTextAreaGadgetActive() ||
+ anySelectboxGadgetActive());
+}
+
static boolean insideSelectboxLine(struct GadgetInfo *gi, int mx, int my)
{
return(gi != NULL &&
my >= gi->selectbox.y && my < gi->selectbox.y + gi->selectbox.height);
}
-boolean anyTextGadgetActive()
-{
- return (anyTextInputGadgetActive() ||
- anyTextAreaGadgetActive() ||
- anySelectboxGadgetActive());
-}
-
void ClickOnGadget(struct GadgetInfo *gi, int button)
{
if (!gi->mapped)