Wow, it’s been 10 days already since I posted my first blog entry on my work on WebKit and the native web browser. Of course my continous updates to the package I posted in my first article will probably have spoiled most of the surprise, but HaikuLauncher has been reduced again into just a bare browser shell, while a new codebase, WebPositive, has been split off from it. Using WebPositive has become a whole lot more pleasing in the meantime. For those of you who have not followed the comments to the original blog, these are the things implemented since my first post on the project:
- Big WebKit API cleanup (BWebView, BWebPage, etc).
- Fixed crashes and oddities with downloads.
- Fixed various other crashing bugs.
- Fixed rendering bugs with transparent text.
- Vastly improved desktop integration.
- Big improvements in rendering efficiency.
- Handling of WebCore navigation events has been greatly improved which results in a lot more sites working.
- Added stop loading button.
- Mouse wheel event fixes (Michael Lotz).
- Fixed dispatching keyboard events to the correct frame (Michael Lotz).
- Completely rewritten tab view.
- Favicon support.
- Many more keyboard shortcuts and some convenience mouse actions (in part by Ryan Leavengood).
- Rewritten timer implementation has vastly improved redraw lags.
- Autocompletion for the URL text field (using, with his permission, great quality code from Beam by Oliver Tappe).
- Smooth scrolling by avoiding to redraw the whole frame on each scroll.
So far, I’ve been working fulltime on WebPositive, often from ninish in the morning to about midnight, with some pauses in between of course. Except for missing bookmark support and an almost useless browsing history menu (because seemingly unsorted), WebPositive has become quite usable - which makes me very happy of course. Some stuff doesn’t work yet, like sending mails in the advanced GMail interface, or clicking links which open new pages from within sub-frames. There need to be application settings, like download location or default fonts. Context menu support is completely missing yet, although some work has already been done to implement them in the original WebKit port. There needs to be persistency across WebPositive sessions. And of course once these more basic features are all in place, I would like to tackle plugin support or maybe HTML5 audio/video support even before that (unless Ryan beats me to it :-). And the browser needs to become an optional package when building Haiku.
All that will probably take the better half of tomorrow, but I should still have some time left for web surfing as a reward.
The feedback I have gotten to my first blog post, but also via mail and in IRC, has been overwhelming! I am glad for the useful feature requests, some of which have been low hanging fruit and I tried to implement them quickly. From what I hear, the donations to Haiku, Inc. have increased a lot, and this makes me feel very glad! Without the sponsoring, I wouldn’t be able to work on WebPositive as much as I am right now, and progress would be much slower. Some bugs are really hard to track down and it can be frustrating and take hours. WebPositive would be nowhere as nice to use as it already is without your support! So thank you!
The next days I will just continue by working on any random missing feature that will make basic browsing more usable. Thanks for reading and all the encouragement already given! Oh and I almost forgot:
Download WebPositive (svn revision 444)
- [GSoC 2017] Porting Swift to Haiku - Week #1 / #2
- [GSoC 2017] Preferences GUI Refactoring - Weekly Report 1
- [GSoC 2017: Harfbuzz] Week #1 #2 of Community Bond
- [GSoC 2017 - BTRFS Write Supports] Week #2
- [GSoC 2017] 3D Hardware Acceleration - Weekly Report 1
- [GSoC 2017] First two weeks of Community Bonding
- [GSoC 2017] Porting the Swift Programming Language to Haiku
- [GSOC 2017] Tcp optimization and fine tuning
- [GSoC 2017] Adding write supports for Btrfs
- [GSoC 2017] Calendar Application