Information about the KHTML port

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).