+ mc->generic.next = mcs->panels[curstate->panelnum];
+ mcs->panels[curstate->panelnum] = mc;
+}
+
+#if !TARGET_API_MAC_CARBON
+static pascal SInt32 macctrl_sys7_text_cdef(SInt16 variant, ControlRef control,
+ ControlDefProcMessage msg, SInt32 param)
+{
+ RgnHandle rgn;
+
+ switch (msg) {
+ case drawCntl:
+ if ((*control)->contrlVis)
+ TETextBox((*control)->contrlTitle + 1, (*control)->contrlTitle[0],
+ &(*control)->contrlRect, teFlushDefault);
+ return 0;
+ case calcCRgns:
+ if (param & (1 << 31)) {
+ param &= ~(1 << 31);
+ goto calcthumbrgn;
+ }
+ /* FALLTHROUGH */
+ case calcCntlRgn:
+ rgn = (RgnHandle)param;
+ RectRgn(rgn, &(*control)->contrlRect);
+ return 0;
+ case calcThumbRgn:
+ calcthumbrgn:
+ rgn = (RgnHandle)param;
+ SetEmptyRgn(rgn);
+ return 0;
+ }
+
+ return 0;
+}
+#endif
+
+static void macctrl_editbox(struct macctrls *mcs, WindowPtr window,
+ struct mac_layoutstate *curstate,
+ union control *ctrl)
+{
+ union macctrl *mc = smalloc(sizeof *mc);
+ Rect bounds;
+
+ fprintf(stderr, " label = %s\n", ctrl->editbox.label);
+ fprintf(stderr, " percentwidth = %d\n", ctrl->editbox.percentwidth);
+ if (ctrl->editbox.password) fprintf(stderr, " password\n");
+ if (ctrl->editbox.has_list) fprintf(stderr, " has list\n");
+ mc->generic.type = MACCTRL_EDITBOX;
+ mc->generic.ctrl = ctrl;
+ mc->generic.privdata = NULL;
+ bounds.left = curstate->pos.h;
+ bounds.right = bounds.left + curstate->width;
+ bounds.top = curstate->pos.v + 2;
+ bounds.bottom = bounds.top + 18;
+ if (mac_gestalts.apprvers >= 0x100) {
+ mc->text.tbctrl = NewControl(window, &bounds, NULL, TRUE, 0, 0, 0,
+ ctrl->editbox.password ?
+ kControlEditTextPasswordProc :
+ kControlEditTextProc, (long)mc);
+ curstate->pos.v += 28;
+ add234(mcs->byctrl, mc);
+ mc->generic.next = mcs->panels[curstate->panelnum];
+ mcs->panels[curstate->panelnum] = mc;
+ ctrlevent(mcs, mc, EVENT_REFRESH);
+ } else {
+ /* Do a System 7 version */
+ }