[maemo-commits] [maemo-commits] r15258 - in projects/haf/trunk/gtk+: . gtk
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Mar 5 16:54:56 EET 2008
- Previous message: [maemo-commits] r15257 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r15259 - projects/haf/trunk/gtk+/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: kris Date: 2008-03-05 16:54:52 +0200 (Wed, 05 Mar 2008) New Revision: 15258 Modified: projects/haf/trunk/gtk+/ChangeLog projects/haf/trunk/gtk+/gtk/gtk.symbols projects/haf/trunk/gtk+/gtk/gtktreeprivate.h projects/haf/trunk/gtk+/gtk/gtktreeselection.c projects/haf/trunk/gtk+/gtk/gtktreeview.c projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.c projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.h Log: 2008-03-05 Kristian Rietveld <kris at imendio.com> Introduce CellDataFunc hint functionality for NB#78800. * gtk/gtktreeviewcolumn.[ch] (gtk_tree_view_column_set_cell_data_with_hint), (gtk_tree_view_column_get_cell_data_hint): new functions, (gtk_tree_view_column_set_cell_data): always set hint to ALL. * gtk/gtktreeprivate.h: add cell_data_hint field. * gtk/gtktreeview.c (gtk_tree_view_bin_expose), (gtk_tree_view_move_cursor_left_right): set cell data with hint where it makes sense. * gtk/gtktreeselection.c (tree_column_is_sensitive): likewise. * gtk/gtk.symbols: updated. Modified: projects/haf/trunk/gtk+/ChangeLog =================================================================== --- projects/haf/trunk/gtk+/ChangeLog 2008-03-05 14:02:33 UTC (rev 15257) +++ projects/haf/trunk/gtk+/ChangeLog 2008-03-05 14:54:52 UTC (rev 15258) @@ -1,5 +1,24 @@ 2008-03-05 Kristian Rietveld <kris at imendio.com> + Introduce CellDataFunc hint functionality for NB#78800. + + * gtk/gtktreeviewcolumn.[ch] + (gtk_tree_view_column_set_cell_data_with_hint), + (gtk_tree_view_column_get_cell_data_hint): new functions, + (gtk_tree_view_column_set_cell_data): always set hint to ALL. + + * gtk/gtktreeprivate.h: add cell_data_hint field. + + * gtk/gtktreeview.c (gtk_tree_view_bin_expose), + (gtk_tree_view_move_cursor_left_right): set cell data with hint + where it makes sense. + + * gtk/gtktreeselection.c (tree_column_is_sensitive): likewise. + + * gtk/gtk.symbols: updated. + +2008-03-05 Kristian Rietveld <kris at imendio.com> + * gtk/makegtkalias.pl: update the regexp handling #ifdef to be able to handle the MAEMO_CHANGES defines. Modified: projects/haf/trunk/gtk+/gtk/gtk.symbols =================================================================== --- projects/haf/trunk/gtk+/gtk/gtk.symbols 2008-03-05 14:02:33 UTC (rev 15257) +++ projects/haf/trunk/gtk+/gtk/gtk.symbols 2008-03-05 14:54:52 UTC (rev 15258) @@ -4239,11 +4239,17 @@ gtk_tree_view_column_cell_get_size gtk_tree_view_column_cell_is_visible gtk_tree_view_column_cell_set_cell_data +#ifdef MAEMO_CHANGES +gtk_tree_view_column_cell_set_cell_data_with_hint +#endif gtk_tree_view_column_clear gtk_tree_view_column_clear_attributes gtk_tree_view_column_clicked gtk_tree_view_column_focus_cell gtk_tree_view_column_get_alignment +#ifdef MAEMO_CHANGES +gtk_tree_view_column_get_cell_data_hint +#endif gtk_tree_view_column_get_cell_renderers gtk_tree_view_column_get_clickable gtk_tree_view_column_get_expand Modified: projects/haf/trunk/gtk+/gtk/gtktreeprivate.h =================================================================== --- projects/haf/trunk/gtk+/gtk/gtktreeprivate.h 2008-03-05 14:02:33 UTC (rev 15257) +++ projects/haf/trunk/gtk+/gtk/gtktreeprivate.h 2008-03-05 14:54:52 UTC (rev 15258) @@ -274,6 +274,8 @@ GtkTreeRowReference *queued_expand_row; GtkTreeRowReference *queued_activate_row; + GtkTreeCellDataHint cell_data_hint; + guint queued_shift_pressed : 1; guint queued_ctrl_pressed : 1; #endif /* MAEMO_CHANGES */ Modified: projects/haf/trunk/gtk+/gtk/gtktreeselection.c =================================================================== --- projects/haf/trunk/gtk+/gtk/gtktreeselection.c 2008-03-05 14:02:33 UTC (rev 15257) +++ projects/haf/trunk/gtk+/gtk/gtktreeselection.c 2008-03-05 14:54:52 UTC (rev 15258) @@ -1260,8 +1260,14 @@ gboolean sensitive; gboolean visible; +#ifdef MAEMO_CHANGES + gtk_tree_view_column_cell_set_cell_data_with_hint (column, model, + iter, FALSE, FALSE, + GTK_TREE_CELL_DATA_HINT_SENSITIVITY); +#else /* !MAEMO_CHANGES */ gtk_tree_view_column_cell_set_cell_data (column, model, iter, FALSE, FALSE); +#endif /* !MAEMO_CHANGES */ cells = gtk_tree_view_column_get_cell_renderers (column); Modified: projects/haf/trunk/gtk+/gtk/gtktreeview.c =================================================================== --- projects/haf/trunk/gtk+/gtk/gtktreeview.c 2008-03-05 14:02:33 UTC (rev 15257) +++ projects/haf/trunk/gtk+/gtk/gtktreeview.c 2008-03-05 14:54:52 UTC (rev 15258) @@ -4656,11 +4656,20 @@ list = (rtl ? list->prev : list->next)) { GtkTreeViewColumn *column = list->data; +#ifdef MAEMO_CHANGES + gtk_tree_view_column_cell_set_cell_data_with_hint (column, + tree_view->priv->model, + &iter, + GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT), + node->children?TRUE:FALSE, + GTK_TREE_CELL_DATA_HINT_KEY_FOCUS); +#else /* !MAEMO_CHANGES */ gtk_tree_view_column_cell_set_cell_data (column, tree_view->priv->model, &iter, GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT), node->children?TRUE:FALSE); +#endif /* !MAEMO_CHANGES */ } has_special_cell = gtk_tree_view_has_special_cell (tree_view); @@ -10436,11 +10445,20 @@ if (column->visible == FALSE) goto loop_end; +#ifdef MAEMO_CHANGES + gtk_tree_view_column_cell_set_cell_data_with_hint (column, + tree_view->priv->model, + &iter, + GTK_RBNODE_FLAG_SET (cursor_node, GTK_RBNODE_IS_PARENT), + cursor_node->children?TRUE:FALSE, + GTK_TREE_CELL_DATA_HINT_KEY_FOCUS); +#else /* !MAEMO_CHANGES */ gtk_tree_view_column_cell_set_cell_data (column, tree_view->priv->model, &iter, GTK_RBNODE_FLAG_SET (cursor_node, GTK_RBNODE_IS_PARENT), cursor_node->children?TRUE:FALSE); +#endif /* !MAEMO_CHANGES */ if (rtl) { Modified: projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.c =================================================================== --- projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.c 2008-03-05 14:02:33 UTC (rev 15257) +++ projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.c 2008-03-05 14:54:52 UTC (rev 15258) @@ -2502,7 +2502,103 @@ return tree_column->sort_order; } +#ifdef MAEMO_CHANGES /** + * gtk_tree_view_column_cell_set_cell_data_with_hint: + * @tree_column: A #GtkTreeViewColumn. + * @tree_model: The #GtkTreeModel to to get the cell renderers attributes from. + * @iter: The #GtkTreeIter to to get the cell renderer's attributes from. + * @is_expander: %TRUE, if the row has children + * @is_expanded: %TRUE, if the row has visible children + * @hint: A #GtkTreeCellDataHint for the CellDataFunc. + * + * Sets the cell renderer based on the @tree_model and @iter. That is, for + * every attribute mapping in @tree_column, it will get a value from the set + * column on the @iter, and use that value to set the attribute on the cell + * renderer. The @hint is a hint for the CellDataFunc so that it does not + * have to set all cell renderer properties, possible leading to some + * optimizations. This is used primarily by the #GtkTreeView. + * + * Since: maemo 4.0 + * Stability: Unstable + **/ +void +gtk_tree_view_column_cell_set_cell_data_with_hint (GtkTreeViewColumn *tree_column, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded, + GtkTreeCellDataHint hint) +{ + GSList *list; + GValue value = { 0, }; + GList *cell_list; + + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + + if (tree_model == NULL) + return; + + GTK_TREE_VIEW (tree_column->tree_view)->priv->cell_data_hint = hint; + + for (cell_list = tree_column->cell_list; cell_list; cell_list = cell_list->next) + { + GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) cell_list->data; + GObject *cell = (GObject *) info->cell; + + list = info->attributes; + + g_object_freeze_notify (cell); + + if (info->cell->is_expander != is_expander) + g_object_set (cell, "is-expander", is_expander, NULL); + + if (info->cell->is_expanded != is_expanded) + g_object_set (cell, "is-expanded", is_expanded, NULL); + + while (list && list->next) + { + gtk_tree_model_get_value (tree_model, iter, + GPOINTER_TO_INT (list->next->data), + &value); + g_object_set_property (cell, (gchar *) list->data, &value); + g_value_unset (&value); + list = list->next->next; + } + + if (info->func) + (* info->func) (tree_column, info->cell, tree_model, iter, info->func_data); + g_object_thaw_notify (G_OBJECT (info->cell)); + } +} + +/** + * gtk_tree_view_column_get_cell_data_hint: + * @tree_column: A #GtkTreeViewColumn. + * + * Returns the current value of the cell data hint as a + * GtkTreeCellDataHint. Note that the value returned is only + * valid when called from a GtkTreeCellDataFunc. The value of the hint + * tells you why the GtkTreeView is calling the GtkTreeCellDataFunc. + * Based on this hint, you can omit to generate the data and set certain + * cell renderer properties to improve performance. + * + * Return value: A #GtkTreeCellDataHint with the hint. + * + * Since: maemo 4.0 + * Stability: Unstable + */ +GtkTreeCellDataHint +gtk_tree_view_column_get_cell_data_hint (GtkTreeViewColumn *tree_column) +{ + g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); + g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_column->tree_view), 0); + + return GTK_TREE_VIEW (tree_column->tree_view)->priv->cell_data_hint; +} +#endif /* MAEMO_CHANGES */ + +/** * gtk_tree_view_column_cell_set_cell_data: * @tree_column: A #GtkTreeViewColumn. * @tree_model: The #GtkTreeModel to to get the cell renderers attributes from. @@ -2531,6 +2627,10 @@ if (tree_model == NULL) return; +#ifdef MAEMO_CHANGES + GTK_TREE_VIEW (tree_column->tree_view)->priv->cell_data_hint = GTK_TREE_CELL_DATA_HINT_ALL; +#endif /* MAEMO_CHANGES */ + for (cell_list = tree_column->cell_list; cell_list; cell_list = cell_list->next) { GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) cell_list->data; Modified: projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.h =================================================================== --- projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.h 2008-03-05 14:02:33 UTC (rev 15257) +++ projects/haf/trunk/gtk+/gtk/gtktreeviewcolumn.h 2008-03-05 14:54:52 UTC (rev 15258) @@ -232,7 +232,23 @@ gint *width); void gtk_tree_view_column_queue_resize (GtkTreeViewColumn *tree_column); +#ifdef MAEMO_CHANGES +typedef enum +{ + GTK_TREE_CELL_DATA_HINT_ALL, + GTK_TREE_CELL_DATA_HINT_KEY_FOCUS, + GTK_TREE_CELL_DATA_HINT_SENSITIVITY +} GtkTreeCellDataHint; +void gtk_tree_view_column_cell_set_cell_data_with_hint (GtkTreeViewColumn *tree_column, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + gboolean is_expander, + gboolean is_expanded, + GtkTreeCellDataHint hint); +GtkTreeCellDataHint gtk_tree_view_column_get_cell_data_hint (GtkTreeViewColumn *column); +#endif /* MAEMO_CHANGES */ + G_END_DECLS
- Previous message: [maemo-commits] r15257 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r15259 - projects/haf/trunk/gtk+/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]