int clip_GTK_DRAGSOURCESETICONSTOCK(ClipMachine * cm) { C_widget *cwid = _fetch_cw_arg(cm); const gchar *stock = _clip_parc(cm, 2); CHECKCWID(cwid, GTK_IS_WIDGET); CHECKARG(2, CHARACTER_t); gtk_drag_source_set_icon_stock(GTK_WIDGET(cwid->widget), stock); return 0; err: return 1; }
static VALUE rg_m_source_set_icon(int argc, VALUE *argv, VALUE self) { VALUE widget, obj, pixmap = Qnil, mask = Qnil; rb_scan_args(argc, argv, "22", &widget, &obj, &pixmap, &mask); if (argc == 4){ gtk_drag_source_set_icon(RVAL2WIDGET(widget), GDK_COLORMAP(RVAL2GOBJ(obj)), GDK_PIXMAP(RVAL2GOBJ(pixmap)), GDK_BITMAP(RVAL2GOBJ(mask))); } else if (argc == 2){ if (TYPE(obj) == T_SYMBOL){ gtk_drag_source_set_icon_stock(RVAL2WIDGET(widget), rb_id2name(SYM2ID(obj))); } else { gtk_drag_source_set_icon_pixbuf(RVAL2WIDGET(widget), GDK_PIXBUF(RVAL2GOBJ(obj))); } } else { rb_raise(rb_eArgError, "need 2 or 4 arguments"); } return self; }