From 4dc4d8b318c9bee25ca9b2982495b2906cc76287 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Tue, 20 Aug 2019 00:16:52 +0100 Subject: 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. --- frontends/windows/window.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) (limited to 'frontends/windows') diff --git a/frontends/windows/window.c b/frontends/windows/window.c index e1254d8f2..05d7a54d9 100644 --- a/frontends/windows/window.c +++ b/frontends/windows/window.c @@ -1693,6 +1693,39 @@ static void win32_window_stop_throbber(struct gui_window *w) } +/** + * process miscellaneous window events + * + * \param gw The window receiving the event. + * \param event The event code. + * \return NSERROR_OK when processed ok + */ +static nserror +win32_window_event(struct gui_window *gw, enum gui_window_event event) +{ + switch (event) { + case GW_EVENT_UPDATE_EXTENT: + win32_window_update_extent(gw); + break; + + case GW_EVENT_REMOVE_CARET: + win32_window_remove_caret(gw); + break; + + case GW_EVENT_START_THROBBER: + win32_window_start_throbber(gw); + break; + + case GW_EVENT_STOP_THROBBER: + win32_window_stop_throbber(gw); + break; + + default: + break; + } + return NSERROR_OK; +} + /** * win32 frontend browser window handling operation table */ @@ -1703,16 +1736,13 @@ static struct gui_window_table window_table = { .get_scroll = win32_window_get_scroll, .set_scroll = win32_window_set_scroll, .get_dimensions = win32_window_get_dimensions, - .update_extent = win32_window_update_extent, + .event = win32_window_event, .set_title = win32_window_set_title, .set_url = win32_window_set_url, .set_status = win32_window_set_status, .set_pointer = win32_window_set_pointer, .place_caret = win32_window_place_caret, - .remove_caret = win32_window_remove_caret, - .start_throbber = win32_window_start_throbber, - .stop_throbber = win32_window_stop_throbber, }; struct gui_window_table *win32_window_table = &window_table; -- cgit v1.2.3