Refactoring gui interface

Anthony Caudill tcaudilllg at
Mon Feb 3 08:08:30 GMT 2014

If you're going to add javascript, you'd might as well implement Spider
Monkey and get started. A lot of people will consider jumping to NetSurf
from Firefox if it implements Javascript.

On Sun, Feb 2, 2014 at 7:14 PM, Vincent Sanders
<vince at>wrote:

> I have recently put a lot of effort into refactoring the interface
> between the core and the front ends (gui)
> This is the first step along the road to making the core of netsurf a
> library that the front end toolkits can use as a widget.
> All this is in an effort to make the required implementation for a
> front end toolkit much more obvious and to remove many years of
> accumulated cruft in the interfaces. It will also mean that in future
> adding or altering an interface will mean modifying every front end
> will be done in an obvious place.
> When the core requires operations to be performed by the frontend they
> are almost all now performed through a single table interface. This
> table is passed to the netsurf_init() call every frontend makes.
> The table comprises of a set of structures containing function
> pointers. The change has absolutely no performance implications, the
> same number of function calls are made and the same parameters are
> passed as before.
> Going forward some of these interfaces may be improved especially in
> the area of error reporting (many of the operations currently have no
> way of indicating an error)
> I would like to ask all front end maintainers to consider their use of
> the desktop/gui.h header. Previously it caused a great number of
> additional headers, both system and local, to be included.
> The header now has the absolute minimum number of inclusions to ensure
> the types for the tables are available and nothing more.
> I have cleaned up a great number of incorrect includes but I would
> like to reduce this headers usage to the absolute minimum to make
> ongoing cleanups have fewer unexpected side effects.
> It should *only* be used by front ends when using the gui tables,
> probably only from the modules actually implementing them. Currently
> there are a number of frontend headers which it appears include
> desktop/gui.h unnecessarily, these are:
> windows/download.h
> windows/gui.h
> windows/plot.h
> amiga/gui.h
> riscos/save.h
> beos/scaffolding.h
> beos/window.h
> If maintainers could remove any unnecessary includes from these headers
> (and indeed anywhere else) it would be very helpful. The documentation
> [1] on desktop/gui.h makes the current situation pretty clear.
> There are now only a handful of remaining operations not in the gui
> table. The known ones are:
> die()
> warn_user()
> Though there appears to be font render operations in an alternate
> interface which may warrant being merged.
> If anyone spots any more can they let me know
> [1]
> --
> Regards Vincent
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the netsurf-dev mailing list