diff options
author | Vincent Sanders <vince@kyllikki.org> | 2019-08-20 00:16:52 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2019-08-20 00:16:52 +0100 |
commit | 4dc4d8b318c9bee25ca9b2982495b2906cc76287 (patch) | |
tree | ce55d6902a33a0e00c388a65a450e05d19dd4d2c /desktop | |
parent | c0e27bd0da9c6804c788473b891bff6c0c98af66 (diff) | |
download | netsurf-4dc4d8b318c9bee25ca9b2982495b2906cc76287.tar.gz netsurf-4dc4d8b318c9bee25ca9b2982495b2906cc76287.tar.bz2 |
add miscellaneous event to browser window callback table
extend the browser window callback table with a miscallaneous event
entry. This is used to replace all browser window callbacks which
take no parameters.
This reduces the API surface from seven separate calls to a single
call with an enumeration which may be readily extended.
The initial implementation in the frontends simply calls the original
implementations to reduce scope for errors.
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/browser_window.c | 17 | ||||
-rw-r--r-- | desktop/gui_factory.c | 46 | ||||
-rw-r--r-- | desktop/selection.c | 4 | ||||
-rw-r--r-- | desktop/textinput.c | 7 |
4 files changed, 17 insertions, 57 deletions
diff --git a/desktop/browser_window.c b/desktop/browser_window.c index cf5ba6800..e44b928be 100644 --- a/desktop/browser_window.c +++ b/desktop/browser_window.c @@ -410,14 +410,14 @@ static bool browser_window_check_throbber(struct browser_window *bw) * * \param bw browser window */ -static void browser_window_start_throbber(struct browser_window *bw) +static nserror browser_window_start_throbber(struct browser_window *bw) { bw->throbbing = true; while (bw->parent) bw = bw->parent; - guit->window->start_throbber(bw->window); + return guit->window->event(bw->window, GW_EVENT_START_THROBBER); } @@ -426,16 +426,19 @@ static void browser_window_start_throbber(struct browser_window *bw) * * \param bw browser window */ -static void browser_window_stop_throbber(struct browser_window *bw) +static nserror browser_window_stop_throbber(struct browser_window *bw) { + nserror res = NSERROR_OK; + bw->throbbing = false; while (bw->parent) bw = bw->parent; if (!browser_window_check_throbber(bw)) { - guit->window->stop_throbber(bw->window); + res = guit->window->event(bw->window, GW_EVENT_STOP_THROBBER); } + return res; } @@ -765,7 +768,7 @@ static nserror browser_window_content_ready(struct browser_window *bw) browser_window_remove_caret(bw, false); if (bw->window != NULL) { - guit->window->new_content(bw->window); + guit->window->event(bw->window, GW_EVENT_NEW_CONTENT); browser_window_refresh_url_bar(bw); } @@ -2580,7 +2583,7 @@ void browser_window_update_extent(struct browser_window *bw) { if (bw->window != NULL) { /* Front end window */ - guit->window->update_extent(bw->window); + guit->window->event(bw->window, GW_EVENT_UPDATE_EXTENT); } else { /* Core-managed browser window */ browser_window_handle_scrollbars(bw); @@ -4260,7 +4263,7 @@ void browser_window_page_drag_start(struct browser_window *bw, int x, int y) &bw->drag.start_scroll_x, &bw->drag.start_scroll_y); - guit->window->scroll_start(bw->window); + guit->window->event(bw->window, GW_EVENT_SCROLL_START); } else { /* Core managed browser window */ bw->drag.start_scroll_x = scrollbar_get_offset(bw->scroll_x); diff --git a/desktop/gui_factory.c b/desktop/gui_factory.c index bd8d35bc5..fdb15ef8c 100644 --- a/desktop/gui_factory.c +++ b/desktop/gui_factory.c @@ -55,14 +55,6 @@ static nserror gui_default_window_set_url(struct gui_window *g, struct nsurl *ur return NSERROR_OK; } -static void gui_default_window_start_throbber(struct gui_window *g) -{ -} - -static void gui_default_window_stop_throbber(struct gui_window *g) -{ -} - static bool gui_default_window_drag_start(struct gui_window *g, gui_drag_type type, const struct rect *rect) @@ -82,17 +74,6 @@ static void gui_default_window_set_icon(struct gui_window *g, { } - -static void gui_default_window_new_content(struct gui_window *g) -{ -} - - -static bool gui_default_window_scroll_start(struct gui_window *g) -{ - return true; -} - static void gui_default_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) { @@ -109,10 +90,6 @@ static void gui_default_window_place_caret(struct gui_window *g, { } -static void gui_default_window_remove_caret(struct gui_window *g) -{ -} - static void gui_default_window_create_form_select_menu(struct gui_window *g, struct form_control *control) { @@ -135,9 +112,6 @@ static void gui_default_window_drag_save_selection(struct gui_window *g, { } -static void gui_default_window_start_selection(struct gui_window *g) -{ -} static void gui_default_console_log(struct gui_window *gw, @@ -176,7 +150,7 @@ static nserror verify_window_register(struct gui_window_table *gwt) if (gwt->get_dimensions == NULL) { return NSERROR_BAD_PARAMETER; } - if (gwt->update_extent == NULL) { + if (gwt->event == NULL) { return NSERROR_BAD_PARAMETER; } @@ -200,27 +174,12 @@ static nserror verify_window_register(struct gui_window_table *gwt) if (gwt->place_caret == NULL) { gwt->place_caret = gui_default_window_place_caret; } - if (gwt->remove_caret == NULL) { - gwt->remove_caret = gui_default_window_remove_caret; - } - if (gwt->start_throbber == NULL) { - gwt->start_throbber = gui_default_window_start_throbber; - } - if (gwt->stop_throbber == NULL) { - gwt->stop_throbber = gui_default_window_stop_throbber; - } if (gwt->drag_start == NULL) { gwt->drag_start = gui_default_window_drag_start; } if (gwt->save_link == NULL) { gwt->save_link = gui_default_window_save_link; } - if (gwt->new_content == NULL) { - gwt->new_content = gui_default_window_new_content; - } - if (gwt->scroll_start == NULL) { - gwt->scroll_start = gui_default_window_scroll_start; - } if (gwt->create_form_select_menu == NULL) { gwt->create_form_select_menu = gui_default_window_create_form_select_menu; @@ -234,9 +193,6 @@ static nserror verify_window_register(struct gui_window_table *gwt) if (gwt->drag_save_selection == NULL) { gwt->drag_save_selection = gui_default_window_drag_save_selection; } - if (gwt->start_selection == NULL) { - gwt->start_selection = gui_default_window_start_selection; - } if (gwt->console_log == NULL) { gwt->console_log = gui_default_console_log; } diff --git a/desktop/selection.c b/desktop/selection.c index 10aa4c7dd..c8edda7b1 100644 --- a/desktop/selection.c +++ b/desktop/selection.c @@ -307,7 +307,7 @@ bool selection_click(struct selection *s, browser_mouse_state mouse, s->drag_state = DRAG_END; - guit->window->start_selection(top->window); + guit->window->event(top->window, GW_EVENT_START_SELECTION); } else if (mouse & BROWSER_MOUSE_DRAG_2) { @@ -326,7 +326,7 @@ bool selection_click(struct selection *s, browser_mouse_state mouse, s->drag_state = DRAG_START; } - guit->window->start_selection(top->window); + guit->window->event(top->window, GW_EVENT_START_SELECTION); } else if (mouse & BROWSER_MOUSE_CLICK_2) { diff --git a/desktop/textinput.c b/desktop/textinput.c index 660f01a4a..f8da3d86b 100644 --- a/desktop/textinput.c +++ b/desktop/textinput.c @@ -93,13 +93,14 @@ void browser_window_remove_caret(struct browser_window *bw, bool only_hide) root_bw = browser_window_get_root(bw); assert(root_bw != NULL); - if (only_hide) + if (only_hide) { root_bw->can_edit = true; - else + } else { root_bw->can_edit = false; + } if (root_bw->window) { - guit->window->remove_caret(root_bw->window); + guit->window->event(root_bw->window, GW_EVENT_REMOVE_CARET); } } |