Comment 11 for bug 1020756

Revision history for this message
In , Damián Nohales (damiannohales) wrote :

Most GUIs, like MacOS X, Microsoft Windows and Qt handle the keyboard bindings for its treeviews in the same way: user can easily expand, collapse and move into tree nodes using only the arrow keys.

In Gtk+, however, is quite different. User needs to press "plus" and "minus" key to collapse and expand nodes, leaving Right and Left arrows with essentially null functionality. Well yeah, that keys allow to move horizontally into row cells.
Seeing many of the applications written using Gtk+, there are not many cases where user find useful moving horizontally across the row with the keyboard, most GtkTreeView that I see are simple and used only to show information.
So I guess the current GtkTreeView behaviour is crazy, not useful in most cases, goes against intuition and against good User Experience.

I'm really not familiar with Gtk+ programming but, as user, I find this "bug" extremely annoying in my day to day.

So, I make some changes in Gtk+ to enhance (from my point of view) the behavior of GtkTreeView with the keyboard.

The attached patch to the 3.4 branch modifies the default GtkTreeView behaviour with the keyboard, expanding nodes with the right arrow and collapsing it with left arrow, selecting parent and child nodes when appropriate:
 - When user press Left on a collapsed node, Gtk+ select the parent node.
 - When user press right on an expanded node, Gtk+ select the first child node.
Users that want to navigate into cells horizontally (as I can see, a non frecuent use case) will need to press Ctrl+<Left|Right>. Users can still move to the parent node with the Backspace key, without collapsing anything.

I don't know exactly if this behavior change break some expected behavior to application programmer, I hope not.

A last question, Why do you implemented the current GtkTreeView behavior knowing the big difference with other tested GUIs?

Best Regards!