X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=hildon%2Fhildon-touch-selector.c;h=69c4c3e4a2210e8baaac688eb58e8726c369ecf5;hb=3d133ba225cb64205fcb6e994cc6e107fb8564bb;hp=38c0781b837edced576f0d4731b05b5531284b5f;hpb=ae7c25e920f7773325a1f48b23fd86018c03f2ae;p=hildon diff --git a/hildon/hildon-touch-selector.c b/hildon/hildon-touch-selector.c index 38c0781..69c4c3e 100644 --- a/hildon/hildon-touch-selector.c +++ b/hildon/hildon-touch-selector.c @@ -24,7 +24,9 @@ * * #HildonTouchSelector is a selector widget, that allows users to * select items from one to many predefined lists. It is very similar - * to #GtkComboBox, but with several individual pannable columns. + * to #GtkComboBox, but with several individual pannable + * columns. #HildonTouchSelector does not need to be placed in a + * #HildonPannableArea (in fact, doing so will prevent panning). * * Normally, you would use #HildonTouchSelector together with a * #HildonPickerDialog activated from a button. For the most common @@ -417,7 +419,8 @@ hildon_touch_selector_class_init (HildonTouchSelectorClass * class) * * Specifies which UI mode to use in the internal treeviews. A setting * of %HILDON_UI_MODE_NORMAL will cause these tree view to disable selections - * and emit row-activated as soon as a row is pressed. You can use the + * and emit row-activated as soon as a row is pressed (unless it is pressed + * to drag the pannable area where the treeview is). You can use the * method hildon_touch_selector_get_last_activated_row() to get it. When * %HILDON_UI_MODE_EDIT is set, selections can be made according to the * setting of the mode on GtkTreeSelection. @@ -2279,6 +2282,19 @@ hildon_touch_selector_get_column (HildonTouchSelector * selector, * will be scrolled to ensure the selected item that is closest to the * currently visible area is shown. * + * The #HildonTouchSelector:initial-scroll property configure the widget + * in order to use this function at the first show. + * + * Take into account that the element is not centered until the widget is + * realized. If the widget is not realized when the function is called, it + * will be postponed. If you call this functions several times before the + * widgets is realized, only the last one will be used. + * + * This behaviour includes any call to hildon_touch_selector_center_on_index(), + * so take care calling this functions, or with the + * #HildonTouchSelector:initial-scroll property in order to get centered on the + * proper element. + * * Since: 2.2 **/ void @@ -2472,3 +2488,47 @@ hildon_touch_selector_get_last_activated_row (HildonTouchSelector *selector, return NULL; } } + + +/** + * hildon_touch_selector_center_on_index: + * @selector: a #HildonTouchSelector + * @column: column number + * @index: the index of the item to center on + * + * Ensures that the column number @column shows the element @index + * + * This is similar to hildon_touch_selector_center_on_selected() but with the + * difference that allows to center on a column item not selected. + * + * Take into account that the element is not centered until the widget is + * realized. If the widget is not realized when the function is called, it will + * be postponed. If you call this function several times before the widget is + * realized, only the last one will be used. + * + * This behaviour includes any call to hildon_touch_selector_center_on_selected(). + * Check this function for more tips. + * + * Since: 2.2 + **/ +void +hildon_touch_selector_center_on_index (HildonTouchSelector *selector, + gint column, + gint index) +{ + HildonTouchSelectorColumn *current_column = NULL; + GtkTreePath *path = NULL; + + g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (selector)); + g_return_if_fail ((column >= 0) && (column < hildon_touch_selector_get_num_columns (selector))); + g_return_if_fail (index >= 0); + + current_column = g_slist_nth_data (selector->priv->columns, column); + + path = gtk_tree_path_new_from_indices (index, -1); + + hildon_touch_selector_scroll_to (current_column, + current_column->priv->tree_view, + path); + gtk_tree_path_free (path); +}