From 0b4d623205b81b4547cd40a46e8b3d8e7815dba0 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Mon, 23 Nov 2009 22:56:29 +0000 Subject: Make the gui click handlers responsible for deciding whether to act on DOWN or UP (or both), rather than having the fbtk forcibly prevent UP events being generated. This fixes the inability to have clicks in the viewport acted upon, and also allows for useful future extensions such as drag scrolling and text selection. svn path=/trunk/netsurf/; revision=9704 --- framebuffer/gui.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'framebuffer/gui.c') diff --git a/framebuffer/gui.c b/framebuffer/gui.c index 1621b801a..264b9d6fc 100644 --- a/framebuffer/gui.c +++ b/framebuffer/gui.c @@ -450,7 +450,8 @@ fb_browser_window_click(fbtk_widget_t *widget, struct browser_window *bw = pw; struct browser_widget_s *bwidget = fbtk_get_userpw(widget); - if (event->type != NSFB_EVENT_KEY_DOWN) + if (event->type != NSFB_EVENT_KEY_DOWN && + event->type != NSFB_EVENT_KEY_UP) return 0; LOG(("browser window clicked at %d,%d",x,y)); @@ -641,6 +642,9 @@ fb_leftarrow_click(fbtk_widget_t *widget, struct gui_window *gw = pw; struct browser_window *bw = gw->bw; + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + if (history_back_available(bw->history)) history_back(bw, bw->history); @@ -659,6 +663,9 @@ fb_rightarrow_click(fbtk_widget_t *widget, struct gui_window *gw =pw; struct browser_window *bw = gw->bw; + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + if (history_forward_available(bw->history)) history_forward(bw, bw->history); @@ -675,6 +682,10 @@ fb_reload_click(fbtk_widget_t *widget, void *pw) { struct browser_window *bw = pw; + + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + browser_window_reload(bw, true); return 0; } @@ -687,6 +698,10 @@ fb_stop_click(fbtk_widget_t *widget, void *pw) { struct browser_window *bw = pw; + + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + browser_window_stop(bw); return 0; } @@ -698,6 +713,10 @@ fb_scrolll_click(fbtk_widget_t *widget, int x, int y, void *pw) { struct gui_window *gw = pw; + + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + fb_window_scroll(gw->browser, -100, 0); return 0; } @@ -708,6 +727,10 @@ fb_scrollr_click(fbtk_widget_t *widget, int x, int y, void *pw) { struct gui_window *gw = pw; + + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + fb_window_scroll(gw->browser, 100, 0); return 0; @@ -719,6 +742,10 @@ fb_scrollu_click(fbtk_widget_t *widget, int x, int y, void *pw) { struct gui_window *gw = pw; + + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + fb_window_scroll(gw->browser, 0, -100); return 0; @@ -730,6 +757,10 @@ fb_scrolld_click(fbtk_widget_t *widget, int x, int y, void *pw) { struct gui_window *gw = pw; + + if (event->type != NSFB_EVENT_KEY_DOWN) + return 0; + fb_window_scroll(gw->browser, 0, 100); return 0; -- cgit v1.2.3