+
+ case GDI_AREA_SIZE:
+ new_gadget->drawing.area_xsize = va_arg(ap, int);
+ new_gadget->drawing.area_ysize = va_arg(ap, int);
+
+ /* determine dependent values for drawing area gadget, if needed */
+ if (new_gadget->width == 0 &&
+ new_gadget->height == 0 &&
+ new_gadget->drawing.item_xsize !=0 &&
+ new_gadget->drawing.item_ysize !=0)
+ {
+ new_gadget->width =
+ new_gadget->drawing.area_xsize * new_gadget->drawing.item_xsize;
+ new_gadget->height =
+ new_gadget->drawing.area_ysize * new_gadget->drawing.item_ysize;
+ }
+ else if (new_gadget->drawing.item_xsize == 0 &&
+ new_gadget->drawing.item_ysize == 0 &&
+ new_gadget->width != 0 &&
+ new_gadget->height != 0)
+ {
+ new_gadget->drawing.item_xsize =
+ new_gadget->width / new_gadget->drawing.area_xsize;
+ new_gadget->drawing.item_ysize =
+ new_gadget->height / new_gadget->drawing.area_ysize;
+ }
+ break;
+
+ case GDI_ITEM_SIZE:
+ new_gadget->drawing.item_xsize = va_arg(ap, int);
+ new_gadget->drawing.item_ysize = va_arg(ap, int);
+
+ /* determine dependent values for drawing area gadget, if needed */
+ if (new_gadget->width == 0 &&
+ new_gadget->height == 0 &&
+ new_gadget->drawing.area_xsize !=0 &&
+ new_gadget->drawing.area_ysize !=0)
+ {
+ new_gadget->width =
+ new_gadget->drawing.area_xsize * new_gadget->drawing.item_xsize;
+ new_gadget->height =
+ new_gadget->drawing.area_ysize * new_gadget->drawing.item_ysize;
+ }
+ else if (new_gadget->drawing.area_xsize == 0 &&
+ new_gadget->drawing.area_ysize == 0 &&
+ new_gadget->width != 0 &&
+ new_gadget->height != 0)
+ {
+ new_gadget->drawing.area_xsize =
+ new_gadget->width / new_gadget->drawing.item_xsize;
+ new_gadget->drawing.area_ysize =
+ new_gadget->height / new_gadget->drawing.item_ysize;
+ }
+ break;
+