FieldType * MyFrmGetActiveField() { Err err; UInt16 focus; FormType * activeForm; if ( (activeForm = FrmGetActiveForm()) == 0 || (focus = FrmGetFocus(activeForm)) == noFocus) { return 0; } FieldType * activeField = 0; switch (FrmGetObjectType(activeForm, focus)) { case frmFieldObj: UInt32 romVersion = 0; err = FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion); activeField = (romVersion >= sysMakeROMVersion(4, 0, 0, sysROMStageRelease, 0)) ? FrmGetActiveField(0) : (FieldType *)FrmGetObjectPtr(activeForm, focus); break; case frmTableObj: TableType * activeTable = (TableType *)FrmGetObjectPtr(activeForm, focus); activeField = TblGetCurrentField(activeTable); break; default: break; } /* this might not work, eg., expense. perhaps if the field is new, it has no text handle. if (activeField) { if (FldGetTextHandle(activeField) == 0) { return 0; } FieldAttrType a; FldGetAttributes(activeField, &a); if (!(a.usable && a.editable)) { return 0; } } */ return activeField; }
/*! * Makes sure that the text field is given focus. */ Boolean hFilesNew(EventPtr event) { Boolean handled = false; FormPtr form; UInt16 fieldID; WChar chr; switch (event->eType) { case frmOpenEvent: setGameInProgress(0); form = FrmGetActiveForm(); SetSilkResizable(form, true); collapseMove(form, CM_DEFAULT, NULL, NULL); FrmDrawForm(cityNewSetup(form)); handled = true; break; case frmCloseEvent: break; case keyDownEvent: form = FrmGetActiveForm(); fieldID = FrmGetObjectId(form, FrmGetFocus(form)); if (fieldID < fieldID_width || fieldID > fieldID_width) break; chr = event->data.keyDown.chr; if (((chr >= chrDigitZero) && (chr <= chrDigitNine)) || (chr == chrBackspace)) { EvtEnqueueKey(chrTilde, 0, 0); break; } if (chr == chrTilde) cnFieldContentChanged(fieldID); break; case ctlRepeatEvent: cnRepeatPressed(event); break; case ctlSelectEvent: switch (event->data.ctlSelect.controlID) { case buttonID_FilesNewCreate: cnCreateButtonPressed(); handled = true; break; case buttonID_FilesNewCancel: cnCancelButtonPressed(); handled = true; break; } break; #if defined(HRSUPPORT) case winDisplayChangedEvent: #if defined(SONY_CLIE) case vchrSilkResize: #endif form = FrmGetActiveForm(); if (collapseMove(form, CM_DEFAULT, NULL, NULL)) { FrmEraseForm(form); FrmDrawForm(form); } handled = true; break; #endif default: break; } return (handled); }