[maemo-commits] [maemo-commits] r18822 - in projects/haf/branches/gtk+/hildon-fm-optimization-test: . gtk
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Jul 1 16:07:06 EEST 2009
- Previous message: [maemo-commits] r18821 - in projects/haf/branches/gtk+/hildon-fm-optimization-test: . gtk
- Next message: [maemo-commits] r18823 - in projects/haf/trunk/hildon-control-panel: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: kris Date: 2009-07-01 16:07:03 +0300 (Wed, 01 Jul 2009) New Revision: 18822 Modified: projects/haf/branches/gtk+/hildon-fm-optimization-test/ChangeLog projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelfilter.c projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelsort.c Log: 2009-07-01 Kristian Rietveld <kris at lanedo.com> * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_init), (gtk_tree_model_filter_get_n_columns), (gtk_tree_model_filter_set_model): cache n_columns value from the child model. * gtk/gtktreemodelsort.c (gtk_tree_model_sort_init), (gtk_tree_model_sort_class_init), (gtk_tree_model_sort_get_n_columns), (gtk_tree_model_sort_set_model): likewise. Here, we also had to introduce a private structure. Modified: projects/haf/branches/gtk+/hildon-fm-optimization-test/ChangeLog =================================================================== --- projects/haf/branches/gtk+/hildon-fm-optimization-test/ChangeLog 2009-07-01 13:04:33 UTC (rev 18821) +++ projects/haf/branches/gtk+/hildon-fm-optimization-test/ChangeLog 2009-07-01 13:07:03 UTC (rev 18822) @@ -1,5 +1,18 @@ 2009-07-01 Kristian Rietveld <kris at lanedo.com> + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_init), + (gtk_tree_model_filter_get_n_columns), + (gtk_tree_model_filter_set_model): cache n_columns value from + the child model. + + * gtk/gtktreemodelsort.c (gtk_tree_model_sort_init), + (gtk_tree_model_sort_class_init), + (gtk_tree_model_sort_get_n_columns), + (gtk_tree_model_sort_set_model): likewise. Here, we also + had to introduce a private structure. + +2009-07-01 Kristian Rietveld <kris at lanedo.com> + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_get_nth_visible): short circuit for levels that do not have invisible nodes. Modified: projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelfilter.c =================================================================== --- projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelfilter.c 2009-07-01 13:04:33 UTC (rev 18821) +++ projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelfilter.c 2009-07-01 13:07:03 UTC (rev 18822) @@ -107,6 +107,8 @@ gboolean in_row_deleted; gboolean virtual_root_deleted; + gint child_model_n_columns; + /* signal ids */ guint changed_id; guint inserted_id; @@ -303,6 +305,7 @@ filter->priv->modify_func_set = FALSE; filter->priv->in_row_deleted = FALSE; filter->priv->virtual_root_deleted = FALSE; + filter->priv->child_model_n_columns = -1; } static void @@ -2101,7 +2104,11 @@ if (filter->priv->modify_n_columns > 0) return filter->priv->modify_n_columns; - return gtk_tree_model_get_n_columns (filter->priv->child_model); + if (filter->priv->child_model_n_columns == -1) + filter->priv->child_model_n_columns = + gtk_tree_model_get_n_columns (filter->priv->child_model); + + return filter->priv->child_model_n_columns; } static GType @@ -2938,6 +2945,8 @@ g_object_unref (filter->priv->child_model); filter->priv->visible_column = -1; + filter->priv->child_model_n_columns = -1; + /* FIXME: do we need to destroy more here? */ } Modified: projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelsort.c =================================================================== --- projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelsort.c 2009-07-01 13:04:33 UTC (rev 18821) +++ projects/haf/branches/gtk+/hildon-fm-optimization-test/gtk/gtktreemodelsort.c 2009-07-01 13:07:03 UTC (rev 18822) @@ -87,6 +87,16 @@ gint offset; }; +struct _GtkTreeModelSortPrivate +{ + gint child_model_n_columns; +}; + +typedef struct _GtkTreeModelSortPrivate GtkTreeModelSortPrivate; + +#define GTK_TREE_MODEL_SORT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_TREE_MODEL_SORT, GtkTreeModelSortPrivate)) + + /* Properties */ enum { PROP_0, @@ -248,11 +258,16 @@ static void gtk_tree_model_sort_init (GtkTreeModelSort *tree_model_sort) { + GtkTreeModelSortPrivate *priv; + tree_model_sort->sort_column_id = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; tree_model_sort->stamp = 0; tree_model_sort->zero_ref_count = 0; tree_model_sort->root = NULL; tree_model_sort->sort_list = NULL; + + priv = GTK_TREE_MODEL_SORT_GET_PRIVATE (tree_model_sort); + priv->child_model_n_columns = -1; } static void @@ -275,6 +290,8 @@ P_("The model for the TreeModelSort to sort"), GTK_TYPE_TREE_MODEL, GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_type_class_add_private (class, sizeof (GtkTreeModelSortPrivate)); } static void @@ -901,11 +918,13 @@ gtk_tree_model_sort_get_n_columns (GtkTreeModel *tree_model) { GtkTreeModelSort *tree_model_sort = (GtkTreeModelSort *) tree_model; + GtkTreeModelSortPrivate *priv; if (tree_model_sort->child_model == 0) return 0; - return gtk_tree_model_get_n_columns (tree_model_sort->child_model); + priv = GTK_TREE_MODEL_SORT_GET_PRIVATE (tree_model_sort); + return priv->child_model_n_columns; } static GType @@ -1890,6 +1909,8 @@ gtk_tree_model_sort_set_model (GtkTreeModelSort *tree_model_sort, GtkTreeModel *child_model) { + GtkTreeModelSortPrivate *priv = GTK_TREE_MODEL_SORT_GET_PRIVATE (tree_model_sort); + if (child_model) g_object_ref (child_model); @@ -1912,6 +1933,7 @@ tree_model_sort->root = NULL; _gtk_tree_data_list_header_free (tree_model_sort->sort_list); tree_model_sort->sort_list = NULL; + priv->child_model_n_columns = -1; g_object_unref (tree_model_sort->child_model); } @@ -1950,6 +1972,7 @@ for (i = 0; i < n_columns; i++) types[i] = gtk_tree_model_get_column_type (child_model, i); + priv->child_model_n_columns = n_columns; tree_model_sort->sort_list = _gtk_tree_data_list_header_new (n_columns, types); g_free (types);
- Previous message: [maemo-commits] r18821 - in projects/haf/branches/gtk+/hildon-fm-optimization-test: . gtk
- Next message: [maemo-commits] r18823 - in projects/haf/trunk/hildon-control-panel: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]