Fields without O_STATIC can "scroll" horizontally, and we may miss a
left-hand section of text from the current display. This can mean that
the user can't leave a validated field with no indication why, if the
off-to-the-left data is not a valid entry.
This change adds a widgetset function to mark a field as fixed-size, so
we don't have this scrolling behaviour. This means that the entire field
contents will always be visible, and any validation errors can be seen.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
screen->widgets.timeout_f = widget_new_textbox(set, 0, 0, 5, str);
screen->widgets.timeout_help_l = widget_new_label(set, 0, 0, "seconds");
screen->widgets.timeout_f = widget_new_textbox(set, 0, 0, 5, str);
screen->widgets.timeout_help_l = widget_new_label(set, 0, 0, "seconds");
+ widget_textbox_set_fixed_size(screen->widgets.timeout_f);
widget_textbox_set_validator_integer(screen->widgets.timeout_f, 0, 999);
screen->widgets.network_l = widget_new_label(set, 0, 0, "Network");
widget_textbox_set_validator_integer(screen->widgets.timeout_f, 0, 999);
screen->widgets.network_l = widget_new_label(set, 0, 0, "Network");
screen->widgets.ip_addr_l = widget_new_label(set, 0, 0, "IP/mask:");
screen->widgets.ip_addr_f = widget_new_textbox(set, 0, 0, 16, ip);
screen->widgets.ip_mask_l = widget_new_label(set, 0, 0, "/");
screen->widgets.ip_addr_l = widget_new_label(set, 0, 0, "IP/mask:");
screen->widgets.ip_addr_f = widget_new_textbox(set, 0, 0, 16, ip);
screen->widgets.ip_mask_l = widget_new_label(set, 0, 0, "/");
- screen->widgets.ip_mask_f = widget_new_textbox(set, 0, 0, 4, mask);
+ screen->widgets.ip_mask_f = widget_new_textbox(set, 0, 0, 3, mask);
screen->widgets.ip_addr_mask_help_l =
widget_new_label(set, 0, 0, "(eg. 192.168.0.10 / 24)");
screen->widgets.ip_addr_mask_help_l =
widget_new_label(set, 0, 0, "(eg. 192.168.0.10 / 24)");
+ widget_textbox_set_fixed_size(screen->widgets.ip_addr_f);
+ widget_textbox_set_fixed_size(screen->widgets.ip_mask_f);
widget_textbox_set_validator_ipv4(screen->widgets.ip_addr_f);
widget_textbox_set_validator_integer(screen->widgets.ip_mask_f, 1, 31);
widget_textbox_set_validator_ipv4(screen->widgets.ip_addr_f);
widget_textbox_set_validator_integer(screen->widgets.ip_mask_f, 1, 31);
screen->widgets.gateway_help_l =
widget_new_label(set, 0, 0, "(eg. 192.168.0.1)");
screen->widgets.gateway_help_l =
widget_new_label(set, 0, 0, "(eg. 192.168.0.1)");
+ widget_textbox_set_fixed_size(screen->widgets.gateway_f);
widget_textbox_set_validator_ipv4(screen->widgets.gateway_f);
str = talloc_strdup(screen, "");
widget_textbox_set_validator_ipv4(screen->widgets.gateway_f);
str = talloc_strdup(screen, "");
+void widget_textbox_set_fixed_size(struct nc_widget_textbox *textbox)
+{
+ field_opts_on(textbox->widget.field, O_STATIC);
+}
+
void widget_textbox_set_validator_integer(struct nc_widget_textbox *textbox,
long min, long max)
{
void widget_textbox_set_validator_integer(struct nc_widget_textbox *textbox,
long min, long max)
{
int y, int x, int size, const char *str,
void (*click)(void *), void *arg);
int y, int x, int size, const char *str,
void (*click)(void *), void *arg);
+void widget_textbox_set_fixed_size(struct nc_widget_textbox *textbox);
void widget_textbox_set_validator_integer(struct nc_widget_textbox *textbox,
long min, long max);
void widget_textbox_set_validator_ipv4(struct nc_widget_textbox *textbox);
void widget_textbox_set_validator_integer(struct nc_widget_textbox *textbox,
long min, long max);
void widget_textbox_set_validator_ipv4(struct nc_widget_textbox *textbox);