![]() |
I have received quite a few questions about what had to be done in
order to port KHTML to AtheOS so I will give a short description of the
process here.
KHTML is the HTML widget from KDE. KDE is based on the Qt GUI toolkit
from TrollTech. Qt is both a
collection of generic support classes like containers, strings, IO
classes, etc etc and an advanced GUI toolkit. The "tools" part of Qt
relies mostly upon POSIX and ANSI so it compiled without any changes
on AtheOS. The GUI toolkit of course was not even close to compile on
AtheOS so I simply removed all the GUI classes from the makefiles and
built Qt without it. Then I installed the NetRaider
sources (NetRaider is another non-KDE browser based on KHTML. It
requires a fully working Qt but had no dependencies on the rest of KDE
so it was a good starting point). NetRaider used an old version of
KHTML so I upgraded to the latest (2.1.2) from KDE and attempted to
build the whole thing.
After disabling a lot of code I was finally able to compile everything
and I started to get a picture of what Qt GUI classes was used by
KHTML and started implementing those from scratch. I soon found that
there was many similarites between the Qt GUI toolkit and the AtheOS
GUI toolkit. Most of the classes I had to implement was just thin
wrappers on top of the native AtheOS classes. When all the Qt classes
needed to get the basic functionality of KHTML to work I implemented a
simple browser GUI and started to test it. After just a few days the
HTML parser and renderer was working. Since then I have kept adding
functionality to my Qt wrapper classes and enabled more and more
features in KHTML as the toolkit classes was able to handle it. I have
also done some work on the browser GUI like adding a status-bar, a
toolbar, popup menues, a search dialog, various hotkeys, etc etc.
I have tried to implement as much of the AtheOS specific code in the
Qt wrappers and other classes external to KHTML to make it as easy as
possible to upgrade to newer versions of KHTML. There still has been a
few modifications to the core sources but I still believe it will be
quite easy to upgrade KHTML.
ABrowse is 100% native AtheOS. It use the native AtheOS GUI toolkit
classes through thin Qt wrappers and does not rely upon any X11 layer
of any kind (like the BeOS Qt port who runs on top of a framebuffer
based X11 implementation).
|