diff --git a/ChangeLog b/ChangeLog index 8201aeb97..5111118f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-10-05 Mike Kestner + + * gtk/Gtk.metadata : hide Selection.GetTargets. + * gtk/SelectionData.custom : impl Targets prop and add Selection, + Target, and Type field accessors. + * gtk/glue/selectiondata.c : field accessor glue. + 2004-09-29 Mike Kestner * gtk/Gtk.metadata : hide some ellipsis methods, add pass_as attrs. diff --git a/gtk/Gtk.metadata b/gtk/Gtk.metadata index b1e6aa76a..d241e81f2 100644 --- a/gtk/Gtk.metadata +++ b/gtk/Gtk.metadata @@ -7,6 +7,7 @@ 1 1 1 + 1 1 1 guchar diff --git a/gtk/SelectionData.custom b/gtk/SelectionData.custom index 8c642c109..a846ec112 100644 --- a/gtk/SelectionData.custom +++ b/gtk/SelectionData.custom @@ -1,3 +1,8 @@ +// SelectionData.custom - customizations for Gtk.SelectionData +// +// Authors: Mike Kestner +// +// Copyright (c) 2004 Novell, Inc. // // This program is free software; you can redistribute it and/or // modify it under the terms of version 2 of the Lesser GNU General @@ -65,3 +70,53 @@ Set(type, format, data, data.Length); } + [DllImport("gtksharpglue")] + private static extern IntPtr gtksharp_gtk_selection_data_get_selection (IntPtr selection_data); + + public Gdk.Atom Selection { + get { + return new Gdk.Atom (gtksharp_gtk_selection_data_get_selection (Handle)); + } + } + + [DllImport("gtksharpglue")] + private static extern IntPtr gtksharp_gtk_selection_data_get_target (IntPtr selection_data); + + public Gdk.Atom Target { + get { + return new Gdk.Atom (gtksharp_gtk_selection_data_get_target (Handle)); + } + } + + [DllImport("libglib-2.0-0.dll")] + static extern void g_free (IntPtr ptr); + + [DllImport("libgtk-win32-2.0-0.dll")] + static extern bool gtk_selection_data_get_targets(IntPtr raw, out IntPtr targets, out int n_atoms); + + public Gdk.Atom [] Targets { + get { + IntPtr target_ptr; + int count; + if (gtk_selection_data_get_targets (Handle, out target_ptr, out count)) { + Gdk.Atom[] result = new Gdk.Atom [count]; + for (int i = 0; i < count; i++) { + IntPtr atom = Marshal.ReadIntPtr (target_ptr, count * IntPtr.Size); + result [i] = new Gdk.Atom (atom); + } + g_free (target_ptr); + return result; + } else + return new Gdk.Atom [0]; + } + } + + [DllImport("gtksharpglue")] + private static extern IntPtr gtksharp_gtk_selection_data_get_type (IntPtr selection_data); + + public Gdk.Atom Type { + get { + return new Gdk.Atom (gtksharp_gtk_selection_data_get_type (Handle)); + } + } + diff --git a/gtk/glue/selectiondata.c b/gtk/glue/selectiondata.c index 765cc049a..a9ec77012 100644 --- a/gtk/glue/selectiondata.c +++ b/gtk/glue/selectiondata.c @@ -25,6 +25,9 @@ gint gtksharp_gtk_selection_data_get_length (GtkSelectionData *data); gint gtksharp_gtk_selection_data_get_format (GtkSelectionData *data); guchar *gtksharp_gtk_selection_data_get_data_pointer (GtkSelectionData *data); +GdkAtom gtksharp_gtk_selection_data_get_selection (GtkSelectionData *data); +GdkAtom gtksharp_gtk_selection_data_get_target (GtkSelectionData *data); +GdkAtom gtksharp_gtk_selection_data_get_type (GtkSelectionData *data); guchar * gtksharp_gtk_selection_data_get_data_pointer (GtkSelectionData *data) @@ -44,3 +47,20 @@ gtksharp_gtk_selection_data_get_format (GtkSelectionData *data) return data->format; } +GdkAtom +gtksharp_gtk_selection_data_get_selection (GtkSelectionData *data) +{ + return data->selection; +} + +GdkAtom +gtksharp_gtk_selection_data_get_target (GtkSelectionData *data) +{ + return data->target; +} + +GdkAtom +gtksharp_gtk_selection_data_get_type (GtkSelectionData *data) +{ + return data->type; +}