static void process_dnd_target_drop_start(WindowContext *ctx, GdkEventDND *event) { if (!enter_ctx.ctx || enter_ctx.just_entered) { gdk_drop_finish(event->context, FALSE, GDK_CURRENT_TIME); gdk_drop_reply(event->context, FALSE, GDK_CURRENT_TIME); return; // Do not process drop events if no enter event and subsequent motion event were received } GdkDragAction selected = GLASS_GDK_DRAG_CONTEXT_GET_SELECTED_ACTION(event->context); mainEnv->CallIntMethod(ctx->get_jview(), jViewNotifyDragDrop, (jint)event->x_root - enter_ctx.dx, (jint)event->y_root - enter_ctx.dy, (jint)event->x_root, (jint)event->y_root, translate_gdk_action_to_glass(selected)); LOG_EXCEPTION(mainEnv) gdk_drop_finish(event->context, TRUE, GDK_CURRENT_TIME); gdk_drop_reply(event->context, TRUE, GDK_CURRENT_TIME); }
int clip_GDK_DROPREPLY(ClipMachine * cm) { C_object *ccontext = _fetch_co_arg(cm); gboolean ok = _clip_parl(cm, 2); guint32 time = _clip_parni(cm, 3); if (!ccontext || ccontext->type != GDK_TYPE_DRAG_CONTEXT) goto err; CHECKARG(2, LOGICAL_t); CHECKARG(3, NUMERIC_t); gdk_drop_reply((GdkDragContext*)ccontext->object, ok, time); return 0; err: return 1; }
static VALUE rg_drop_reply(VALUE self, VALUE ok, VALUE time) { gdk_drop_reply(_SELF(self), RVAL2CBOOL(ok), NUM2UINT(time)); return self; }