summaryrefslogtreecommitdiff
path: root/content/handlers/html/form.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2019-11-07 18:52:49 +0000
committerVincent Sanders <vince@kyllikki.org>2019-11-07 18:52:49 +0000
commit570f2dc03608d525ef02102ff0ca8225d57b40ed (patch)
tree958695b65c50b5b01117b25a782945d0e7ac64a4 /content/handlers/html/form.c
parent7de3100624bf77980e92f8e507a209dfe34a8309 (diff)
downloadnetsurf-570f2dc03608d525ef02102ff0ca8225d57b40ed.tar.gz
netsurf-570f2dc03608d525ef02102ff0ca8225d57b40ed.tar.bz2
remove user warning and fix up error handling in form select menus
Diffstat (limited to 'content/handlers/html/form.c')
-rw-r--r--content/handlers/html/form.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/content/handlers/html/form.c b/content/handlers/html/form.c
index 2918ce7d2..fd0f2fa3e 100644
--- a/content/handlers/html/form.c
+++ b/content/handlers/html/form.c
@@ -1486,10 +1486,11 @@ form_encode_item(const char *item,
}
/* exported interface documented in html/form_internal.h */
-bool form_open_select_menu(void *client_data,
- struct form_control *control,
- select_menu_redraw_callback callback,
- struct content *c)
+nserror
+form_open_select_menu(void *client_data,
+ struct form_control *control,
+ select_menu_redraw_callback callback,
+ struct content *c)
{
int line_height_with_spacing;
struct box *box;
@@ -1497,15 +1498,14 @@ bool form_open_select_menu(void *client_data,
int total_height;
struct form_select_menu *menu;
html_content *html = (html_content *)c;
-
+ nserror res;
/* if the menu is opened for the first time */
if (control->data.select.menu == NULL) {
menu = calloc(1, sizeof (struct form_select_menu));
if (menu == NULL) {
- guit->misc->warning("NoMemory", 0);
- return false;
+ return NSERROR_NOMEM;
}
control->data.select.menu = menu;
@@ -1513,9 +1513,8 @@ bool form_open_select_menu(void *client_data,
box = control->box;
menu->width = box->width +
- box->border[RIGHT].width +
- box->border[LEFT].width +
- box->padding[RIGHT] + box->padding[LEFT];
+ box->border[RIGHT].width + box->padding[RIGHT] +
+ box->border[LEFT].width + box->padding[LEFT];
font_plot_style_from_css(&html->len_ctx, control->box->style,
&fstyle);
@@ -1535,28 +1534,31 @@ bool form_open_select_menu(void *client_data,
menu->height = total_height;
if (menu->height > MAX_SELECT_HEIGHT) {
-
menu->height = MAX_SELECT_HEIGHT;
}
+
menu->client_data = client_data;
menu->callback = callback;
- if (scrollbar_create(false,
- menu->height,
- total_height,
- menu->height,
- control,
- form_select_menu_scroll_callback,
- &(menu->scrollbar)) != NSERROR_OK) {
+ res = scrollbar_create(false,
+ menu->height,
+ total_height,
+ menu->height,
+ control,
+ form_select_menu_scroll_callback,
+ &(menu->scrollbar));
+ if (res != NSERROR_OK) {
+ control->data.select.menu = NULL;
free(menu);
- return false;
+ return res;
}
menu->c = c;
+ } else {
+ menu = control->data.select.menu;
}
- else menu = control->data.select.menu;
menu->callback(client_data, 0, 0, menu->width, menu->height);
- return true;
+ return NSERROR_OK;
}