/* * Copyright (c) 2003 by the gtk2-perl team (see the file AUTHORS) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307 USA. * * $Id$ */ #include "gtk2perl.h" MODULE = Gtk2::Gdk::Dnd PACKAGE = Gtk2::Gdk::DragContext PREFIX = gdk_drag_context_ SV * protocol (dc) GdkDragContext * dc ALIAS: Gtk2::Gdk::DragContext::is_source = 1 Gtk2::Gdk::DragContext::source_window = 2 Gtk2::Gdk::DragContext::dest_window = 3 Gtk2::Gdk::DragContext::actions = 5 Gtk2::Gdk::DragContext::suggested_action = 6 Gtk2::Gdk::DragContext::action = 7 Gtk2::Gdk::DragContext::start_time = 8 CODE: switch (ix) { case 0: RETVAL = newSVGdkDragProtocol (dc->protocol); break; case 1: RETVAL = newSViv (dc->is_source); break; case 2: RETVAL = newSVGdkWindow (dc->source_window); break; case 3: RETVAL = newSVGdkWindow (dc->dest_window); break; /* must use get_targets to access targets */ case 5: RETVAL = newSVGdkDragAction (dc->actions); break; case 6: RETVAL = newSVGdkDragAction (dc->suggested_action); break; case 7: RETVAL = newSVGdkDragAction (dc->action); break; case 8: RETVAL = newSVuv (dc->start_time); break; default: RETVAL = NULL; g_assert_not_reached (); } OUTPUT: RETVAL =for apidoc Returns a list of Gtk2::Gdk::Atom's, the targets. =cut void targets (dc) GdkDragContext * dc PREINIT: GList * i; PPCODE: for (i = dc->targets; i != NULL ; i = i->next) XPUSHs (sv_2mortal (newSVGdkAtom ((GdkAtom)i->data))); ## GdkDragContext * gdk_drag_context_new (void) GdkDragContext_noinc * gdk_drag_context_new (class) C_ARGS: /* void */ # deprecated ## void gdk_drag_context_ref (GdkDragContext *context) ## void gdk_drag_context_unref (GdkDragContext *context) #if GTK_CHECK_VERSION (2, 22, 0) GdkDragAction gdk_drag_context_get_actions (GdkDragContext *context); GdkDragAction gdk_drag_context_get_selected_action (GdkDragContext *context); GdkDragAction gdk_drag_context_get_suggested_action (GdkDragContext *context); # GList * gdk_drag_context_list_targets (GdkDragContext *context); void gdk_drag_context_list_targets (GdkDragContext *context) PREINIT: GList * i; PPCODE: for (i = gdk_drag_context_list_targets (context); i != NULL ; i = i->next) XPUSHs (sv_2mortal (newSVGdkAtom ((GdkAtom)i->data))); GdkWindow * gdk_drag_context_get_source_window (GdkDragContext *context); #endif /* 2.22 */ # --------------------------------------------------------------------------- # MODULE = Gtk2::Gdk::Dnd PACKAGE = Gtk2::Gdk::DragContext PREFIX = gdk_drag_ ## void gdk_drag_status (GdkDragContext *context, GdkDragAction action, guint32 time_) void gdk_drag_status (context, action, time_=GDK_CURRENT_TIME) GdkDragContext *context GdkDragAction action guint32 time_ ## GdkAtom gdk_drag_get_selection (GdkDragContext *context) GdkAtom gdk_drag_get_selection (context) GdkDragContext *context ## GdkDragContext * gdk_drag_begin (GdkWindow *window, GList *targets) =for apidoc =for arg ... of Gtk2::Gdk::Atom's =cut GdkDragContext_noinc * gdk_drag_begin (class, window, ...) GdkWindow *window PREINIT: GList *targets = NULL; int i; CODE: for (i = items - 1 ; i >= 2 ; i--) targets = g_list_prepend (targets, GUINT_TO_POINTER (SvGdkAtom (ST (i)))); /* the Gdk source code uses GUINT_TO_POINTER * when storing atoms in hashes. */ RETVAL = gdk_drag_begin (window, targets); OUTPUT: RETVAL CLEANUP: g_list_free (targets); #if GTK_CHECK_VERSION(2,2,0) ## guint32 gdk_drag_get_protocol_for_display (GdkDisplay *display, guint32 xid, GdkDragProtocol *protocol) =for apidoc =for signature (ret, protocol) = Gtk2::Gdk::DragContext->get_protocol_for_display ($display, $xid) =cut void gdk_drag_get_protocol_for_display (class, display, xid) GdkDisplay *display guint32 xid PREINIT: GdkDragProtocol protocol; guint32 ret; PPCODE: ret = gdk_drag_get_protocol_for_display (display, xid, &protocol); XPUSHs (sv_2mortal (newSVuv (ret))); XPUSHs (sv_2mortal (ret ? newSVGdkDragProtocol (protocol) : newSVsv (&PL_sv_undef))); ## void gdk_drag_find_window_for_screen (GdkDragContext *context, GdkWindow *drag_window, GdkScreen *screen, gint x_root, gint y_root, GdkWindow **dest_window, GdkDragProtocol *protocol) =for apidoc =for signature (dest_window, protocol) = $context->find_window_for_screen ($drag_window, $screen, $x_root, $y_root) =cut void gdk_drag_find_window_for_screen (context, drag_window, screen, x_root, y_root) GdkDragContext *context GdkWindow *drag_window GdkScreen *screen gint x_root gint y_root PREINIT: GdkWindow *dest_window = NULL; GdkDragProtocol protocol; PPCODE: gdk_drag_find_window_for_screen (context, drag_window, screen, x_root, y_root, &dest_window, &protocol); XPUSHs (sv_2mortal (newSVGdkWindow (dest_window))); XPUSHs (sv_2mortal ((dest_window ? newSVGdkDragProtocol (protocol) : newSVsv (&PL_sv_undef)))); #endif /* >= 2.2.0 */ ## guint32 gdk_drag_get_protocol (guint32 xid, GdkDragProtocol *protocol) =for apidoc =for signature (ret, protocol) = Gtk2::Gdk::DragContext->get_protocol ($xid) =cut void gdk_drag_get_protocol (class, xid) guint32 xid PREINIT: GdkDragProtocol protocol; guint32 ret; PPCODE: ret = gdk_drag_get_protocol (xid, &protocol); XPUSHs (sv_2mortal (newSVuv (ret))); XPUSHs (sv_2mortal (newSVGdkDragProtocol (protocol))); ## void gdk_drag_find_window (GdkDragContext *context, GdkWindow *drag_window, gint x_root, gint y_root, GdkWindow **dest_window, GdkDragProtocol *protocol) =for apidoc =for signature (dest_window, protocol) = $context->find_window ($drag_window, $x_root, $y_root) =cut void gdk_drag_find_window (context, drag_window, x_root, y_root) GdkDragContext *context GdkWindow *drag_window gint x_root gint y_root PREINIT: GdkWindow *dest_window; GdkDragProtocol protocol; PPCODE: gdk_drag_find_window (context, drag_window, x_root, y_root, &dest_window, &protocol); XPUSHs (sv_2mortal (newSVGdkWindow_ornull (dest_window))); XPUSHs (sv_2mortal (dest_window ? newSVGdkDragProtocol (protocol) : newSVsv (&PL_sv_undef))); ## gboolean gdk_drag_motion (GdkDragContext *context, GdkWindow *dest_window, GdkDragProtocol protocol, gint x_root, gint y_root, GdkDragAction suggested_action, GdkDragAction possible_actions, guint32 time_) gboolean gdk_drag_motion (context, dest_window, protocol, x_root, y_root, suggested_action, possible_actions, time_) GdkDragContext *context GdkWindow *dest_window GdkDragProtocol protocol gint x_root gint y_root GdkDragAction suggested_action GdkDragAction possible_actions guint32 time_ ## void gdk_drag_drop (GdkDragContext *context, guint32 time_) void gdk_drag_drop (context, time_) GdkDragContext *context guint32 time_ ## void gdk_drag_abort (GdkDragContext *context, guint32 time_) void gdk_drag_abort (context, time_) GdkDragContext *context guint32 time_ # --------------------------------------------------------------------------- # MODULE = Gtk2::Gdk::Dnd PACKAGE = Gtk2::Gdk::DragContext PREFIX = gdk_ ## void gdk_drop_reply (GdkDragContext *context, gboolean ok, guint32 time_) void gdk_drop_reply (context, ok, time_=GDK_CURRENT_TIME) GdkDragContext *context gboolean ok guint32 time_ ## void gdk_drop_finish (GdkDragContext *context, gboolean success, guint32 time_) void gdk_drop_finish (context, success, time_=GDK_CURRENT_TIME) GdkDragContext *context gboolean success guint32 time_ #if GTK_CHECK_VERSION (2, 6, 0) gboolean gdk_drag_drop_succeeded (GdkDragContext *context); #endif