New treeview
by Michael Drake
Since the old treeview was inefficient, a bit flaky, and difficult to
maintain, we've been planning to replace it for some time.
I have a treeview rewrite in progress which is quite advanced, and I've
just pushed what I have done so far. Currently this is a new generic
treeview module, a partial new global history module, and a hack in the
old treeview for testing the new one.
To see the new treeview in action, either set temp_treeview_test:1 in the
Chocies file, or pass --temp_treeview_test=1 when you execute NetSurf.
With this option set, the global history treeview test can be found in the
hotlist/bookmarks/favourites window. You can have the old and new global
history treeviews open side-by-side.
Any feedback welcome.
A few more notes follow.
Performance
-----------
On a 600MHz XScale, the new global history treeview builds much faster
with my current 326kB of URL file.
New treeview:
(2.440000) desktop/global_history.c global_history_init 657: Loading
global history
(2.600000) desktop/global_history.c global_history_init 709: Loaded
global history
Old treeview:
(2.690000) desktop/history_global_core.c history_global_initialise 281:
Building history tree
(4.020000) desktop/history_global_core.c history_global_initialise 288:
History tree built
That's 0.16s vs. 1.33s. The new one is probably fast enough that we could
get away with making the global history treeview when the global history
window is opened, rather than generating on startup.
RISC OS treeview drags
----------------------
Seems that the RISC OS front end doesn't pass the mouse coordinate to the
core during drags in the treeview window, which is making the drag
behaviour there a bit peculiar.
Treeview behaviour
------------------
Single click on the expand/contract arrow toggles its expansion.
Single click on text/icon selects it.
Double click on a directory toggles its expansion.
Double click on an entry will "launch" it.*
Drag from an empty area starts a selection.
Drag from text/icon region will start a move drag.
Drag from anywhere in a selection will start a move drag.
First mouse button creates new selection.
Second mouse button modifies a selection.
Keyboard shortcuts for select all, clear selection, and delete selection
are implemented.
* Global history doesn't implement the launch callback msg yet.
Global history TODO
-------------------
- Need to implement launch message handling
- Need to implement node deletion message handling (so the delete actually
affects URLdb)
- Need to make browser window update the new global history code as you
visit pages.
What next
---------
1. Get some feedback.
2. Address feedback.
3. Finish new global history.
4. Change global history to use new treeview, removing temp test option.
5. Implement bookmarks, ssl cert chain viewer and cookie manager
with new treeview. Need to add various features to the treeview,
such as read-only mode, node movement drags, etc.
Up to and including step 5, there will be no changes in the front ends...
the old tree stuff will be wrapper layers for the new stuff.
6. Change front ends to use new treeview stuff directly.
Somewhere before step 6, I intend to change the interface for the using
the new treeview features a bit (core_window stuff).
Cheers,
--
Michael Drake (tlsa) http://www.netsurf-browser.org/
10 years, 3 months
Fwd: Installing NetSurf
by Asma
Hi All,
I hope that this is not a waste of the list's time ....
I have successfully installed Enlightenment 17 for my build and I have
chosen Netsurf as the web browser.
However, when trying to install Netsurf under the command of "*make install
[PREFIX=/usr]*" the process stops at "*gtk/Makefile.target:25. *** unable
to find library for : BMP libnsbmp. Stop.*" But the *libnsbmp* library has
been installed.
How can I overcome this?
I'm sure that I'm gonna look stupid against what is probably an easy fix.
Would be really grateful if someone can help me out :)
Regards,
Asma
10 years, 3 months
hi all, a question about libhubbub and namespace
by linuor
Hi all.
I was reading the example libxml.c provided in the src of libhubbub.
And found that it assumed that all html page had namespaces below:
/**
* Mapping of namespace prefixes to URIs, indexed by hubbub_ns.
*/
static struct {
const char *prefix;
const char *url;
} namespaces[] = {
{ NULL, NULL },
{ NULL, "http://www.w3.org/1999/xhtml" },
{ "math", "http://www.w3.org/1998/Math/MathML" },
{ "svg", "http://www.w3.org/2000/svg" },
{ "xlink", "http://www.w3.org/1999/xlink" },
/** \todo Oh dear. LibXML2 refuses to create any namespace with a
* prefix of "xml". That sucks, royally. */
{ "xml", "http://www.w3.org/XML/1998/namespace" },
{ "xmlns", "http://www.w3.org/2000/xmlns/" }
};
However, take aol.com as example. It has namespaces below:
<!DOCTYPE html>
<html xmlns:og="http://opengraphprotocol.org/schema/"xmlns:fb="http://www.facebook.com/2008/fbml"xmlns="http://www.w3.org/1999/xhtml"xml:lang="en"lang="en"class="Gecko ff2"id="global-header-light">
... ...
So, the Question is: how to automatically create namespaces for html
pages such as aol.com ?
Thanks a lot.
10 years, 3 months
NetSurf could be it.
by Anthony Caudill
In my opinion Mozilla is not the organzation it used to be. It doesn't
listen to either users or developers. It makes arbitrary changes and
requires web developers to cope. This attitude reflects an abberant power
imbalance felt by Mozilla between them and their users.
Rather than hope for a change in attitude at Mozilla, I think the org
should be replaced with a project which more accurately incarnates
progressive ideals. I think NetSurf could well be it. I must say, I am
impressed with its project breadth: Amiga and even Atari... that's
impressive. I remember that there were ports of Firefox to the GP2X
handheld, before Gecko became too obfusticated to port, and looking at
these home computer ports I think I see that same spirit. I also like how
you are using libraries, as opposed to IBM's XP-COM unqualified disaster. I
notice that you are lacking in areas, however, which Mozilla dealt with
long ago, with C-based libraries that have been successfully implemented.
Your Javascript woes, for example, can be ably handled by the SpiderMonkey
engine, as they were in SphereRPG, which used SDL and SpiderMonkey side by
side. With respect to HTML 5, I think you may want to question your
dependence on it, because with few exceptions the standards process has
been taken over by Google and is being biased towards its interests. These
interests are not necessarily accessory to a "better web".
I think standardization compliance is a red herring; rather, I think the
future lies in passion and leverage of popular values. However it would be
a mistake to engage in "browser war" -- people who use Firefox do so
because they detest Microsoft, Google, and Apple all. What we want is an
alternative to Mozilla and its modus operandi... if the sites and apps we
make won't run on other browsers, then they should use ours. Google's
aggressive adherents are the real secret to its success... responding to
their attitude in kind could pay dividends for Netsurf.
10 years, 3 months
NetSurf Society Report 2012-2013
by Michael Drake
Thanks to the Secretary and Treasurer for their continued work in
these roles this past year.
Year in review
==============
During last year we launched NetSurf 3.0, the first release to
incorporate our DOM library.
We have also made progress towards JavaScript support. Development
builds supporting a small subset of JavaScript functionality are
now available.
We migrated the project's version control from Subversion to Git,
and changed the core buildsystem.
The project's old autobuilder has been completely replaced with a
Jenkins based Continuous Integration system, which automatically
builds NetSurf and our libraries for various platforms. It also
does automated testing, produces test coverage data, and static
analysis reports.
The new CI system now reports build failures in our IRC channel.
With the discontinuation of the CIA.vc service, we have lost commit
notifications on IRC.
NetSurf 3.0
-----------
The big change in NetSurf 3.0 was the use of our new Document Object
Model library, LibDOM. This new library is a foundation that paves
the way for us to implement a fully dynamic layout engine in the
future, which is essential for useful JavaScript support.
Other improvements included in the release included new textarea
support, ability to fetch and parse CSS in parallel with HTML
documents, extensive behind-the-scenes refactoring, and a host of
smaller changes and fixes.
Current work
------------
Since NetSurf 3.0 was released several areas have been developed.
Background image handling has been revamped to minimise redraw area,
to handle animated background images, and to cope with image
conversion failure. Textarea redraw has been optimised to minimise
redraw area. Visited links are now styled correctly. A bloom
filter utility module has been added which is currently used to
optimise urldb lookups. The handling of user options has been
rewritten to better support changes to the default values and the
system colour settings.
Since the existing treeview is plagued by bugs and poor performance,
it is in the process of being rewritten. The new treeview code is
largely finished, with the the new global history and cookie manager
modules already completed.
Going forward
=============
The main plan for NetSurf's development since NetSurf 1.x has
been shared widely before. Here it is again:
| 1. New HTML parser (hubbub)
| 2. New CSS engine (libcss)
| 3. New DOM implementation (libdom) < We are here now
| 4. New layout engine
| 5. Add JavaScript support < Also working on this
|
| [1] was introduced with NetSurf 2.0
| [2] was introduced with NetSurf 2.5
| [3] was introduced with NetSurf 3.0
| [4] is intended for NetSurf 4.0
| [5] is intended for NetSurf 5.0
Looking at the above plan, it seems likely that, since JavaScript
support has already been started, NetSurf 4.0 will have both
the new layout engine and a fair amount of JavaScript support.
If JavaScript is used to test the dynamic layout engine, I believe
we could combine step [5] into step [4].
The next 12 months
------------------
We are planning a NetSurf 3.1 release once the HTML forms handling
has been rewritten as opaque DOM driven widgets. The treeviews will
be transitioned over to the new implementation soon, so this feature
is also likely to make NetSurf 3.1.
As for LibDOM, there remain many interfaces that are unimplemented,
especially for the HTML element specialisations. Some parts of
LibDOM can also be removed.
Long term there are two main areas of focus for future development:
+ Pushing on with the plan towards JavaScript. The dynamic layout
engine needs planning.
+ Improving/fixing what we've already got. There are various
issues that we have. The most striking being our CSS selection
performance, which has dominated profiling reports for the last
few years.
Thanks to everyone involved in the project for their contributions over
the last 12 months!
--
Michael Drake (tlsa) http://www.netsurf-browser.org/
10 years, 4 months
NetSurf Society Financial Report
by John-Mark Bell
NetSurf Society Financial Report, August 2013
=============================================
Overview
--------
This is a summary of the society's financial status as of 2013-08-04.
The sole source of income since the last report (2012-06-16) has been
the takings from sales of NetSurf at the Wakefield 2013 show.
All outgoings have been in the form of reimbursements for
project-related activities or show stand bookings.
As resolved at the 2010 AGM, the society will now pay up to 15 pence per
mile for mileage.
Detail
------
Balance carried forward: 1651.28
Income:
2013 Wakefield Show sales 290.00
Expenditure:
Michael Drake -- train tickets:
EDB->WKF->EDB Wakefield 2013 (70.00)
John-Mark Bell:
415 miles RDG->WKF->RDG Wakefield 2013 (62.25)
Vincent Sanders:
Hosting for CI system (114.82)
Wakefield 2013 stand + chairs (46.00)
Remaining Funds: 1648.21
10 years, 4 months