&sort_closure);
}
+static guint
+clutter_list_model_get_n_rows (ClutterModel *model)
+{
+ ClutterListModel *list_model = CLUTTER_LIST_MODEL (model);
+
+ /* short-circuit in case we don't have a filter in place */
+ if (!clutter_model_get_filter_set (model))
+ return g_sequence_get_length (list_model->priv->sequence);
+
+ return CLUTTER_MODEL_CLASS (clutter_list_model_parent_class)->get_n_rows (model);
+}
+
static void
clutter_list_model_row_removed (ClutterModel *model,
ClutterModelIter *iter)
model_class->insert_row = clutter_list_model_insert_row;
model_class->remove_row = clutter_list_model_remove_row;
model_class->resort = clutter_list_model_resort;
+ model_class->get_n_rows = clutter_list_model_get_n_rows;
model_class->row_removed = clutter_list_model_row_removed;
}
return priv->n_columns;
}
+static guint
+clutter_model_real_get_n_rows (ClutterModel *model)
+{
+ ClutterModelIter *iter;
+ guint row_count;
+
+ g_return_val_if_fail (CLUTTER_IS_MODEL (model), 0);
+
+ iter = clutter_model_get_first_iter (model);
+ if (iter == NULL)
+ return 0;
+
+ row_count = 0;
+ while (!clutter_model_iter_is_last (iter))
+ {
+ if (clutter_model_filter_iter (model, iter))
+ row_count += 1;
+
+ iter = clutter_model_iter_next (iter);
+ }
+
+ g_object_unref (iter);
+
+ return row_count;
+}
+
static void
clutter_model_finalize (GObject *object)
{
klass->get_column_name = clutter_model_real_get_column_name;
klass->get_column_type = clutter_model_real_get_column_type;
klass->get_n_columns = clutter_model_real_get_n_columns;
+ klass->get_n_rows = clutter_model_real_get_n_rows;
/**
* ClutterModel:filter-set:
guint
clutter_model_get_n_rows (ClutterModel *model)
{
- ClutterModelClass *klass;
- guint row_count;
-
g_return_val_if_fail (CLUTTER_IS_MODEL (model), 0);
- klass = CLUTTER_MODEL_GET_CLASS (model);
- if (klass->get_n_rows)
- row_count = klass->get_n_rows (model);
- else
- {
- ClutterModelIter *iter;
-
- iter = clutter_model_get_first_iter (model);
- if (iter == NULL)
- return 0;
-
- row_count = 0;
- while (!clutter_model_iter_is_last (iter))
- {
- if (clutter_model_filter_iter (model, iter))
- row_count += 1;
-
- iter = clutter_model_iter_next (iter);
- }
-
- g_object_unref (iter);
- }
-
- return row_count;
+ return CLUTTER_MODEL_GET_CLASS (model)->get_n_rows (model);
}
-
/**
* clutter_model_set_sorting_column:
* @model: a #ClutterModel