Fix some bugs with forms that have only text fields.

Add an extern form to forms.h for apps to pick up.
This commit is contained in:
Paul Richards 1994-11-13 07:43:43 +00:00
parent c4115cc446
commit 1ab772898b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=4432
2 changed files with 14 additions and 3 deletions

View File

@ -239,7 +239,7 @@ find_link(int id)
return(0);
}
void
int
edit_form(struct form *form)
{
WINDOW *window;
@ -247,6 +247,10 @@ edit_form(struct form *form)
int key;
window = newwin(form->height, form->width, form->y, form->x);
if (!window) {
fprintf(stderr, "Failed to open window\n");
return(-1);
}
keypad(window, TRUE);
refresh_form(window, form);
@ -254,8 +258,11 @@ edit_form(struct form *form)
cur_field = form->fields;
do {
/* Just skip over text fields */
/* Skip over any preceeding text fields */
if (cur_field->type == FORM_FTYPE_TEXT) {
if (!cur_field->link)
/* No editable fields, reached end of text fields */
return(0);
cur_field = cur_field->link;
continue;
}
@ -297,6 +304,7 @@ edit_form(struct form *form)
} else
beep();
} while (key != keymap[FORM_EXIT]);
return (0);
}
void

View File

@ -24,6 +24,7 @@
#define MAX_FIELD_SIZE 80
struct form {
int x;
int y;
@ -32,6 +33,8 @@ struct form {
struct field *fields;
};
extern struct form *form;
struct input_field {
int y_prompt;
int x_prompt;
@ -76,6 +79,6 @@ extern unsigned int keymap[FORM_NO_KEYS];
int init_forms();
int edit_line(WINDOW *window, struct field *);
void edit_form(struct form *);
int edit_form(struct form *);
void refresh_form(WINDOW *, struct form *);
struct field *find_link(int);