static VALUE rg_reorder(VALUE self, VALUE rbnew_order) { GtkListStore *store = _SELF(self); long n; gint *new_order = RVAL2GINTS(rbnew_order, n); gtk_list_store_reorder(store, new_order); g_free(new_order); return self; }
static VALUE rg_reorder(VALUE self, VALUE rbparent, VALUE rbnew_order) { GtkTreeStore *store = _SELF(self); GtkTreeIter *parent = RVAL2GTKTREEITER(rbparent); gint columns = gtk_tree_model_get_n_columns(GTK_TREE_MODEL(store)); long n; gint *new_order = RVAL2GINTS(rbnew_order, n); if (n != columns) { g_free(new_order); rb_raise(rb_eArgError, "new order array must contain same number of elements as the number of columns in the store: %ld != %d", n, columns); } gtk_tree_store_reorder(store, parent, new_order); g_free(new_order); return self; }
static VALUE gdkpango_layout_line_get_clip_region(VALUE self, VALUE rbx_origin, VALUE rby_origin, VALUE rbindex_ranges) { PangoLayoutLine *line = (PangoLayoutLine *)RVAL2BOXED(self, PANGO_TYPE_LAYOUT_LINE); gint x_origin = NUM2INT(rbx_origin); gint y_origin = NUM2INT(rby_origin); long n; gint *index_ranges = RVAL2GINTS(rbindex_ranges, &n); GdkRegion *result; if (n % 2 != 0) { g_free(index_ranges); rb_raise(rb_eArgError, "an even number of byte indexes must be given"); } result = gdk_pango_layout_line_get_clip_region(line, x_origin, y_origin, index_ranges, n / 2); g_free(index_ranges); return BOXED2RVAL(result, GDK_TYPE_REGION); }
static VALUE rg_rows_reordered(VALUE self, VALUE rbpath, VALUE rbiter, VALUE rbnew_order) { GtkTreeModel *proxy = _SELF(self); GtkTreePath *path = RVAL2GTKTREEPATH(rbpath); GtkTreeIter *iter = RVAL2GTKTREEITER(rbiter); gint columns = gtk_tree_model_get_n_columns(proxy); long n; gint *new_order = RVAL2GINTS(rbnew_order, n); if (n != columns) { g_free(new_order); rb_raise(rb_eArgError, "new order array must contain same number of elements as the number of columns in the store: %ld != %d", n, columns); } gtk_tree_model_rows_reordered(proxy, path, iter, new_order); g_free(new_order); return self; }