The Evince hackfest took place last week from 23rd to 25th July in Strasbourg. Yes, 3 days only, but very productive in my opinion, I’ll summarize all the cool stuff we worked on.
HiDPI
This work was initially started by Owen, and then Germán kept the patches up to date with evince git master. I reviewed all the pending patches and updated the thumbnails one and the result is that evince doesn’t look blurry on HiDPI screens any more.
Recent View
This was a GSoC project of 2013, but the patch provided by the student was never in an “upstreamable” state. Again Germán, who always loved this feature, took care of the patch addressing my review comments. At the beginning of the hackfest most of the work has already been done, we only needed a few more review iterations during the hackfest to finally push this feature to master. The idea is to show the list of recent documents as an icon view with thumbnails and documents metadata. This view is loaded when evince is launched without any document replacing the useless empty window we had before. It also replaces the recent documents submenu in the gear menu.
UI improvements
The move to the header bar recently made the toolbar look a bit cluttered, mainly because the title might use a lot of space. We discussed several ideas to improve the header bar and implemented some of them:
- José Aliste removed the next/previous buttons from the header bar and moved them to the view menu, together with the other navigation actions (go to first/last page) that were in the gear menu.
- I tried to reduce the amount of space used by some of the widgets. The page selector widget was using too much space when the document contains page labels, due to the parentheses. The zoom selector widget tried to behave similar to a combo box, so that the size of the entry depended on the size of the drop down menu. This made the widget use more space than required for the entry contents, and it depended on the current locale. So, I replaced the drop down menu with a GtkPopover and made the entry size depend on its contents instead of the menu.
- Since there are a lot of documents with very confusing titles, Evince shows also the file name in the window title using the pattern <title>—<filename>. For those cases, José Aliste split the window title into title and subtitle of the header bar.
- José Aliste also started to work on the sidebar, reworking it to use a GtkStack instead of a GtkNotebook, simplifying the code a lot and playing with the idea of adding also a button to the toolbar like Preview (the mac document viewer) does.
Juanjo Marín also wrote a patch to change the default zoom mode to “Automatic”, since several people commented that the current “Fit Width” mode doesn’t look good in screens with higher resolutions. The patch is still waiting review.
Annotations
Giselle and Anuj, our GSoc students this year, worked on their projects to improve the annotations support in both Evince and poppler.
- Anuj wrote some patches to add support for Free Text annotations to poppler glib API. After a couple of review iterations and discussions about the API, the patches are now in bugzilla waiting for a final review (I hope to find the time soon)
- Giselle was focused on adding support for highlight annotations to Evince, since poppler already has all the required API for this. The patches are not yet ready, but they look really promising.
Caret navigation and accessibility
Joanie and API continued improving the evince a11y support and fixing some remaining issues from the FoG project. Antía fought with the caret navigation implementation again to implement some missing key bindings and fixing other issues.
Comics backend
Juanjo Marín focused on the comics backend, working on a patch to use libarchive to uncompress the documents instead of spawning external command line tools.
Gestures
I started to review the gestures branch during the hackfest, patches looked clean and simple, but since I was not familiarized with the new GTK+ touch API and I didn’t have a touch screen to try it out either, I decided to wait after the hackfest and see it in action in garnacho’s laptop during GUADEC. Carlos explained to me how the touch API works in GTK+ and I could check it actually works great. The code doesn’t affect the normal use with the mouse, so the branch will be merged in master soon.
THANKS!
Many thanks to Alexandre Franke for the local organization, everything worked perfectly. Of course thanks to the GNOME Foundation for sponsoring the GSoC students, Giselle and Anuj, and Igalia for sponsoring all the Igalians attending the hackfest. Thanks also to Epitech for allowing us to do the hackfest there before the GUADEC.