// included by gtk2.pas

{$IFDEF read_forward_definitions}
{$ENDIF read_forward_definitions}

//------------------------------------------------------------------------------

{$IFDEF read_interface_types}
{ respond to "drag_motion"  }
{ auto-highlight  }
{ respond to "drag_drop"  }
   PGtkDestDefaults = ^TGtkDestDefaults;
   TGtkDestDefaults = longint;
{ Flags for the GtkTargetEntry on the destination side
  }
{< nick=same-app > }
{< nick=same-widget > }

   PGtkTargetFlags = ^TGtkTargetFlags;
   TGtkTargetFlags = longint;
{$ENDIF read_interface_types}

//------------------------------------------------------------------------------

{$IFDEF read_interface_rest}
const
   GTK_DEST_DEFAULT_MOTION = 1 shl 0;
   GTK_DEST_DEFAULT_HIGHLIGHT = 1 shl 1;
   GTK_DEST_DEFAULT_DROP = 1 shl 2;
   GTK_DEST_DEFAULT_ALL = $07;

   GTK_TARGET_SAME_APP = 1 shl 0;
   GTK_TARGET_SAME_WIDGET = 1 shl 1;

{ Destination side  }

procedure gtk_drag_get_data(widget:PGtkWidget; context:PGdkDragContext; target:TGdkAtom; time:guint32); cdecl; external gtklib;
procedure gtk_drag_finish(context:PGdkDragContext; success:gboolean; del:gboolean; time:guint32); cdecl; external gtklib;
function gtk_drag_get_source_widget(context:PGdkDragContext):PGtkWidget; cdecl; external gtklib;
procedure gtk_drag_highlight(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_unhighlight(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_dest_set(widget:PGtkWidget; flags:TGtkDestDefaults; targets:PGtkTargetEntry; n_targets:gint; actions:TGdkDragAction); cdecl; external gtklib;
procedure gtk_drag_dest_set_proxy(widget:PGtkWidget; proxy_window:PGdkWindow; protocol:TGdkDragProtocol; use_coordinates:gboolean); cdecl; external gtklib;
procedure gtk_drag_dest_unset(widget:PGtkWidget); cdecl; external gtklib;
function gtk_drag_dest_find_target(widget:PGtkWidget; context:PGdkDragContext; target_list:PGtkTargetList):TGdkAtom; cdecl; external gtklib;
function gtk_drag_dest_get_target_list(widget:PGtkWidget):PGtkTargetList; cdecl; external gtklib;
procedure gtk_drag_dest_set_target_list(widget:PGtkWidget; target_list:PGtkTargetList); cdecl; external gtklib;
{ Source side  }
procedure gtk_drag_source_set(widget:PGtkWidget; start_button_mask:TGdkModifierType; targets:PGtkTargetEntry; n_targets:gint; actions:TGdkDragAction); cdecl; external gtklib;
procedure gtk_drag_source_unset(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_source_set_icon(widget:PGtkWidget; colormap:PGdkColormap; pixmap:PGdkPixmap; mask:PGdkBitmap); cdecl; external gtklib;
procedure gtk_drag_source_set_icon_pixbuf(widget:PGtkWidget; pixbuf:PGdkPixbuf); cdecl; external gtklib;
procedure gtk_drag_source_set_icon_stock(widget:PGtkWidget; stock_id:Pgchar); cdecl; external gtklib;
{ There probably should be functions for setting the targets
   as a GtkTargetList
  }
function gtk_drag_begin(widget:PGtkWidget; targets:PGtkTargetList; actions:TGdkDragAction; button:gint; event:PGdkEvent):PGdkDragContext; cdecl; external gtklib;
{ Set the image being dragged around
  }
procedure gtk_drag_set_icon_widget(context:PGdkDragContext; widget:PGtkWidget; hot_x:gint; hot_y:gint); cdecl; external gtklib;
procedure gtk_drag_set_icon_pixmap(context:PGdkDragContext; colormap:PGdkColormap; pixmap:PGdkPixmap; mask:PGdkBitmap; hot_x:gint;
            hot_y:gint); cdecl; external gtklib;
procedure gtk_drag_set_icon_pixbuf(context:PGdkDragContext; pixbuf:PGdkPixbuf; hot_x:gint; hot_y:gint); cdecl; external gtklib;
procedure gtk_drag_set_icon_stock(context:PGdkDragContext; stock_id:Pgchar; hot_x:gint; hot_y:gint); cdecl; external gtklib;
procedure gtk_drag_set_icon_default(context:PGdkDragContext); cdecl; external gtklib;
function gtk_drag_check_threshold(widget:PGtkWidget; start_x:gint; start_y:gint; current_x:gint; current_y:gint):gboolean; cdecl; external gtklib;
{ Internal functions  }
procedure _gtk_drag_source_handle_event(widget:PGtkWidget; event:PGdkEvent); cdecl; external gtklib;
procedure _gtk_drag_dest_handle_event(toplevel:PGtkWidget; event:PGdkEvent); cdecl; external gtklib;

{$ifndef GTK_DISABLE_DEPRECATED}
procedure gtk_drag_set_default_icon(colormap:PGdkColormap; pixmap:PGdkPixmap; mask:PGdkBitmap; hot_x:gint; hot_y:gint); cdecl; external gtklib;
{$endif}
{ !GTK_DISABLE_DEPRECATED  }

{$ifdef HasGTK2_4}
function gtk_drag_source_get_target_list(widget: PGtkWidget):PGtkTargetList; cdecl; external gtklib;
procedure gtk_drag_source_set_target_list(widget: PGtkWidget; target_list:PGtkTargetList); cdecl; external gtklib;
{$endif}

{$ifdef HasGTK2_6}
procedure gtk_drag_dest_add_image_targets(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_dest_add_text_targets(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_dest_add_uri_targets(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_source_add_image_targets(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_source_add_text_targets(widget:PGtkWidget); cdecl; external gtklib;
procedure gtk_drag_source_add_uri_targets(widget:PGtkWidget); cdecl; external gtklib;
{$endif}

{$ENDIF read_interface_rest}
// included by gtk2.pas

