diff options
| author | Michael Forney <mforney@mforney.org> | 2017-06-03 11:33:15 -0700 |
|---|---|---|
| committer | Michael Forney <mforney@mforney.org> | 2017-06-03 14:10:48 -0700 |
| commit | b5aa658cacdd1a49a6639a1fb9ebb6a099b8db4e (patch) | |
| tree | e05b2de3b521640ec3087332f12be0da7e96f05c /pkg/netsurf/patch | |
| parent | f8aeeb79ec8cf0c4c3eda17cffeac416790337a7 (diff) | |
netsurf: Use new tiny frontend and remove libnsfb
The tiny backend was written from scratch and offers several
improvements over the framebuffer backend:
- Supports copy-paste.
- Re-uses browser widgets for UI.
- Simpler, and easier to work with.
Diffstat (limited to 'pkg/netsurf/patch')
6 files changed, 0 insertions, 1060 deletions
diff --git a/pkg/netsurf/patch/0001-Remove-non-reproducible-info-from-about-page.patch b/pkg/netsurf/patch/0001-Remove-non-reproducible-info-from-about-page.patch deleted file mode 100644 index 98663d3a..00000000 --- a/pkg/netsurf/patch/0001-Remove-non-reproducible-info-from-about-page.patch +++ /dev/null @@ -1,40 +0,0 @@ -From ba5389200ff60bb5494efe503f1f1fc165383a85 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Fri, 23 Dec 2016 14:41:52 -0800 -Subject: [PATCH] Remove non-reproducible info from about page - ---- - content/fetchers/about.c | 17 ----------------- - 1 file changed, 17 deletions(-) - -diff --git a/content/fetchers/about.c b/content/fetchers/about.c -index 4d14020b0..aff21c81a 100644 ---- a/content/fetchers/about.c -+++ b/content/fetchers/about.c -@@ -477,23 +477,6 @@ static bool fetch_about_testament_handler(struct fetch_about_context *ctx) - if (fetch_about_send_callback(&msg, ctx)) - goto fetch_about_testament_handler_aborted; - -- -- slen = snprintf(buffer, sizeof buffer, -- "Built by %s (%s) from %s at revision %s on %s\n\n", -- GECOS, USERNAME, WT_BRANCHPATH, WT_REVID, WT_COMPILEDATE); -- -- msg.data.header_or_data.len = slen; -- if (fetch_about_send_callback(&msg, ctx)) -- goto fetch_about_testament_handler_aborted; -- -- slen = snprintf(buffer, sizeof buffer, -- "Built on %s in %s\n\n", -- WT_HOSTNAME, WT_ROOT); -- -- msg.data.header_or_data.len = slen; -- if (fetch_about_send_callback(&msg, ctx)) -- goto fetch_about_testament_handler_aborted; -- - if (WT_MODIFIED > 0) { - slen = snprintf(buffer, sizeof buffer, - "Working tree has %d modification%s\n\n", --- -2.11.0 - diff --git a/pkg/netsurf/patch/0002-framebuffer-Set-default-backend-to-wayland.patch b/pkg/netsurf/patch/0002-framebuffer-Set-default-backend-to-wayland.patch deleted file mode 100644 index 4b63ac8e..00000000 --- a/pkg/netsurf/patch/0002-framebuffer-Set-default-backend-to-wayland.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ecd460198f101721260d770a6dcc52922f643a62 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Fri, 23 Dec 2016 15:13:31 -0800 -Subject: [PATCH] framebuffer: Set default backend to wayland - ---- - frontends/framebuffer/gui.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/frontends/framebuffer/gui.c b/frontends/framebuffer/gui.c -index 4d4c7334f..2e819e6fa 100644 ---- a/frontends/framebuffer/gui.c -+++ b/frontends/framebuffer/gui.c -@@ -466,7 +466,7 @@ process_cmdline(int argc, char** argv) - - LOG("argc %d, argv %p", argc, argv); - -- fename = "sdl"; -+ fename = "wayland"; - febpp = 32; - - fewidth = nsoption_int(window_width); --- -2.11.0 - diff --git a/pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch b/pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch deleted file mode 100644 index 17bc12f5..00000000 --- a/pkg/netsurf/patch/0003-framebuffer-Fix-cookie-defaults.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 8a15a5505db85870f340c61fea1db3da16fde039 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Sat, 24 Dec 2016 16:57:34 -0800 -Subject: [PATCH] framebuffer: Fix cookie defaults - ---- - frontends/framebuffer/gui.c | 48 +++++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 46 insertions(+), 2 deletions(-) - -diff --git a/frontends/framebuffer/gui.c b/frontends/framebuffer/gui.c -index 2e819e6fa..e176ac9e4 100644 ---- a/frontends/framebuffer/gui.c -+++ b/frontends/framebuffer/gui.c -@@ -31,6 +31,7 @@ - - #include "utils/utils.h" - #include "utils/nsoption.h" -+#include "utils/file.h" - #include "utils/filepath.h" - #include "utils/log.h" - #include "utils/messages.h" -@@ -61,6 +62,7 @@ - fbtk_widget_t *fbtk; - - static bool fb_complete = false; -+static char *fb_data_home; - - struct gui_window *input_window = NULL; - struct gui_window *search_current_window; -@@ -527,9 +529,18 @@ process_cmdline(int argc, char** argv) - */ - static nserror set_defaults(struct nsoption_s *defaults) - { -+ char *fname; -+ - /* Set defaults for absent option strings */ -- nsoption_setnull_charp(cookie_file, strdup("~/.netsurf/Cookies")); -- nsoption_setnull_charp(cookie_jar, strdup("~/.netsurf/Cookies")); -+ fname = NULL; -+ netsurf_mkpath(&fname, NULL, 2, fb_data_home, "Cookies"); -+ if (fname != NULL) -+ nsoption_setnull_charp(cookie_file, fname); -+ -+ fname = NULL; -+ netsurf_mkpath(&fname, NULL, 2, fb_data_home, "Cookies"); -+ if (fname != NULL) -+ nsoption_setnull_charp(cookie_jar, fname); - - if (nsoption_charp(cookie_file) == NULL || - nsoption_charp(cookie_jar) == NULL) { -@@ -2076,6 +2087,34 @@ static struct gui_misc_table framebuffer_misc_table = { - .quit = gui_quit, - }; - -+static nserror get_data_home(char **data_home_out) -+{ -+ nserror ret; -+ char *xdg_data_home, *data_home, *home; -+ -+ xdg_data_home = getenv("XDG_DATA_HOME"); -+ if ((xdg_data_home == NULL) || (*xdg_data_home == '\0')) { -+ home = getenv("HOME"); -+ if (home == NULL) -+ return NSERROR_NOT_DIRECTORY; -+ ret = netsurf_mkpath(&data_home, NULL, 5, home, ".local", "share", "netsurf", "/"); -+ } else { -+ ret = netsurf_mkpath(&data_home, NULL, 3, xdg_data_home, "netsurf", "/"); -+ } -+ if (ret != NSERROR_OK) -+ return ret; -+ -+ ret = netsurf_mkdir_all(data_home); -+ if (ret != NSERROR_OK) { -+ free(data_home); -+ return ret; -+ } -+ data_home[strlen(data_home) - 1] = 0; -+ *data_home_out = data_home; -+ -+ return NSERROR_OK; -+} -+ - /** Entry point from OS. - * - * /param argc The number of arguments in the string vector. -@@ -2106,6 +2145,11 @@ main(int argc, char** argv) - die("NetSurf operation table failed registration"); - } - -+ ret = get_data_home(&fb_data_home); -+ if (ret != NSERROR_OK) { -+ die("Failed to get home data directory"); -+ } -+ - respaths = fb_init_resource(NETSURF_FB_RESPATH":"NETSURF_FB_FONTPATH); - - /* initialise logging. Not fatal if it fails but not much we --- -2.11.0 - diff --git a/pkg/netsurf/patch/0004-framebuffer-Fix-font-layout-function-return-values.patch b/pkg/netsurf/patch/0004-framebuffer-Fix-font-layout-function-return-values.patch deleted file mode 100644 index accd9cc0..00000000 --- a/pkg/netsurf/patch/0004-framebuffer-Fix-font-layout-function-return-values.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 507e82825f659742b76df9179e59975b3bd55b30 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Sun, 25 Dec 2016 00:23:34 -0800 -Subject: [PATCH] framebuffer: Fix font layout function return values - -The return type is nserror, so they should return NSERROR_OK, not true. ---- - frontends/framebuffer/font_freetype.c | 10 +++++----- - frontends/framebuffer/font_internal.c | 10 +++++----- - 2 files changed, 10 insertions(+), 10 deletions(-) - -diff --git a/frontends/framebuffer/font_freetype.c b/frontends/framebuffer/font_freetype.c -index 9235ad476..42be6d443 100644 ---- a/frontends/framebuffer/font_freetype.c -+++ b/frontends/framebuffer/font_freetype.c -@@ -445,7 +445,7 @@ fb_font_width(const plot_font_style_t *fstyle, - *width += glyph->advance.x >> 16; - } - -- return true; -+ return NSERROR_OK; - } - - -@@ -481,7 +481,7 @@ fb_font_position(const plot_font_style_t *fstyle, - *actual_x = prev_x; - - *char_offset = nxtchr; -- return true; -+ return NSERROR_OK; - } - - -@@ -494,7 +494,7 @@ fb_font_position(const plot_font_style_t *fstyle, - * \param x width available - * \param char_offset updated to offset in string of actual_x, [1..length] - * \param actual_x updated to x coordinate of character closest to x -- * \return true on success, false on error and error reported -+ * \return NSERROR_OK on success or error code on failure - * - * On exit, char_offset indicates first character after split point. - * -@@ -537,7 +537,7 @@ fb_font_split(const plot_font_style_t *fstyle, - * found a space; return previous space */ - *actual_x = last_space_x; - *char_offset = last_space_idx; -- return true; -+ return NSERROR_OK; - } - - nxtchr = utf8_next(string, length, nxtchr); -@@ -545,7 +545,7 @@ fb_font_split(const plot_font_style_t *fstyle, - - *char_offset = nxtchr; - -- return true; -+ return NSERROR_OK; - } - - static struct gui_layout_table layout_table = { -diff --git a/frontends/framebuffer/font_internal.c b/frontends/framebuffer/font_internal.c -index 9164a29db..a9054098f 100644 ---- a/frontends/framebuffer/font_internal.c -+++ b/frontends/framebuffer/font_internal.c -@@ -364,7 +364,7 @@ fb_font_width(const plot_font_style_t *fstyle, - } - - *width *= fb_get_font_size(fstyle); -- return true; -+ return NSERROR_OK; - } - - -@@ -397,7 +397,7 @@ fb_font_position(const plot_font_style_t *fstyle, - *actual_x = x_pos; - - *char_offset = nxtchr; -- return true; -+ return NSERROR_OK; - } - - -@@ -410,7 +410,7 @@ fb_font_position(const plot_font_style_t *fstyle, - * \param x width available - * \param char_offset updated to offset in string of actual_x, [1..length] - * \param actual_x updated to x coordinate of character closest to x -- * \return true on success, false on error and error reported -+ * \return NSERROR_OK on success or error code on failure - * - * On exit, char_offset indicates first character after split point. - * -@@ -455,7 +455,7 @@ fb_font_split(const plot_font_style_t *fstyle, - * found a space; return previous space */ - *actual_x = last_space_x; - *char_offset = last_space_idx; -- return true; -+ return NSERROR_OK; - } - - nxtchr = utf8_next(string, length, nxtchr); -@@ -463,7 +463,7 @@ fb_font_split(const plot_font_style_t *fstyle, - - *char_offset = nxtchr; - -- return true; -+ return NSERROR_OK; - } - - --- -2.11.0 - diff --git a/pkg/netsurf/patch/0005-framebuffer-Use-XKB-key-events.patch b/pkg/netsurf/patch/0005-framebuffer-Use-XKB-key-events.patch deleted file mode 100644 index e79e4f4c..00000000 --- a/pkg/netsurf/patch/0005-framebuffer-Use-XKB-key-events.patch +++ /dev/null @@ -1,558 +0,0 @@ -From e8a794e1ee7422613be28dbe6263b5877d9bf840 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Sun, 25 Dec 2016 14:46:31 -0800 -Subject: [PATCH] framebuffer: Use XKB key events - ---- - frontends/framebuffer/fbtk/event.c | 86 +------------ - frontends/framebuffer/fbtk/text.c | 83 ++++--------- - frontends/framebuffer/gui.c | 240 +++++++++++++++---------------------- - 3 files changed, 128 insertions(+), 281 deletions(-) - -diff --git a/frontends/framebuffer/fbtk/event.c b/frontends/framebuffer/fbtk/event.c -index a48e63809..29eed3286 100644 ---- a/frontends/framebuffer/fbtk/event.c -+++ b/frontends/framebuffer/fbtk/event.c -@@ -224,6 +224,11 @@ fbtk_event(fbtk_widget_t *root, nsfb_event_t *event, int timeout) - } - break; - -+ case NSFB_EVENT_XKB_KEY_DOWN: -+ case NSFB_EVENT_XKB_KEY_UP: -+ fbtk_input(root, event); -+ break; -+ - case NSFB_EVENT_CONTROL: - unused = true; - break; -@@ -261,87 +266,6 @@ fbtk_event(fbtk_widget_t *root, nsfb_event_t *event, int timeout) - return unused; - } - --static int keymap[] = { -- /* 0 1 2 3 4 5 6 7 8 9 */ -- -1, -1, -1, -1, -1, -1, -1, -1, 8, 9, /* 0 - 9 */ -- -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, /* 10 - 19 */ -- -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, /* 20 - 29 */ -- -1, -1, ' ', '!', '"', '#', '$', -1, '&','\'', /* 30 - 39 */ -- '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', /* 40 - 49 */ -- '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', /* 50 - 59 */ -- '<', '=', '>', '?', '@', -1, -1, -1, -1, -1, /* 60 - 69 */ -- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 70 - 79 */ -- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 80 - 89 */ -- -1, '[','\\', ']', '~', '_', '`', 'a', 'b', 'c', /* 90 - 99 */ -- 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', /* 100 - 109 */ -- 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', /* 110 - 119 */ -- 'x', 'y', 'z', -1, -1, -1, -1, -1, -1, -1, /* 120 - 129 */ --}; -- --static int sh_keymap[] = { -- /* 0 1 2 3 4 5 6 7 8 9 */ -- -1, -1, -1, -1, -1, -1, -1, -1, 8, 9, /* 0 - 9 */ -- -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, /* 10 - 19 */ -- -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, /* 20 - 29 */ -- -1, -1, ' ', '!', '"', '~', '$', -1, '&', '@', /* 30 - 39 */ -- '(', ')', '*', '+', '<', '_', '>', '?', ')', '!', /* 40 - 49 */ -- '"', 243, '$', '%', '^', '&', '*', '(', ';', ':', /* 50 - 59 */ -- '<', '+', '>', '?', '@', -1, -1, -1, -1, -1, /* 60 - 69 */ -- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 70 - 79 */ -- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 80 - 89 */ -- -1, '{', '|', '}', '~', '_', 254, 'A', 'B', 'C', /* 90 - 99 */ -- 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', /* 100 - 109 */ -- 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', /* 110 - 119 */ -- 'X', 'Y', 'Z', -1, -1, -1, -1, -1, -1, -1, /* 120 - 129 */ --}; -- -- --/* exported function documented in fbtk.h */ --int --fbtk_keycode_to_ucs4(int code, fbtk_modifier_type mods) --{ -- int ucs4 = -1; -- -- if (mods & FBTK_MOD_LSHIFT || mods & FBTK_MOD_RSHIFT) { -- if ((code >= 0) && (code < (int) NOF_ELEMENTS(sh_keymap))) -- ucs4 = sh_keymap[code]; -- -- } else if (mods == FBTK_MOD_CLEAR) { -- if ((code >= 0) && (code < (int) NOF_ELEMENTS(keymap))) -- ucs4 = keymap[code]; -- -- } else if (mods & FBTK_MOD_LCTRL || mods & FBTK_MOD_RCTRL) { -- switch (code) { -- case NSFB_KEY_a: -- ucs4 = NS_KEY_SELECT_ALL; -- break; -- -- case NSFB_KEY_c: -- ucs4 = NS_KEY_COPY_SELECTION; -- break; -- -- case NSFB_KEY_u: -- ucs4 = NS_KEY_DELETE_LINE; -- break; -- -- case NSFB_KEY_v: -- ucs4 = NS_KEY_PASTE; -- break; -- -- case NSFB_KEY_x: -- ucs4 = NS_KEY_CUT_SELECTION; -- break; -- -- case NSFB_KEY_z: -- ucs4 = NS_KEY_CLEAR_SELECTION; -- break; -- default: -- break; -- } -- } -- return ucs4; --} -- - /* - * Local Variables: - * c-basic-offset:8 -diff --git a/frontends/framebuffer/fbtk/text.c b/frontends/framebuffer/fbtk/text.c -index 00dcba491..95333a52f 100644 ---- a/frontends/framebuffer/fbtk/text.c -+++ b/frontends/framebuffer/fbtk/text.c -@@ -26,6 +26,7 @@ - #include <libnsfb_plot.h> - #include <libnsfb_plot_util.h> - #include <libnsfb_event.h> -+#include <xkbcommon/xkbcommon.h> - - #include "utils/log.h" - #include "netsurf/browser_window.h" -@@ -287,13 +288,14 @@ fb_text_input_remove_caret_cb(fbtk_widget_t *widget) - static int - text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - { -- int value; -- static fbtk_modifier_type modifier = FBTK_MOD_CLEAR; -+ xkb_keysym_t sym; -+ enum nsfb_mod_e mods; - char *temp; - plot_font_style_t font_style; - int fh; - int border; - bool caret_moved = false; -+ uint32_t key; - - fb_text_font_style(widget, &fh, &border, &font_style); - -@@ -305,34 +307,14 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - return 0; - } - -- value = cbi->event->value.keycode; -- -- if (cbi->event->type != NSFB_EVENT_KEY_DOWN) { -- switch (value) { -- case NSFB_KEY_RSHIFT: -- modifier &= ~FBTK_MOD_RSHIFT; -- break; -- -- case NSFB_KEY_LSHIFT: -- modifier &= ~FBTK_MOD_LSHIFT; -- break; -- -- case NSFB_KEY_RCTRL: -- modifier &= ~FBTK_MOD_RCTRL; -- break; -- -- case NSFB_KEY_LCTRL: -- modifier &= ~FBTK_MOD_LCTRL; -- break; -- -- default: -- break; -- } -+ if (cbi->event->type != NSFB_EVENT_XKB_KEY_DOWN) - return 0; -- } - -- switch (value) { -- case NSFB_KEY_BACKSPACE: -+ sym = cbi->event->value.xkb.sym; -+ mods = cbi->event->value.xkb.mod; -+ -+ switch (sym) { -+ case XKB_KEY_BackSpace: - if (widget->u.text.idx <= 0) - break; - memmove(widget->u.text.text + widget->u.text.idx - 1, -@@ -348,13 +330,13 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - caret_moved = true; - break; - -- case NSFB_KEY_RETURN: -+ case XKB_KEY_Return: - widget->u.text.enter(widget->u.text.pw, widget->u.text.text); - break; - -- case NSFB_KEY_RIGHT: -+ case XKB_KEY_Right: - if (widget->u.text.idx < widget->u.text.len) { -- if (modifier == FBTK_MOD_CLEAR) -+ if (mods == 0) - widget->u.text.idx++; - else - widget->u.text.idx = widget->u.text.len; -@@ -363,9 +345,9 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - } - break; - -- case NSFB_KEY_LEFT: -+ case XKB_KEY_Left: - if (widget->u.text.idx > 0) { -- if (modifier == FBTK_MOD_CLEAR) -+ if (mods == 0) - widget->u.text.idx--; - else - widget->u.text.idx = 0; -@@ -374,34 +356,18 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - } - break; - -- case NSFB_KEY_PAGEUP: -- case NSFB_KEY_PAGEDOWN: -- case NSFB_KEY_UP: -- case NSFB_KEY_DOWN: -+ case XKB_KEY_Page_Up: -+ case XKB_KEY_Page_Down: -+ case XKB_KEY_Up: -+ case XKB_KEY_Down: - /* Not handling any of these correctly yet, but avoid putting - * charcters in the text widget when they're pressed. */ - break; - -- case NSFB_KEY_RSHIFT: -- modifier |= FBTK_MOD_RSHIFT; -- break; -- -- case NSFB_KEY_LSHIFT: -- modifier |= FBTK_MOD_LSHIFT; -- break; -- -- case NSFB_KEY_RCTRL: -- modifier |= FBTK_MOD_RCTRL; -- break; -- -- case NSFB_KEY_LCTRL: -- modifier |= FBTK_MOD_LCTRL; -- break; -- - default: -- if (modifier & FBTK_MOD_LCTRL || modifier & FBTK_MOD_RCTRL) { -+ if (mods & NSFB_MOD_CTRL) { - /* CTRL pressed, don't enter any text */ -- if (value == NSFB_KEY_u) { -+ if (sym == XKB_KEY_u) { - /* CTRL+U: clear writable */ - widget->u.text.idx = 0; - widget->u.text.len = 0; -@@ -412,6 +378,10 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - break; - } - -+ key = xkb_keysym_to_utf32(sym); -+ if (key == 0) -+ break; -+ - /* allow for new character and null */ - temp = realloc(widget->u.text.text, widget->u.text.len + 2); - if (temp == NULL) { -@@ -422,8 +392,7 @@ text_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - memmove(widget->u.text.text + widget->u.text.idx + 1, - widget->u.text.text + widget->u.text.idx, - widget->u.text.len - widget->u.text.idx); -- widget->u.text.text[widget->u.text.idx] = -- fbtk_keycode_to_ucs4(value, modifier); -+ widget->u.text.text[widget->u.text.idx] = key; - widget->u.text.idx++; - widget->u.text.len++; - widget->u.text.text[widget->u.text.len] = '\0'; -diff --git a/frontends/framebuffer/gui.c b/frontends/framebuffer/gui.c -index e176ac9e4..6bf5152c0 100644 ---- a/frontends/framebuffer/gui.c -+++ b/frontends/framebuffer/gui.c -@@ -28,6 +28,7 @@ - #include <libnsfb.h> - #include <libnsfb_plot.h> - #include <libnsfb_event.h> -+#include <xkbcommon/xkbcommon.h> - - #include "utils/utils.h" - #include "utils/nsoption.h" -@@ -831,170 +832,123 @@ static int - fb_browser_window_input(fbtk_widget_t *widget, fbtk_callback_info *cbi) - { - struct gui_window *gw = cbi->context; -- static fbtk_modifier_type modifier = FBTK_MOD_CLEAR; -- int ucs4 = -1; -+ xkb_keysym_t sym = cbi->event->value.xkb.sym; -+ enum nsfb_mod_e mods = cbi->event->value.xkb.mod; -+ uint32_t key; - -- LOG("got value %d", cbi->event->value.keycode); -- -- switch (cbi->event->type) { -- case NSFB_EVENT_KEY_DOWN: -- switch (cbi->event->value.keycode) { -- -- case NSFB_KEY_DELETE: -- browser_window_key_press(gw->bw, NS_KEY_DELETE_RIGHT); -- break; -+ if (cbi->event->type != NSFB_EVENT_XKB_KEY_DOWN) -+ return 0; - -- case NSFB_KEY_PAGEUP: -- if (browser_window_key_press(gw->bw, -- NS_KEY_PAGE_UP) == false) -- widget_scroll_y(gw, -fbtk_get_height( -- gw->browser), false); -- break; -+ LOG("got value %d", cbi->event->value.xkb.sym); - -- case NSFB_KEY_PAGEDOWN: -- if (browser_window_key_press(gw->bw, -- NS_KEY_PAGE_DOWN) == false) -- widget_scroll_y(gw, fbtk_get_height( -- gw->browser), false); -- break; -+ switch (sym) { -+ case XKB_KEY_Delete: -+ browser_window_key_press(gw->bw, NS_KEY_DELETE_RIGHT); -+ break; - -- case NSFB_KEY_RIGHT: -- if (modifier & FBTK_MOD_RCTRL || -- modifier & FBTK_MOD_LCTRL) { -- /* CTRL held */ -- if (browser_window_key_press(gw->bw, -- NS_KEY_LINE_END) == false) -- widget_scroll_x(gw, INT_MAX, true); -- -- } else if (modifier & FBTK_MOD_RSHIFT || -- modifier & FBTK_MOD_LSHIFT) { -- /* SHIFT held */ -- if (browser_window_key_press(gw->bw, -- NS_KEY_WORD_RIGHT) == false) -- widget_scroll_x(gw, fbtk_get_width( -- gw->browser), false); -+ case XKB_KEY_Page_Up: -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_PAGE_UP) == false) -+ widget_scroll_y(gw, -fbtk_get_height( -+ gw->browser), false); -+ break; - -- } else { -- /* no modifier */ -- if (browser_window_key_press(gw->bw, -- NS_KEY_RIGHT) == false) -- widget_scroll_x(gw, 100, false); -- } -- break; -+ case XKB_KEY_Page_Down: -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_PAGE_DOWN) == false) -+ widget_scroll_y(gw, fbtk_get_height( -+ gw->browser), false); -+ break; - -- case NSFB_KEY_LEFT: -- if (modifier & FBTK_MOD_RCTRL || -- modifier & FBTK_MOD_LCTRL) { -- /* CTRL held */ -- if (browser_window_key_press(gw->bw, -- NS_KEY_LINE_START) == false) -- widget_scroll_x(gw, 0, true); -- -- } else if (modifier & FBTK_MOD_RSHIFT || -- modifier & FBTK_MOD_LSHIFT) { -- /* SHIFT held */ -- if (browser_window_key_press(gw->bw, -- NS_KEY_WORD_LEFT) == false) -- widget_scroll_x(gw, -fbtk_get_width( -- gw->browser), false); -+ case XKB_KEY_Right: -+ if (mods & NSFB_MOD_CTRL) { -+ /* CTRL held */ -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_LINE_END) == false) -+ widget_scroll_x(gw, INT_MAX, true); - -- } else { -- /* no modifier */ -- if (browser_window_key_press(gw->bw, -- NS_KEY_LEFT) == false) -- widget_scroll_x(gw, -100, false); -- } -- break; -+ } else if (mods & NSFB_MOD_SHIFT) { -+ /* SHIFT held */ -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_WORD_RIGHT) == false) -+ widget_scroll_x(gw, fbtk_get_width( -+ gw->browser), false); - -- case NSFB_KEY_UP: -+ } else { -+ /* no modifier */ - if (browser_window_key_press(gw->bw, -- NS_KEY_UP) == false) -- widget_scroll_y(gw, -100, false); -- break; -+ NS_KEY_RIGHT) == false) -+ widget_scroll_x(gw, 100, false); -+ } -+ break; - -- case NSFB_KEY_DOWN: -+ case XKB_KEY_Left: -+ if (mods & NSFB_MOD_CTRL) { -+ /* CTRL held */ - if (browser_window_key_press(gw->bw, -- NS_KEY_DOWN) == false) -- widget_scroll_y(gw, 100, false); -- break; -+ NS_KEY_LINE_START) == false) -+ widget_scroll_x(gw, 0, true); - -- case NSFB_KEY_RSHIFT: -- modifier |= FBTK_MOD_RSHIFT; -- break; -+ } else if (mods & NSFB_MOD_SHIFT) { -+ /* SHIFT held */ -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_WORD_LEFT) == false) -+ widget_scroll_x(gw, -fbtk_get_width( -+ gw->browser), false); - -- case NSFB_KEY_LSHIFT: -- modifier |= FBTK_MOD_LSHIFT; -- break; -+ } else { -+ /* no modifier */ -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_LEFT) == false) -+ widget_scroll_x(gw, -100, false); -+ } -+ break; - -- case NSFB_KEY_RCTRL: -- modifier |= FBTK_MOD_RCTRL; -- break; -+ case XKB_KEY_Up: -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_UP) == false) -+ widget_scroll_y(gw, -100, false); -+ break; - -- case NSFB_KEY_LCTRL: -- modifier |= FBTK_MOD_LCTRL; -- break; -+ case XKB_KEY_Down: -+ if (browser_window_key_press(gw->bw, -+ NS_KEY_DOWN) == false) -+ widget_scroll_y(gw, 100, false); -+ break; - -- case NSFB_KEY_y: -- case NSFB_KEY_z: -- if (cbi->event->value.keycode == NSFB_KEY_z && -- (modifier & FBTK_MOD_RCTRL || -- modifier & FBTK_MOD_LCTRL) && -- (modifier & FBTK_MOD_RSHIFT || -- modifier & FBTK_MOD_LSHIFT)) { -- /* Z pressed with CTRL and SHIFT held */ -- browser_window_key_press(gw->bw, NS_KEY_REDO); -+ default: -+ if (mods & NSFB_MOD_CTRL) { -+ switch (sym) { -+ case XKB_KEY_a: -+ key = NS_KEY_SELECT_ALL; - break; -- -- } else if (cbi->event->value.keycode == NSFB_KEY_z && -- (modifier & FBTK_MOD_RCTRL || -- modifier & FBTK_MOD_LCTRL)) { -- /* Z pressed with CTRL held */ -- browser_window_key_press(gw->bw, NS_KEY_UNDO); -+ case XKB_KEY_c: -+ key = NS_KEY_COPY_SELECTION; - break; -- -- } else if (cbi->event->value.keycode == NSFB_KEY_y && -- (modifier & FBTK_MOD_RCTRL || -- modifier & FBTK_MOD_LCTRL)) { -- /* Y pressed with CTRL held */ -- browser_window_key_press(gw->bw, NS_KEY_REDO); -+ case XKB_KEY_u: -+ key = NS_KEY_DELETE_LINE; -+ break; -+ case XKB_KEY_v: -+ key = NS_KEY_PASTE; -+ break; -+ case XKB_KEY_x: -+ key = NS_KEY_CUT_SELECTION; -+ break; -+ case XKB_KEY_y: -+ key = NS_KEY_REDO; -+ break; -+ case XKB_KEY_z: -+ key = mods & NSFB_MOD_SHIFT ? NS_KEY_REDO : NS_KEY_UNDO; -+ break; -+ default: -+ key = 0; - break; - } -- /* Z or Y pressed but not undo or redo; -- * Fall through to default handling */ -- -- default: -- ucs4 = fbtk_keycode_to_ucs4(cbi->event->value.keycode, -- modifier); -- if (ucs4 != -1) -- browser_window_key_press(gw->bw, ucs4); -- break; -- } -- break; -- -- case NSFB_EVENT_KEY_UP: -- switch (cbi->event->value.keycode) { -- case NSFB_KEY_RSHIFT: -- modifier &= ~FBTK_MOD_RSHIFT; -- break; -- -- case NSFB_KEY_LSHIFT: -- modifier &= ~FBTK_MOD_LSHIFT; -- break; -- -- case NSFB_KEY_RCTRL: -- modifier &= ~FBTK_MOD_RCTRL; -- break; -- -- case NSFB_KEY_LCTRL: -- modifier &= ~FBTK_MOD_LCTRL; -- break; -- -- default: -- break; - } -- break; -- -- default: -+ if (key == 0) -+ key = xkb_keysym_to_utf32(cbi->event->value.xkb.sym); -+ if (key != 0) -+ browser_window_key_press(gw->bw, key); - break; - } - --- -2.11.0 - diff --git a/pkg/netsurf/patch/0006-framebuffer-Use-cursor-shapes.patch b/pkg/netsurf/patch/0006-framebuffer-Use-cursor-shapes.patch deleted file mode 100644 index 8b2e069e..00000000 --- a/pkg/netsurf/patch/0006-framebuffer-Use-cursor-shapes.patch +++ /dev/null @@ -1,225 +0,0 @@ -From f035892771ed294255b5516547419704827c8f19 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Fri, 30 Dec 2016 01:50:18 -0800 -Subject: [PATCH] framebuffer: Use cursor shapes - ---- - frontends/framebuffer/bitmap.c | 1 + - frontends/framebuffer/fbtk/bitmap.c | 4 +++- - frontends/framebuffer/fbtk/fbtk.c | 12 +++--------- - frontends/framebuffer/fbtk/text.c | 4 +++- - frontends/framebuffer/framebuffer.c | 6 ++++++ - frontends/framebuffer/framebuffer.h | 1 + - frontends/framebuffer/gui.c | 19 ++++++++++--------- - frontends/framebuffer/localhistory.c | 1 + - 8 files changed, 28 insertions(+), 20 deletions(-) - -diff --git a/frontends/framebuffer/bitmap.c b/frontends/framebuffer/bitmap.c -index 027e0122b..f3f6a6406 100644 ---- a/frontends/framebuffer/bitmap.c -+++ b/frontends/framebuffer/bitmap.c -@@ -27,6 +27,7 @@ - #include <assert.h> - #include <libnsfb.h> - #include <libnsfb_plot.h> -+#include <libnsfb_cursor.h> - - #include "utils/log.h" - #include "utils/utils.h" -diff --git a/frontends/framebuffer/fbtk/bitmap.c b/frontends/framebuffer/fbtk/bitmap.c -index 759b626d9..40b2e6255 100644 ---- a/frontends/framebuffer/fbtk/bitmap.c -+++ b/frontends/framebuffer/fbtk/bitmap.c -@@ -23,6 +23,7 @@ - - #include <libnsfb.h> - #include <libnsfb_plot.h> -+#include <libnsfb_cursor.h> - - #include "netsurf/browser_window.h" - -@@ -114,6 +115,7 @@ fbtk_create_button(fbtk_widget_t *parent, - fbtk_callback click, - void *pw) - { -+ static enum nsfb_cursor_shape_e shape = NSFB_CURSOR_POINT; - fbtk_widget_t *neww; - - neww = fbtk_widget_new(parent, FB_WIDGET_TYPE_BITMAP, x, y, width, height); -@@ -124,7 +126,7 @@ fbtk_create_button(fbtk_widget_t *parent, - - fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_bitmap, NULL); - fbtk_set_handler(neww, FBTK_CBT_CLICK, click, pw); -- fbtk_set_handler(neww, FBTK_CBT_POINTERENTER, fbtk_set_ptr, &hand_image); -+ fbtk_set_handler(neww, FBTK_CBT_POINTERENTER, fbtk_set_ptr, &shape); - - return neww; - } -diff --git a/frontends/framebuffer/fbtk/fbtk.c b/frontends/framebuffer/fbtk/fbtk.c -index c63a6d8c9..65bf4c532 100644 ---- a/frontends/framebuffer/fbtk/fbtk.c -+++ b/frontends/framebuffer/fbtk/fbtk.c -@@ -387,15 +387,9 @@ int - fbtk_set_ptr(fbtk_widget_t *widget, fbtk_callback_info *cbi) - { - fbtk_widget_t *root = fbtk_get_root_widget(widget); -- struct fbtk_bitmap *bm = cbi->context; -- -- nsfb_cursor_set(root->u.root.fb, -- (nsfb_colour_t *)bm->pixdata, -- bm->width, -- bm->height, -- bm->width, -- bm->hot_x, -- bm->hot_y); -+ enum nsfb_cursor_shape_e *shape = cbi->context; -+ -+ nsfb_cursor_shape_set(root->u.root.fb, *shape); - - return 0; - } -diff --git a/frontends/framebuffer/fbtk/text.c b/frontends/framebuffer/fbtk/text.c -index 95333a52f..ec1d285c1 100644 ---- a/frontends/framebuffer/fbtk/text.c -+++ b/frontends/framebuffer/fbtk/text.c -@@ -25,6 +25,7 @@ - #include <libnsfb.h> - #include <libnsfb_plot.h> - #include <libnsfb_plot_util.h> -+#include <libnsfb_cursor.h> - #include <libnsfb_event.h> - #include <xkbcommon/xkbcommon.h> - -@@ -585,6 +586,7 @@ fbtk_create_text_button(fbtk_widget_t *parent, - fbtk_callback click, - void *pw) - { -+ static enum nsfb_cursor_shape_e shape = NSFB_CURSOR_POINT; - fbtk_widget_t *neww; - - neww = fbtk_widget_new(parent, FB_WIDGET_TYPE_TEXT, x, y, width, height); -@@ -597,7 +599,7 @@ fbtk_create_text_button(fbtk_widget_t *parent, - fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_text_button, NULL); - fbtk_set_handler(neww, FBTK_CBT_DESTROY, fb_destroy_text, NULL); - fbtk_set_handler(neww, FBTK_CBT_CLICK, click, pw); -- fbtk_set_handler(neww, FBTK_CBT_POINTERENTER, fbtk_set_ptr, &hand_image); -+ fbtk_set_handler(neww, FBTK_CBT_POINTERENTER, fbtk_set_ptr, &shape); - - return neww; - } -diff --git a/frontends/framebuffer/framebuffer.c b/frontends/framebuffer/framebuffer.c -index 74c72fe71..9344b8277 100644 ---- a/frontends/framebuffer/framebuffer.c -+++ b/frontends/framebuffer/framebuffer.c -@@ -456,6 +456,12 @@ bool - framebuffer_set_cursor(struct fbtk_bitmap *bm) - { - return nsfb_cursor_set(nsfb, (nsfb_colour_t *)bm->pixdata, bm->width, bm->height, bm->width, bm->hot_x, bm->hot_y); -+} -+ -+bool -+framebuffer_set_cursor_shape(enum nsfb_cursor_shape_e shape) -+{ -+ return nsfb_cursor_shape_set(nsfb, shape); - } - - nsfb_t *framebuffer_set_surface(nsfb_t *new_nsfb) -diff --git a/frontends/framebuffer/framebuffer.h b/frontends/framebuffer/framebuffer.h -index d99049f52..e4050f51d 100644 ---- a/frontends/framebuffer/framebuffer.h -+++ b/frontends/framebuffer/framebuffer.h -@@ -30,6 +30,7 @@ nsfb_t *framebuffer_initialise(const char *fename, int width, int height, int bp - bool framebuffer_resize(nsfb_t *nsfb, int width, int height, int bpp); - void framebuffer_finalise(void); - bool framebuffer_set_cursor(struct fbtk_bitmap *bm); -+bool framebuffer_set_cursor_shape(enum nsfb_cursor_shape_e shape); - - /** Set framebuffer surface to render into - * -diff --git a/frontends/framebuffer/gui.c b/frontends/framebuffer/gui.c -index 6bf5152c0..2704f3dbf 100644 ---- a/frontends/framebuffer/gui.c -+++ b/frontends/framebuffer/gui.c -@@ -27,6 +27,7 @@ - - #include <libnsfb.h> - #include <libnsfb_plot.h> -+#include <libnsfb_cursor.h> - #include <libnsfb_event.h> - #include <xkbcommon/xkbcommon.h> - -@@ -1096,14 +1097,14 @@ fb_url_enter(void *pw, char *text) - static int - fb_url_move(fbtk_widget_t *widget, fbtk_callback_info *cbi) - { -- framebuffer_set_cursor(&caret_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_CARET); - return 0; - } - - static int - set_ptr_default_move(fbtk_widget_t *widget, fbtk_callback_info *cbi) - { -- framebuffer_set_cursor(&pointer_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_DEFAULT); - return 0; - } - -@@ -1851,27 +1852,27 @@ gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape) - { - switch (shape) { - case GUI_POINTER_POINT: -- framebuffer_set_cursor(&hand_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_POINT); - break; - - case GUI_POINTER_CARET: -- framebuffer_set_cursor(&caret_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_CARET); - break; - - case GUI_POINTER_MENU: -- framebuffer_set_cursor(&menu_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_MENU); - break; - - case GUI_POINTER_PROGRESS: -- framebuffer_set_cursor(&progress_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_PROGRESS); - break; - - case GUI_POINTER_MOVE: -- framebuffer_set_cursor(&move_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_MOVE); - break; - - default: -- framebuffer_set_cursor(&pointer_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_DEFAULT); - break; - } - } -@@ -2145,7 +2146,7 @@ main(int argc, char** argv) - if (nsfb == NULL) - die("Unable to initialise framebuffer"); - -- framebuffer_set_cursor(&pointer_image); -+ framebuffer_set_cursor_shape(NSFB_CURSOR_DEFAULT); - - if (fb_font_init() == false) - die("Unable to initialise the font system"); -diff --git a/frontends/framebuffer/localhistory.c b/frontends/framebuffer/localhistory.c -index 3192f0747..97d0f2036 100644 ---- a/frontends/framebuffer/localhistory.c -+++ b/frontends/framebuffer/localhistory.c -@@ -22,6 +22,7 @@ - - #include <libnsfb.h> - #include <libnsfb_plot.h> -+#include <libnsfb_cursor.h> - #include <libnsfb_event.h> - - #include "desktop/browser_history.h" --- -2.11.0 - |
