[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.org
Date: Wed Jul 1 16:07:06 EEST 2009
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);
 

More information about the maemo-commits mailing list