Monday, March 30, 2009

Arora 0.6!

Source and binary packages are available on

First off a big thanks to everyone who contributed to this release:

Benjamin C Meyer Benjamin C Meyer

Jakub Wieczorek Jakub Wieczorek

Vincenzo Reale Vincenzo Reale

Kristof Bal Kristof Bal

Jason A. Donenfeld Jason A. Donenfeld

Jakub Lužný Jakub Lužný

Tom Gundersen Tom Gundersen

Robert Hogan Robert Hogan

Mark Reiche Mark Reiche

Guillaume Martres Guillaume Martres

Elrond Elrond

Christian Franke Christian Franke

Benjamin K. Stuhl Benjamin K. Stuhl

Raphael Kubo da Costa Raphael Kubo da Costa

Paul Olav Tvete Paul Olav Tvete

Janusz Lewandowski Janusz Lewandowski

Darryl Kacher Darryl Kacher

Christopher Eby Christopher Eby

If your name is shown, but you have a stock image and want to change that go to and set an image to go with your email address.

This past release has been very busy with over twice the number of changes that we have had in previous releases. First off a big bug that slipped into 0.5 was that keyboard shortcuts didn't always work. This was fixed shortly after 0.5 was released. Many of the changes are improvements and additions to the interface so starting with them here is some screenshot candy.

More control to the users! Added a possibility to control where target="_blank" links will be opened and default to a new tab.

Add the ability to set your preferred web content language

Coping what other browsers have done we added a "Bookmark All Tabs" action to the bookmark menu and the tabbar context menu and a "Open in Tabs" action to all bookmark menu's. For those who used the Konqueror profiles to save and load a group of bookmarks they will find this method to be nice and simple. Also there is now an action to add a folder to the bookmark menus.

As blogged about recently we added Google suggestions to the search widget

While we have always had popup blocking there is now a spot to turn pop-up blocking on and off if you need to.

When loading the webpage we now display some more information in the status bar.

If there is any active download when you quit Arora will now ask for confirmation before exiting.

While the htmlToXBel was in the Arora source it is now installed and the import dialog can use it to import html bookmarks.

One of the features in the WebKit included in Qt 4.5 is support full page zooming. You can zoom in or out and the both the text and images will be scaled.

While there has been a bunch of work improving the Oxygen style, the changes are all in KDE 4.3 so until 4.3 is release Arora will now fall back to Plastique if it detects the Oxygen style. This can be over ridden just by passing "-style oxygen" on the command line. And for any KDE style author out there: make sure you link to KIO so Arora will get the KDE file dialog. You don't have to do anything, but link to KIO and then Arora and other Qt applications will use the KDE file dialog rather then the Qt file dialog.

More changes that are visible in the interface:
- Add support for MidClick/Ctrl-Click/Shift-Ctrl-Click to all urls in Arora. Be it in menus, toolbars, links and javascript links.
- Add support for caching HTTP proxies when using Qt 4.5
- Revert to the default tab selection behavior after closing a tab to match other browsers
- Allow to close the browser with more than one window opened, which was previously impossible (it might be useful when you restore session on startup).
- Force selected window to be on top of the windows stack (previous solution was only activating the window on the taskbar, at least on some desktop environments).
- Middle button role should be inverted when "Select tabs and windows as they created" is selected
- Set bookmarks bar as default folder when executing Add Bookmark Dialog from bookmarks toolbar.
- Ctrl-0 is now zoom-reset, only support jumping to the first 9 tabs rather then 10
- The action to show the status bar isn't updated when entering/exiting fullscreen.
- slow down the loading animation to use less X11 resources
- Make 'Url' and 'Title' string translatable in Add Bookmark dialog.
- Making SSL warnings more verbose Especially show the Certs a bit
- Add common location bar shortcuts such as Alt-D
- Add support for XButton1 and XButton2 to be back/forward on the webview
- When opening a url from history include the old title which can populate the tab title.
- Clearing the cache should only be enabled by default when compiled with Qt 4.5
- Fixed typo that had clear cookies set checked twice instead of checking cookies once and cache once in the Reset dialog.
- One tab close button option should not affect tab open button appearance.
- Set Open action disabled in the download manager until the download is finished.
- Fix issue where actions in the menus were not being translated when you change the language.
- Added a new tool 'placesimport' to import Firefox 3+ history.
- Fix the download manager SqueezeLabel class so that doesn't use 100% cpu, also now under the BSD
- Tweak html error message to make more sense
- Several spelling errors in the interface and code.
- Save more of the main window state, window's fullscreen status, maximized status, menu bar visibility, normal size, and ensure that the menu bar and status bar are returned to their proper states if saving while the window is fullscreen.
- Open a downloaded file instead of the containing directory

Behind the scenes
-Upgrade the SearchLineEdit class
- Rather then using a QMenu use QCompleter now that LineEdit can let you set the text margin and the completer popup takes up the whole width.
- Re-code searchlineedit to just be a LineEdit subclass that has a search button and a clear button and nothing more.
- Re-code the SearchButton to use the QCompleter, take up less width when there isn't one and use a QImage.
- Update the toolbar search widget to use the completer rather then the old QMenu
- Significantly improve the startup time of Arora.
- Add new access functions to the DownloadItem data.
- Move the ClearButton and SearchButton class into its own file
- Fix searchbar for special chars such as '+'. This seems a bug in Qt's addQueryItem. Workaround is to use addEncodedQueryItem.
- delete the root bookmark node on exit to not generate errors in valgrind
- fix memory leaks in the autotest to confirm that Arora's xbel doesn't have any leaks
- Only clear the cookies if we have loaded them
- In ModelMenu rather then all submenu's being QMenu let them be specified by the implementation and as the default use ModelMenu.
- Add new menumodel manualtest
- Set the default max rows of the model menu to -1 and put the special case of 7 in the history menu code
- In 4.5 and beyond store the icon database in the cache directory
- Add a few more mimetypes and match the Firefox desktop file
- Only guess a url string is for a file if it is an absolute path.
- Improve the overall design and implimentation of url loading especially when dealing with a startin
- Several improvements to SingleApplication to make it more robust.
- Improve the git hooks and add a hook to spell check commits
- Don't hard code the location of tmp as it could easily not be /tmp as it is on OS X
- Remove executable bit from html not found file
- Be more vigilant about always using encoded urls when storing them in QString

Build system
- Ignore generated files on Windows
- Add a common way to install binaries and install the tools
- Add commit hook commit-msg with support for aspell to check the spelling of the commit message
- In a source tarball and there is no .git hard code the version and change number so a message doesn't goto the console complaining about no git
- Windows needs to link to advapi32 for GetUserName call, so add it to LIBS.
- Don't force the binary to be re-build every time make is called because of the locale.pri
- Install tools
- Improve the build times of the manualtests by sharing object files and simplifying the includes


Sunday, March 22, 2009

Google Suggest made even easier

Over on Qt Labs Ariya made a blog entry "Google Suggest made easy" where he shows off a little application that has a line edit and will display in a drop down Google suggestions. With the comment that "I plan to add to the browser demo for Qt 4.6" and it being such a small feature I think Arora should have it today.

I created my own implementation for the utililty directory of arora. Everything in the utils directory of Arora is under the BSD license so it can be easily reused by other applications. GoogleSuggest is a QObject subclass with a slot suggest(QString), and a signal suggestions(QStringList suggestions, QString searchText). This makes it easy to plug into existing applications. To go with this class there is a manual test (all utility classes have manualtests and or autotests) there is a command line tool that outputs the suggestions of the arguments.
./googlesuggest family
family guy
family guy episodes
family tree
family feud
family dollar
family video
family watch dog
family fun
family quotes

Using this class the toolbar search in Arora now shows off Google Suggest.

Also tonight we are freezing the strings in Arora for a week before releasing 0.6 so we can get updated translations. If you are interested in helping out with a translation checkout the translating wiki page.