diff options
author | Steve Fryatt <stevef@netsurf-browser.org> | 2013-09-08 11:55:21 +0100 |
---|---|---|
committer | Steve Fryatt <stevef@netsurf-browser.org> | 2013-09-08 11:55:21 +0100 |
commit | a00e0f91c7ccb27108cc396ca8afa3207935de4c (patch) | |
tree | dfe47712132b8f26f46fe319f3222b44c5e2e060 /riscos/window.c | |
parent | e87596ad1f7755c50f7a00edc85e66908ad1ba10 (diff) | |
download | netsurf-a00e0f91c7ccb27108cc396ca8afa3207935de4c.tar.gz netsurf-a00e0f91c7ccb27108cc396ca8afa3207935de4c.tar.bz2 |
Move all mouse tracking into ro_mouse module.
Add Pointer Entering Window events to wimp_event module and add handlers to all modules requiring mouse tracking.
Updated: Treeview, URL Complete, History and GUI Window.
Delete all handling for Pointer Entering/Leaving from ro_gui.
Diffstat (limited to 'riscos/window.c')
-rw-r--r-- | riscos/window.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/riscos/window.c b/riscos/window.c index dbe505eb5..f3a6f05ce 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -94,6 +94,8 @@ static void gui_window_set_extent(struct gui_window *g, int width, int height); static void ro_gui_window_redraw(wimp_draw *redraw); static void ro_gui_window_scroll(wimp_scroll *scroll); +static void ro_gui_window_pointer_entering(wimp_entering *entering); +static void ro_gui_window_track_end(wimp_leaving *leaving, void *data); static void ro_gui_window_open(wimp_open *open); static void ro_gui_window_close(wimp_w w); static bool ro_gui_window_click(wimp_pointer *mouse); @@ -546,6 +548,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, ro_gui_wimp_event_register_close_window(g->window, ro_gui_window_close); ro_gui_wimp_event_register_redraw_window(g->window, ro_gui_window_redraw); ro_gui_wimp_event_register_scroll_window(g->window, ro_gui_window_scroll); + ro_gui_wimp_event_register_pointer_entering_window(g->window, ro_gui_window_pointer_entering); ro_gui_wimp_event_register_keypress(g->window, ro_gui_window_keypress); ro_gui_wimp_event_register_mouse_click(g->window, ro_gui_window_click); ro_gui_wimp_event_register_menu(g->window, ro_gui_browser_window_menu, @@ -3134,6 +3137,37 @@ void ro_gui_window_scroll(wimp_scroll *scroll) } } +/** + * Process Pointer Entering Window events in a browser window. + * + * \param *entering The wimp pointer entering event data block. + */ + +static void ro_gui_window_pointer_entering(wimp_entering *entering) +{ + struct gui_window *g = ro_gui_window_lookup(entering->w); + + if (g != NULL) + ro_mouse_track_start(ro_gui_window_track_end, + ro_gui_window_mouse_at, g); +} + +/** + * Process Pointer Leaving Window events in a browser window. These arrive via + * the termination callback handler from ro_mouse's mouse tracking. + * + * \param *leaving The wimp pointer leaving event data block. + * \param *data The GUI window that the pointer is leaving. + */ + +static void ro_gui_window_track_end(wimp_leaving *leaving, void *data) +{ + struct gui_window *g = (struct gui_window *) data; + + if (g != NULL) + gui_window_set_pointer(g, GUI_POINTER_DEFAULT); +} + /** * Scroll a browser window, either via the core or directly using the |