X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fmove_field.c;h=b5ec9438513b9d6e1a5eac386b96ba5cc6aede81;hp=79b0b4df2369054ac7184d846961b4a84f324c4a;hb=9b51794524995304d8788e42aacb36feede9364f;hpb=f44733b760290aa8f51c6c9e1e463254833bffcd diff --git a/test/move_field.c b/test/move_field.c index 79b0b4df..b5ec9438 100644 --- a/test/move_field.c +++ b/test/move_field.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2021 Thomas E. Dickey * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -26,7 +26,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: move_field.c,v 1.6 2020/03/28 17:43:03 tom Exp $ + * $Id: move_field.c,v 1.9 2021/06/12 21:30:34 tom Exp $ * * Demonstrate move_field(). */ @@ -38,12 +38,19 @@ #include #include +#ifdef HAVE_NETBSD_FORM_H +#define form_field_row(field) (field)->form_row +#define form_field_col(field) (field)->form_col +#else /* e.g., SVr4, ncurses */ +#define form_field_row(field) (field)->frow +#define form_field_col(field) (field)->fcol +#endif + #define DO_DEMO CTRL('F') /* actual key for toggling demo-mode */ #define MY_DEMO EDIT_FIELD('f') /* internal request-code */ static char empty[] = ""; static FIELD *all_fields[100]; - /* *INDENT-OFF* */ static struct { int code; @@ -188,7 +195,6 @@ my_edit_field(FORM *form, int *result) int status; FIELD *before; unsigned n; - int length; int before_row; int before_col; int before_off = offset_in_field(form); @@ -214,8 +220,8 @@ my_edit_field(FORM *form, int *result) if (status == E_OK) { bool modified = TRUE; + int length = buffer_length(before); - length = buffer_length(before); if (length < before_off) length = before_off; switch (*result) { @@ -286,8 +292,8 @@ show_status(FORM *form, FIELD *field) getyx(stdscr, currow, curcol); mvprintw(LINES - 1, 0, "Field at [%d,%d]. Press %s to quit moving.", - getbegy(sub) + field->frow, - getbegx(sub) + field->fcol, + getbegy(sub) + form_field_row(field), + getbegx(sub) + form_field_col(field), keyname(DO_DEMO)); clrtobot(); move(currow, curcol); @@ -308,10 +314,10 @@ do_demo(FORM *form) size_t needed = (size_t) count; FIELD **old_fields = copy_fields(form_fields(form), needed); FIELD **new_fields = copy_fields(form_fields(form), needed); - int ch; if (old_fields != NULL && new_fields != NULL) { bool found = FALSE; + int ch; /* TODO: move the label too, in parallel with the editing field */ @@ -330,10 +336,9 @@ do_demo(FORM *form) getyx(stdscr, currow, curcol); show_status(form, my_field); - ch = '?'; while ((ch = wgetch(form_win(form))) != DO_DEMO) { - int field_y = my_field->frow; - int field_x = my_field->fcol; + int field_y = form_field_row(my_field); + int field_x = form_field_col(my_field); switch (ch) { case 'h': @@ -390,6 +395,7 @@ do_demo(FORM *form) refresh(); } } + free(old_fields); free(new_fields); } }