Author: jmb
Date: Mon Nov 23 16:56:29 2009
New Revision: 9704
URL:
http://source.netsurf-browser.org?rev=9704&view=rev
Log:
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.
Modified:
trunk/netsurf/framebuffer/fbtk.c
trunk/netsurf/framebuffer/gui.c
Modified: trunk/netsurf/framebuffer/fbtk.c
URL:
http://source.netsurf-browser.org/trunk/netsurf/framebuffer/fbtk.c?rev=97...
==============================================================================
--- trunk/netsurf/framebuffer/fbtk.c (original)
+++ trunk/netsurf/framebuffer/fbtk.c Mon Nov 23 16:56:29 2009
@@ -919,10 +919,6 @@
fbtk_widget_t *window;
nsfb_bbox_t cloc;
- /* Don't act on press and release, or everything happens twice */
- if (event->type == NSFB_EVENT_KEY_UP)
- return;
-
/* ensure we have the root widget */
root = get_root_widget(widget);
Modified: trunk/netsurf/framebuffer/gui.c
URL:
http://source.netsurf-browser.org/trunk/netsurf/framebuffer/gui.c?rev=970...
==============================================================================
--- trunk/netsurf/framebuffer/gui.c (original)
+++ trunk/netsurf/framebuffer/gui.c Mon Nov 23 16:56:29 2009
@@ -450,7 +450,8 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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;