Here's a summary of changes from the last few months:
It's been a long time since the last changes summary post, and a lot has
happened since, including Google Summer of Code and ports to new
operating systems, so there's a lot to get though here.
The new ports are native front ends for AmigaOS and BeOS/Haiku. I'll
provide more information about them in a separate post.
The Google Summer of Code (GSoC) activity has been a great success. Our
students have completed the new HTML5 parser, vastly overhauled the GTK
front end, implemented PDF export, added print functionality to the GTK
version and split bits of NetSurf out into separate libraries, for ease
of maintenance and use by other projects.
It's worth mentioning Hubbub before listing the key changes that have
happened, as it may be unclear what it does. HTML5 defines exactly how
an HTML parser should work when faced with broken HTML, as well as valid
HTML. The part about handling broken HTML is based on how the mainstream
browsers cope with invalid input. So with Hubbub, we treat broken HTML
(i.e. most of the web) like the mainstream browsers.
Before Hubbub, NetSurf used an XML parser to parse HTML, but now we
actually use a true HTML parser for HTML. So certain instances of valid
HTML are now also handled correctly, where they weren't before.
The upshot of this is that bugs causing a huge variety of different
problems are now fixed. Here's a few examples:
Pages that didn't render at all:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.3243
Pages that appeared completely mangled:
http://uk.wii.ign.com/
Pages where the text stopped part way down:
http://www.ndt-ed.org/GeneralResources/MaterialProperties/UT/ut_matlprop_...
Pages where random JavaScript code appeared on the page:
http://www.youtube.com/
and many more. It fixes over 40 of the bugs that were on the bug tracker
and many others.
+ Fixed a percentage rounding issue in layout.
+ Fixed used of clear property on floated elements.
+ Support for CSS min/max-height
+ Fixed status bar message for standalone images
+ Table height support
+ Fixes for construction of table box structure
+ Improved reflow document behaviour as images are fetched
+ Cookie file handling improvements
+ Ensure layout box scrollbars are visible when needed (eg. not black on
black)
+ Improved behaviour when modifying text selections
+ Fixed formatting of copied or saved text selections
+ Fixed handling of certain file: URLs
+ Fixed text selection redraw bug
+ List marker text now selectable
+ Improved text selection clearing behaviour
+ Form element width / height improvements
+ Text export formatting improved
+ Improved handling of URL redirections
+ Fixed absolutely positioned table cells
+ Fixed containing block behaviour -- fixes layout issues
+ Fixed internal locale handling
+ No longer suppress default Accept: header -- (fixes sites that
brokenly require it)
+ Handle surplus whitespace in URLs
+ Better imagemap handling
+ Rationalised fetch header handling and cache control code
+ Redesigned throbber animation
+ Internal click handling now copes better with different front end
behaviour -- act on press or act on release
+ Performance improvements, especially for when large pages are open
+ Fixed redraw bug related to background images
+ Fixed erroneous drawing of flat coloured text backgrounds
+ Messages files can now be gzipped
+ Change to C89 for BeOS build compatibility
+ Rewritten meta refresh parsing
+ Knockout plotting is now only used for screen rendering -- improves
print, drawfile and PDF export
+ RISC OS: Fixed flashes of random noise with buffered rendering
+ RISC OS: Text selection and drag saving fixes
+ RISC OS: Mouse no longer constrained to window during text selection
+ RISC OS: Fixed mask / alpha channel in sprite export
+ RISC OS: New scripts to open NetSurf's Choices and Scrap directories
+ RISC OS: Fixed RISC OS 6 icon sprites
+ RISC OS: Fixed .nl template keypress restrictions
+ RISC OS: Fixed filetype of downloaded local files
+ RISC OS: Zoom/scale with shift+scrollwheel
+ RISC OS: Fixed local history problems after Scrap is wiped
+ RISC OS: New menu option for PDF export
+ RISC OS: Now possible to dump DA and WimpSlot to files on crash
+ RISC OS: Fix drawfile export crash
+ RISC OS: Templates files now stored in textual format in SVN and
converted to Template files at build time by CCres.
+ GTK: Fixed caret size in form inputs
+ GTK: Fixed caret positioning in form inputs
+ GTK: NetBSD build fixes
+ GTK: Now uses the welcome page as default homepage
+ GTK: Fixed flickering to white during redraw (see layout.c comment)
+ GTK: New debugging submenu for box dump and debug rendering mode
+ GTK: Support for RISC OS sprites, via librosprite
+ GTK: Key shortcuts for zoom/scale improved
+ GTK: Dropped non-cairo plotter
+ GTK: Implemented path plotter (permits use of libsvgtiny)
+ GTK: Can now use series of PNG files for throbber
+ GTK: Fix issue when thumbnailing very large pages
+ BeOS: New port
+ AmigaOS: New port
+ Build: Rewritten multi-platform build system
+ Build: Fixes for native builds on RISC OS
+ Build: Improved GTK build instructions
+ Build: New build configuration system (Makefile.config) allows NetSurf
to be built with or without particular features
+ SVG Tiny: GCCSDK4 build fixes
+ SVG Tiny: Work on linear gradient fills
+ SVG Tiny: Fixed stoke widths
+ SVG Tiny: New library overview document
+ Parser Utils: New library.
+ CSS: New CSS parsing library. (Work in progress.)
+ New automated incremental backup scheme to keep our SVN repository safe
+ New code style guide:
http://www.netsurf-browser.org/developers/StyleGuide.pdf
Changes by our GSoC students:
Michael Lester:
+ GSoC: Fixed proxy options bug
+ GSoC: Improved core text selection
+ GSoC: Improved behavior of form text inputs
+ GSoC: Improved handling of mouse and key presses
+ GSoC: Support for cut-to-clipboard of selections in form inputs
+ GSoC: GTK: Many user interface tweaks to conform to platform standards
+ GSoC: GTK: Context sensitive menu improvements
+ GSoC: GTK: Improved preferences window
+ GSoC: GTK: Preferences window now has instant-apply behaviour
+ GSoC: GTK: Improved About NetSurf window
+ GSoC: GTK: Implemented drag handling (for text selection, page drag,
etc)
+ GSoC: GTK: Implemented platform specific text selection code
+ GSoC: GTK: Implemented clipboard support for copy & paste
+ GSoC: GTK: Download support and new downloads window
Not yet merged into trunk:
+ GSoC: GTK: Implemented global history window
+ GSoC: GTK: Implemented support for tabbed browsing
Adam Blokus:
+ GSoC: New PDF plotter for PDF export functionality
+ GSoC: Enabled use of original bitmap file date in plotters
+ GSoC: Updated libharu to allow export of JPEG and PNG files from
memory
+ GSoC: New concept of page loosening, to fit web pages to paper widths
and improve pagination
+ GSoC: Fixed PDF export bugs reported on RISC OS user mailing list
+ GSoC: GTK: Front end for PDF export
+ GSoC: GTK: Printing support with print dialogue
+ GSoC: GTK: Fixed font / text positioning problem
Sean Fox:
+ GSoC: Extracted NetSurf's GIF handling code into new stand-alone
library -- libnsgif
+ GSoC: Improved libnsgif API
+ GSoC: Extracted NetSurf's BMP/ICO handling code into new stand-alone
library -- libnsbmp
+ GSoC: Improved libnsbmp API
+ GSoC: Made NetSurf use libnsgif and libnsbmp
+ GSoC: Example code and documentation for libnsgif and libnsbmp
Not yet merged into trunk:
+ GSoC: Extraction of core NetSurf "layout engine" (see
http://en.wikipedia.org/wiki/Layout_engine) into new stand-alone
library -- libfandango
+ GSoC: All sorts of API changes for Fandango.
Andrew Sidwell:
+ GSoC: Hubbub: Updated tokeniser to current HTML5 spec
+ GSoC: Hubbub: Now uses libparserutils for input stream handling
+ GSoC: Hubbub: Entity matching
+ GSoC: Hubbub: Work to improve the test suite
+ GSoC: Hubbub: Implemented the treebuilder
+ GSoC: Made NetSurf use Hubbub
Please test the latest version
http://www.netsurf-browser.org/downloads/testbuilds (RISC OS)
Note: On other platforms, you currently have to build from source
to try the latest changes.
Please report* any bugs you encounter.
*
http://www.netsurf-browser.org/documentation/info#Bugs
Thanks,
The NetSurf Developers
--
Michael Drake (tlsa)
http://www.netsurf-browser.org/