/* * Set up a widget as a drag source */ void dnd_setup_source(GtkWindow *window, GtkWidget *w, WaveVar *dv) { gtk_drag_source_set (w, GDK_BUTTON1_MASK, target_table, n_targets, GDK_ACTION_COPY | GDK_ACTION_MOVE); gtk_drag_source_set_icon (w, gtk_widget_get_colormap(GTK_WIDGET(window)), drag_icon_pixmap, drag_mask_pixmap); gtk_signal_connect (GTK_OBJECT(w), "drag_data_get", GTK_SIGNAL_FUNC(dnd_source_data_get), (gpointer) dv); gtk_signal_connect (GTK_OBJECT(w), "drag_data_delete", GTK_SIGNAL_FUNC (dnd_source_data_delete), NULL); }
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; }
int clip_GTK_DRAGSOURCESETICON(ClipMachine * cm) { C_widget *cwid = _fetch_cw_arg(cm); C_object *ccolormap = _fetch_cobject(cm, _clip_spar(cm, 2)); C_object *cpixmap = _fetch_cobject(cm, _clip_spar(cm, 3)); C_object *cmask = _fetch_cobject(cm, _clip_spar(cm, 4)); CHECKCWID(cwid, GTK_IS_WIDGET); CHECKCOBJ(ccolormap, GDK_IS_COLORMAP(ccolormap->object)); CHECKCOBJ(cpixmap, GDK_IS_PIXMAP(cpixmap->object)); CHECKCOBJ(cmask, GDK_IS_BITMAP(cmask)); gtk_drag_source_set_icon(GTK_WIDGET(cwid->widget), GDK_COLORMAP(ccolormap->object), GDK_PIXMAP(cpixmap->object), GDK_BITMAP(cmask->object)); return 0; err: return 1; }