GTK+ hackfest aftermath

I didn’t manage to write a second post during the hackfest, so this is a somewhat belated summary.

We had several long discussions around multi-touch, gestures, event controllers and input handling in general, as well as theming, css, clutter and render objects. At the end of the weekend, we tried to condense these into a rough roadmap for GTK+ and clutter. You can see the notes on that here. One result of the roadmap discussion is that the clutter-based GTK+ will be 4.0 – introducing this kind of new dependency is just not suitable for a 3.x release.

As mentioned, touch was an important topic. Carlos Garnacho has done important pioneering work on multi-touch in GTK+. During the hackfest, he started to separate out the parts of his branch that we agreed to get into 3.4: XInput 2.2 support, basic touch events, kinetic scrolling and smooth scrolling. In the week since the hackfest has ended, I’ve made some API adjustments and cleanups.

The touch-related API in 3.4 will be fairly minimal. We have a GdkEventTouch event, with subtypes for GDK_TOUCH_BEGIN, GDK_TOUCH_UPDATE and GDK_TOUCH_END. To receive these events, use the GDK_TOUCH_MASK event mask and connect to the ::touch-event signal on your widget. Kinetic scrolling in scrolled windows can be turned on and off with the kinetic-scrolling property. To receive scroll events with deltas (aka smooth scroll events), use the GDK_SMOOTH_SCROLL_MASK. Such scroll events have a scroll direction of GDK_SCROLL_SMOOTH, and their deltas can be obtained with the gdk_event_get_scroll_deltas() function.