Commit Graph

2043 Commits

Author SHA1 Message Date
Michael Drake
a72771f8eb Browser: Don't add history entry until after reformat.
Adding a history entry causes content_redraw() for the thumbnail.
But we can't content_redraw() until after content_reformat().

Otherwise we get HTML redraw before HTML layout has happened.
2018-04-14 17:00:18 +01:00
John-Mark Bell
7a75ec1576 History: don't update if there's no content.
Fixes #2566.
2018-01-20 18:47:26 +00:00
Michael Drake
6be6fa1b21 CSS utils: Handle new units in length conversion routines.
This causes a ripple effect of all the callsites needing
information they didn't have.
2018-01-05 13:49:51 +00:00
Michael Drake
2557335f1b Squash GCC7 warning for ‘~’ on a boolean expression. 2017-10-23 09:50:27 +01:00
Vincent Sanders
7fa4b36245 Update version for next development cycle 2017-10-15 14:44:53 +01:00
Michael Drake
8f0f44e3d1 Treeview: Ignore mouse leaving the treeview window. 2017-09-27 17:47:34 +01:00
Michael Drake
3f4bc9d284 Treeview: Deactivate search on cancel. 2017-09-25 12:02:14 +01:00
Michael Drake
9ca33854bf Browser history: Don't segfault when visiting pages with frames.
Core can't make queries of front end about browser windows with no
gui window.
2017-09-23 16:10:45 +01:00
Michael Drake
fb4be0feb2 Browser history: Create new history entries early in the READY state.
This prevents us updating the previous history entry with this page's
scroll offsets.
2017-09-23 16:03:31 +01:00
Michael Drake
628fb0ceef Browser history: Update history scroll offsets on scroll to fragment. 2017-09-23 16:02:38 +01:00
Daniel Silverstone
a43d0cec7a Add concept of browser scroll offset saving in local history 2017-09-23 14:55:52 +01:00
Michael Drake
f86e9e505d Treeview: When expanding nodes in search view, adjust height only for matching entries. 2017-09-22 09:39:47 +01:00
Michael Drake
f653c33147 Treeview: Ensure we know our treeview when doing treeview node collapse. 2017-09-22 09:39:02 +01:00
Michael Drake
73adebf263 Treeview: Cancel any search when treeview is detatched from its corewindow. 2017-09-22 09:37:50 +01:00
Michael Drake
798bfbf80f Treeview: Split out search cancel functionality. 2017-09-22 09:37:25 +01:00
Michael Drake
3b1992d3f4 Treeview: Destroy search first on treeview destruction. 2017-09-18 23:32:36 +01:00
Michael Drake
ec4b9a5dd0 Hotlist (bookmarks): Include the URL field in search. 2017-09-18 23:18:44 +01:00
Michael Drake
9b0a3cc35e Global history: Flag the URL field as searchable, as well. 2017-09-18 23:18:44 +01:00
Michael Drake
e8b9678d3e Cookie manager: Flag the domain field as searchable; more use than name. 2017-09-18 23:18:44 +01:00
Michael Drake
fae758f5a9 Treeview: Avoid searching empty treeview. 2017-09-18 23:18:44 +01:00
Michael Drake
bfdabbf478 Cookie manager: Enable search feature. 2017-09-18 23:18:44 +01:00
Michael Drake
fb5344df09 Hotlist (bookmarks): Enable search feature. 2017-09-18 23:18:44 +01:00
Michael Drake
88c9a2e12d Global history: Enable search feature. 2017-09-18 23:18:44 +01:00
Michael Drake
4e224135ec Treeview: Handle node expansion on switch between search and normal view. 2017-09-18 23:18:44 +01:00
Michael Drake
39ab8b6233 Treeview: Update search filtered display on treeview changes. 2017-09-18 23:18:44 +01:00
Michael Drake
2a294adfb1 Textarea: Add API to access current textarea contents. 2017-09-18 23:18:44 +01:00
Michael Drake
4d84222654 Treeview: Update search bar display when it loses focus. 2017-09-18 23:18:44 +01:00
Michael Drake
f211b6c89a Treeview: Only let search textarea consume mouse if not dragging. 2017-09-18 23:18:44 +01:00
Michael Drake
89dd127a80 Treeview: Update mouse handling details for filtered view.
No moves are allowed in viltered view.
Node indents are constant in filtered view.
2017-09-18 23:18:44 +01:00
Michael Drake
283fb36339 Treeview: Update treeview walker to handle walking the filtered display. 2017-09-18 23:18:44 +01:00
Michael Drake
f142b3684c Treeview: Track height of display in search view. 2017-09-18 23:18:44 +01:00
Michael Drake
45a7e6269b Treeview: Slight simplification of treeview_walk_internal(). 2017-09-18 23:18:44 +01:00
Michael Drake
0a0ad71bdb Treeview: Fix function namespace. 2017-09-18 23:18:44 +01:00
Michael Drake
db6b3441c4 Treeview: Scroll to top when treeview search bar is modified. 2017-09-18 23:18:44 +01:00
Vincent Sanders
8afeffedad fix warning due to undefined bitmap structure 2017-09-11 16:44:46 +01:00
Vincent Sanders
d2d5ef276b annotate error case fall through in switch to supress warnings 2017-09-11 16:43:25 +01:00
Vincent Sanders
8fb2fc6fc3 rationalise history icon bitmap handling to ensure correct lifetime 2017-09-10 16:06:38 +01:00
Michael Drake
c20ad21273 Treeview: Add support for rendering search filter matches as-you-type. 2017-09-10 15:53:15 +01:00
Michael Drake
c478f35c81 Treeview: Split tree-style treeview rendering out into helper. 2017-09-10 15:53:15 +01:00
Michael Drake
f41f7486ba Treeview: Add node matching to search text modification callback. 2017-09-10 15:53:15 +01:00
Michael Drake
d627b930f2 Treeview: API: Allow treeview fields to be flagged searchable. 2017-09-10 15:53:15 +01:00
Michael Drake
50688cde51 Treeview: Improve some code wrapping. 2017-09-10 15:53:15 +01:00
Michael Drake
37127c4a52 Treeview: Ensure window extents take account of search bar presence. 2017-09-10 15:53:15 +01:00
Michael Drake
43cdd74221 Treeview: Add keypress handling to the search bar. 2017-09-10 15:53:15 +01:00
Michael Drake
3a02a4ea48 Treeview: Handle mouse clicks on search bar. 2017-09-10 15:53:15 +01:00
Michael Drake
adbcb7f1b9 Treeview: Update treeview mouse handling to offset for search bar presence. 2017-09-10 15:53:15 +01:00
Michael Drake
f877069399 Treeview: Add search bar rendering to redraw function. 2017-09-10 15:53:15 +01:00
Michael Drake
3d2adf4330 Treeview: Create and destroy a textarea for search. 2017-09-10 15:53:15 +01:00
Michael Drake
1420d01a21 Treeview: Add search drag type to enumeration. 2017-09-10 15:53:15 +01:00
Michael Drake
521651ea51 Treeview: API: Add searchable flag for treeview creation. 2017-09-10 15:53:15 +01:00
Vincent Sanders
ec94d5f812 move history bitmap thumbnail into the page information structure 2017-09-10 10:31:06 +01:00
Michael Drake
02a8b5bca0 Treeview: Split out textarea construction helper. 2017-09-09 14:38:49 +01:00
Daniel Silverstone
bb056e55b1 Sort out the logging so that -v etc do the right thing 2017-09-08 21:15:54 +01:00
Vincent Sanders
75018632a9 Use coccinelle to change logging macro calls in c files
for F in $(git ls-files '*.c');do spatch --sp-file foo.cocci --in-place ${F};done

@@ expression E; @@
-LOG(E);
+NSLOG(netsurf, INFO, E);
@@ expression E, E1; @@
-LOG(E, E1);
+NSLOG(netsurf, INFO, E, E1);
@@ expression E, E1, E2; @@
-LOG(E, E1, E2);
+NSLOG(netsurf, INFO, E, E1, E2);
@@ expression E, E1, E2, E3; @@
-LOG(E, E1, E2, E3);
+NSLOG(netsurf, INFO, E, E1, E2, E3);
@@ expression E, E1, E2, E3, E4; @@
-LOG(E, E1, E2, E3, E4);
+NSLOG(netsurf, INFO, E, E1, E2, E3, E4);
@@ expression E, E1, E2, E3, E4, E5; @@
-LOG(E, E1, E2, E3, E4, E5);
+NSLOG(netsurf, INFO, E, E1, E2, E3, E4, E5);
@@ expression E, E1, E2, E3, E4, E5, E6; @@
-LOG(E, E1, E2, E3, E4, E5, E6);
+NSLOG(netsurf, INFO, E, E1, E2, E3, E4, E5, E6);
@@ expression E, E1, E2, E3, E4, E5, E6, E7; @@
-LOG(E, E1, E2, E3, E4, E5, E6, E7);
+NSLOG(netsurf, INFO, E, E1, E2, E3, E4, E5, E6, E7);
2017-09-06 18:45:27 +01:00
Michael Drake
b35b3c1364 Search web: Ensure hlcache callbacks handle errorcode. 2017-08-28 12:10:27 +01:00
Michael Drake
7385f74141 Browser favicon: Handle errorcode in the hlcache callback. 2017-08-28 11:04:42 +01:00
Vincent Sanders
2b2bbbe765 fix resource leak on error in local history initialisation 2017-06-12 22:58:43 +01:00
Vincent Sanders
c4c2c22e87 remove depricated local history display API
Move local history display into separate module using corewindow
API. Note this is purely the rendering and teh browser history module
still constructs the history data.
2017-06-11 14:54:33 +01:00
Vincent Sanders
ee749f2b11 cleanup use of internal frames scrollbar widget header 2017-06-11 11:46:50 +01:00
Vincent Sanders
653ccb78a9 Split local history data from viewer in headers
This separates the local history data object API from the viewing
API. It also changes the api to return nsurl references instead of
strings.
2017-06-10 18:37:21 +01:00
Michael Drake
1d31402dcb Core local history: Remove debug background fill. 2017-06-10 12:05:23 +01:00
Michael Drake
56daba5878 Core local history: Make rendering behave like treeview.
This fixes behaviour now that both treeviews and local history can
be rendered through core window.
2017-06-10 11:50:53 +01:00
Michael Drake
368b03bffb Local history: Pass clip rectangle around as struct. 2017-06-10 11:15:20 +01:00
Michael Drake
283d921f34 Core local history: We always clip, so don't need to handle condition. 2017-06-10 10:44:33 +01:00
Michael Drake
5225ca2b90 Core local history: Remove unused redraw API. 2017-06-10 10:40:43 +01:00
Michael Drake
3b18d36b02 Local history: Render window background fill. 2017-06-09 21:58:16 +01:00
Vincent Sanders
703427a486 Update documentation removing junk and moving to markdown for most text files 2017-06-09 17:30:00 +01:00
Vincent Sanders
f1fdd93ffd Add local history get url API 2017-05-28 21:56:33 +01:00
Vincent Sanders
ac732fb79d update invalidate area core window API
slightly extends the invalidate core window API with error return and
whole window invalidation. Also renames it to be more inline with
browser window API call.

cannot quite reuse browser window API yet as that applies scaling
2017-05-23 09:41:29 +01:00
Michael Drake
ad3da6c139 Core hotlist: Improve hotlist_init documentation. 2017-04-28 12:09:58 +01:00
Michael Drake
06baaa9f7c Core hotlist: A NULL save_path makes the hotlist read-only. 2017-04-28 12:02:48 +01:00
Vincent Sanders
87066f9f8d simplify the browser window operations by removing scroll API
The browser window scrollingAPI was duplicated in window operation
table, this simplifies it to a single set_scroll API.
2017-04-26 20:48:54 +01:00
Vincent Sanders
bd932d958b remove reformat from browser window operation table
the reformat callback was completely unecessary and implementations
appeared potentialy buggy. This rationalises the API and reduces the
number of operations a frontend must provide.
2017-04-26 09:43:18 +01:00
Michael Drake
31d98a1d2e Core hotlist: Ensure any hotlist save callback is removed on hotlist_fini. 2017-04-25 15:14:56 +01:00
Michael Drake
479c3fd0b5 Hotlist: Save hotlist modifications.
When URLs are added, or address entries are edited or deleted,
a hotlist save is scheduled to happen after 10 seconds, if there
isn't already a hotlist save scheduled.
2017-04-25 13:09:44 +01:00
Michael Drake
c47b9f465c Core hotlist API: Take save path at init, rather than fini. 2017-04-25 11:52:47 +01:00
Vincent Sanders
14bff8d023 replace redraw and update methods with invalidate in window table API 2017-04-19 16:23:08 +01:00
Vincent Sanders
93e2b4855b make mimesniffing use core strings 2017-03-19 15:00:21 +00:00
Vincent Sanders
0a8976156a split out browser window drag context into separate structure 2017-03-03 14:45:39 +00:00
Vincent Sanders
6083de4ee1 split out browser windoe favicon context to separate structure 2017-03-03 14:45:39 +00:00
Vincent Sanders
855721282c split out status bar text cache into separate struct 2017-03-03 14:45:39 +00:00
Vincent Sanders
028c4e2860 improve documentation comments in ssl certificate viewer 2017-03-01 23:47:27 +00:00
Vincent Sanders
44c5aef1c8 make scrollbar redraw signal errors correctly
allow scrollbar redraw to return error codes and update documentation
commenst appropriately.
2017-03-01 23:30:29 +00:00
Vincent Sanders
2f5e5620e2 Change interface to system colours to allow reporting of errors
Allow system colour interface to report errors instead of silently
failing and propogate the errors. This also fixes teh system colour
documentation.
2017-03-01 12:50:30 +00:00
Vincent Sanders
e72b89ac3d Improve treeview documentation comments 2017-02-28 23:41:48 +00:00
Vincent Sanders
d9a2c7b9c1 fix some doxygen errors 2017-02-24 14:02:31 +00:00
Vincent Sanders
1820bb7e63 fix remaining doccomment errors 2017-02-22 08:30:58 +00:00
Vincent Sanders
0f69965805 clean up some of the doxygen generation warnings 2017-02-19 11:32:17 +00:00
Vincent Sanders
c60cb335f2 add local history corewindow API 2017-02-17 09:06:25 +00:00
Vincent Sanders
6741b6e287 clean up incorrect documentation comments from plotter API rework 2017-02-14 23:06:04 +00:00
Chris Young
20e3dc6d2a fix build 2017-02-14 17:24:49 +00:00
Chris Young
edaa9c29f2 Remove use of global context data from Amiga frontend 2017-02-13 00:18:32 +00:00
Vincent Sanders
7b9fa8d7eb fix plotter merge 2017-02-12 20:31:18 +00:00
Vincent Sanders
7d660561cc Update knockout plotter to use new API 2017-02-11 13:57:06 +00:00
Vincent Sanders
3722ff8d86 Update all core use of plotters to new API 2017-02-11 13:55:41 +00:00
Vincent Sanders
6075feb487 create netsurf inttypes header to have portable integer formatting macros 2017-01-21 14:20:55 +00:00
Vincent Sanders
70d700b26c rationalise use of utils/utils.h header 2017-01-19 21:15:08 +00:00
Vincent Sanders
7dab7cb43d move plot style header to netsurf include directory
move plotter style header and adjust all callers to use only what they
actually require.
2017-01-13 10:03:24 +00:00
Vincent Sanders
74e73a3b8b make local history use system colours 2017-01-12 08:00:02 +00:00
Chris Young
01e116ee1f Clear pointer after free 2017-01-08 00:46:23 +00:00
Chris Young
5687f6c27d clear tree pointer on free 2017-01-05 18:53:33 +00:00
Vincent Sanders
48f868a955 move tree compatability layer to amiga frontend 2016-12-31 01:04:27 +00:00
Michael Drake
32d2dda01c Old tree code compat layer: Update so it still builds. 2016-12-29 15:01:07 +00:00
Michael Drake
b6be869f19 Hotlist: Allow hotlist initilialisation without hotlist corewindow.
Now, hotlist_init can be called without a corewindow.  This allows the
hotlist backend to be up and running, before any hostlist manager is
opened.  Calling hotlist_manager_init attaches the hotlist to a corewindow.
2016-12-29 14:44:48 +00:00
Michael Drake
ded1979fa1 Treeview: Add API for attaching and detaching from corewindows. 2016-12-29 14:43:38 +00:00
Michael Drake
7750d926ad Treeview: Allow treeview to be created "detached".
This allows treeviews to be constructed before their corewindow.
2016-12-29 14:42:25 +00:00
Michael Drake
93fdbcc6de Treeview: Don't call corewindow callbacks if not attached to a corewindow. 2016-12-29 14:40:54 +00:00
Michael Drake
b93ae2c28f Treeview: Convert to using corewindow callback wrappers. 2016-12-29 14:39:44 +00:00
Michael Drake
fb0cdfed79 Treeview: Add wrappers for corewindow callbacks.
Currently unused.
2016-12-29 14:29:48 +00:00
Vincent Sanders
96e073a297 Merge branch 'vince/ro-corewindow'
Conflicts:
	frontends/riscos/sslcert.h
2016-12-28 16:14:19 +00:00
Vincent Sanders
c8c7de976a Fix crash when treeview widget is reinitialised
The treeview widget can be repeatedly finialised and initialised. The
content ready flag was not being cleard on initialisation so content
was being used in an bad state. For example this caused an assert when
content_redraw() was called on non-ready resource handles.
2016-12-28 15:25:46 +00:00
Michael Drake
71983d527e Tree compat layer: Fix assertion for multiple SSL cert windows.
Use corewindow API rather than this compat layer to avoid the assertion.
2016-12-18 13:03:07 +00:00
Chris Young
4ad375c3b0 Ensure memory used by Messages is freed on exit 2016-12-11 16:43:48 +00:00
Vincent Sanders
bcce8cc7b4 fix spelling of retrived 2016-11-21 00:07:13 +00:00
Daniel Silverstone
f8b95e83bb Official Release
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQEVAwUAWDBZAMMN9DnymH10AQrJjAf+LD/v5Wmzy0TtB7TK58Kk7T6/M6XDZLyR
 a0uyUC5iyGZPnljsds+b6rLl94uM4kDZbATXH2NwZk2BI6Evv8X3ah350XTIciX3
 OcaAHb2oajb8ISesvmaUCPZJhB6k9mUhwpuPUSjuQsMB9kevmoz7KOfqYQ6DPxhq
 fY5G/goqgNlpkUJUPWyAudzJLqh5xsDpG1VGdOPmhjPp3vodYLqFihy8R9Co4gby
 fwcgEL8hI1bnYzsst3JJKJjhlDW/fEgdoScV6lTDp7pZv+VwyNFeKckJAlItwRM0
 cXKSViXgxbTDd9r7n+vrP78srVAY6IGiw7/aIS8/DZAMoEbw6gQXOA==
 =2eDi
 -----END PGP SIGNATURE-----

Merge 3.6 release and prepare 3.7 dev
2016-11-19 13:55:01 +00:00
Daniel Silverstone
75005f9220 Update version.c and amiga version.c 2016-11-19 12:09:51 +00:00
Vincent Sanders
a2396edde4 complete transition to locale independant core operation
The netsurf core no longer uses any locale dependant operations
excepting the mall number or cases where such operations are
explicitly wanted.

the netsurf_init now calls setlocale with the empty string and lets
the c library setup as per its specific implementation.

any core functionality that specificaly processes ascii text must use
the utils/ascii.h header to do so.
2016-09-29 22:37:10 +01:00
Vincent Sanders
bd4377d693 remove cookie manage display of the no_delete boolean
The no_delete flag is mislabelled as persistent. In fact it is simply
never altered from its default value. It is serialised and its state
kept on disc but otherwise is completely vestigial.
2016-09-13 23:28:25 +01:00
Vincent Sanders
e582497322 if the cookie is a session cookie indicate it
previously session cookies were simply displayed as having an expiry
in 1970 which was unhelpful.
2016-09-13 23:17:28 +01:00
Vincent Sanders
17de8d91ac change save complete to use ascii character manipulation 2016-09-11 10:27:11 +01:00
Vincent Sanders
11d2921bbf improve cookie time display and document locale interaction 2016-09-10 23:05:24 +01:00
Vincent Sanders
a8a6098f68 move core window API into netsurf header path 2016-08-18 21:07:04 +01:00
Michael Drake
1457a049bb Treeview: Add treeview_font_size to options.
Default is 11pt, and RISC OS overrides to 12pt.
2016-08-11 08:15:21 +01:00
Michael Drake
9aecf47408 Treeview: Rationalise initialisation and finalisation.
Previously the expected behaviour for front ends using the correct
API for hotlist, global history, cookie manager, and ssl cert
viewer was that the front end would initialise the treeview module
on startup and finalise it on application exit.

However, this meant that the front ends had to include the core
treeview header, which they didn't otherwise need.

Since the tree module provided access to the new treeview utilities
through the old tree API, and was used by front ends with no changes
for the new treeview API, the tree layer refcounted initialisations
of treeview-based widgets, and only called the underlying treeview
init/fini functions when needed.

This change moves that refcounting into the treeview module.  Now
the hotlist, global history, cookie manager, and ssl cert viewer
widgets call call treeview init/fini as part of their own
initialisation and finalisation.  This means that front ends
using the correct APIs for treeview-based widgets don't need to
know anything about the underlying treeview, and the tree module
compatibility layer has had its treeview refcounting removed.

Finally, the treeview_init function took a font size parameter.
Now it does not and lit gets font size from config.  We probably
want to add a new `treeview_font_size` option to nsoptions, and
have differnent defaults on different platforms. 12pt on RISC OS,
and 11pt elsewhere, most likely.
2016-08-10 18:57:36 +01:00
Vincent Sanders
597d167b9d fix hotlist keypress consumption return 2016-08-06 16:59:43 +01:00
Vincent Sanders
73b81a59cc fix global history keypress consumption return 2016-08-04 23:40:34 +01:00
Vincent Sanders
e0d531b824 fix certificate viewer keypress consumption return 2016-07-31 13:25:20 +01:00
Vincent Sanders
b939afe3fc Allow certificate verification user prompt creation to return errors 2016-07-31 13:25:20 +01:00
Vincent Sanders
0f5d7cfcd2 Fix cookie manager keypress consumption return 2016-07-31 13:25:20 +01:00
Michael Drake
a122b94efd URL escape: Simplify to avoid unnecessary allocation.
This removes the toskip parameter, which was only used by the RISC OS
front end.  The toskip param was used to skip 8 characters which did
not need to be escaped from the start of the URL.  The RISC OS front
end now orders the steps of its URL construction to avoid the need
for this.
2016-07-25 09:04:35 +01:00
Vincent Sanders
8066d1c8b4 move key press enums and operations to their own header 2016-07-01 14:27:04 +01:00
Vincent Sanders
0ae788752c remove unecessary textinput header use from treeview header 2016-06-30 16:12:06 +01:00
Vincent Sanders
012b797713 remove unecessary textinput header use from global history header 2016-06-30 15:40:10 +01:00
Vincent Sanders
690066bb56 remove unecessary textinput header use from hotlist header 2016-06-30 15:28:54 +01:00
Vincent Sanders
8dd5b560a5 remove unecessary textinput header use 2016-06-30 11:51:39 +01:00
Vincent Sanders
c313524998 reduce curl usage to fetcher, url unescaping and time parsing 2016-06-29 23:06:53 +01:00
Vincent Sanders
66d0f14b32 move the public form API 2016-06-14 12:39:54 +01:00
Vincent Sanders
976eca9958 msplit public url database API out for frontends 2016-06-13 23:34:45 +01:00
Vincent Sanders
8fdf262683 remove unecessary content API usage from atari frontend 2016-06-08 15:30:25 +01:00
Vincent Sanders
8861923455 Allow include directories to be added by sub makefiles 2016-06-06 14:47:27 +01:00
Vincent Sanders
76a68d7dd0 Update content to split public and internal API 2016-06-06 09:01:38 +01:00
Vincent Sanders
aa53519bcd fix missing includes from header API changes 2016-05-30 21:21:09 +01:00
Vincent Sanders
667605869f move plotters header into public API 2016-05-30 21:05:57 +01:00
Vincent Sanders
7fc0a4c481 move desktop window header into public API 2016-05-30 17:32:57 +01:00
Vincent Sanders
8711fbe47d move mouse and pointer state header into public API 2016-05-30 12:10:08 +01:00
Vincent Sanders
c041393e66 move netsurf header into public API 2016-05-30 11:51:10 +01:00
Vincent Sanders
9ce71876ce move layout header into public API 2016-05-30 11:31:35 +01:00
Vincent Sanders
527756cca0 move fetch header into public API 2016-05-30 11:29:39 +01:00
Vincent Sanders
fe7eb85614 move misc header into public API 2016-05-30 11:23:32 +01:00
Vincent Sanders
aa5090c85b move utf8 header into public API 2016-05-30 11:20:15 +01:00