diff --git a/form/fld_max.c b/form/fld_max.c index 6c7fe72..1706a8c 100644 --- a/form/fld_max.c +++ b/form/fld_max.c @@ -57,11 +57,14 @@ set_max_field(FIELD *field, int maxgrow) if (maxgrow > 0) { - if ((single_line_field && (maxgrow < field->dcols)) || - (!single_line_field && (maxgrow < field->drows))) + if (((single_line_field && (maxgrow < field->dcols)) || + (!single_line_field && (maxgrow < field->drows))) && + !Field_Has_Option(field, O_INPUT_LIMIT)) RETURN(E_BAD_ARGUMENT); } field->maxgrow = maxgrow; + if (Field_Has_Option(field, O_INPUT_LIMIT) && field->dcols > maxgrow) + field->dcols = maxgrow; ClrStatus(field, _MAY_GROW); if (!((unsigned)field->opts & O_STATIC)) { diff --git a/form/form.h b/form/form.h index 1d4c241..0610349 100644 --- a/form/form.h +++ b/form/form.h @@ -223,6 +223,7 @@ typedef void (*Form_Hook)(FORM *); #define O_DYNAMIC_JUSTIFY (0x0400U) /* ncurses extension */ #define O_NO_LEFT_STRIP (0x0800U) /* ncurses extension */ #define O_EDGE_INSERT_STAY (0x1000U) /* ncurses extension */ +#define O_INPUT_LIMIT (0x2000U) /* ncurses extension */ /* form options */ #define O_NL_OVERLOAD (0x0001U)