static VALUE rbclt_model_filter_row (VALUE self, VALUE row) { return clutter_model_filter_row (CLUTTER_MODEL (RVAL2GOBJ (self)), NUM2UINT (row)) ? Qtrue : Qfalse; }
static void clutter_list_model_remove_row (ClutterModel *model, guint row) { ClutterListModel *model_default = CLUTTER_LIST_MODEL (model); GSequence *sequence = model_default->priv->sequence; GSequenceIter *seq_iter; guint pos = 0; seq_iter = g_sequence_get_begin_iter (sequence); while (!g_sequence_iter_is_end (seq_iter)) { if (clutter_model_filter_row (model, pos)) { if (pos == row) { ClutterModelIter *iter; iter = g_object_new (CLUTTER_TYPE_LIST_MODEL_ITER, "model", model, "row", pos, NULL); CLUTTER_LIST_MODEL_ITER (iter)->seq_iter = seq_iter; /* the actual row is removed from the sequence inside * the ::row-removed signal class handler, so that every * handler connected to ::row-removed will still get * a valid iterator, and every signal connected to * ::row-removed with the AFTER flag will get an updated * model */ g_signal_emit_by_name (model, "row-removed", iter); g_object_unref (iter); break; } } pos += 1; seq_iter = g_sequence_iter_next (seq_iter); } }