ncurses 6.2 - patch 20200627
[ncurses.git] / test / move_field.c
index 7681225bf9882d8c1e97c0f0ed512de14c929f98..8344c56f8c14ed62ea273024fe3e9048fcfe07cf 100644 (file)
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: move_field.c,v 1.5 2020/03/21 22:04:03 tom Exp $
+ * $Id: move_field.c,v 1.7 2020/05/09 12:52:00 tom Exp $
  *
  * Demonstrate move_field().
  */
 #include <edit_field.h>
 #include <popup_msg.h>
 
+#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 */
 
@@ -269,7 +277,7 @@ my_edit_field(FORM *form, int *result)
 }
 
 static FIELD **
-copy_fields(FIELD **source, int length)
+copy_fields(FIELD **source, size_t length)
 {
     FIELD **target = calloc(length + 1, sizeof(FIELD *));
     memcpy(target, source, length * sizeof(FIELD *));
@@ -286,8 +294,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);
@@ -305,8 +313,9 @@ do_demo(FORM *form)
     FIELD *my_field = current_field(form);
 
     if (count > 0 && my_field != NULL) {
-       FIELD **old_fields = copy_fields(form_fields(form), count);
-       FIELD **new_fields = copy_fields(form_fields(form), count);
+       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) {
@@ -331,8 +340,8 @@ do_demo(FORM *form)
                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':