diff --git a/ChangeLog b/ChangeLog index f496e260c..716ae538b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-04-11 Mike Kestner + + * gtk/Quit.custom : obsolete AddFull and implement Add properly. + * gtk/TreePath.custom : add ctor (int[] indices). + * gtk/Gtk.metadata : hide Quit.Add* and some ellipsis methods that are + implemented manually already. + 2005-04-08 Dan Winship * configure.in: Add an --enable-debug flag, to build .mdb files diff --git a/gtk/Gtk.metadata b/gtk/Gtk.metadata index dd5640272..c8b4cb73c 100644 --- a/gtk/Gtk.metadata +++ b/gtk/Gtk.metadata @@ -24,6 +24,7 @@ 1 1 1 + 1 1 1 1 @@ -50,6 +51,8 @@ 1 1 1 + 1 + 1 1 1 1 diff --git a/gtk/Quit.custom b/gtk/Quit.custom new file mode 100644 index 000000000..33696f095 --- /dev/null +++ b/gtk/Quit.custom @@ -0,0 +1,74 @@ +// Gtk.Quit.custom - Gtk Quit class customizations +// +// Author: Mike Kestner +// +// Copyright (c) 2005 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 +// Public License as published by the Free Software Foundation. +// +// This program 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 +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + + class QuitProxy { + + GtkSharp.FunctionWrapper function; + GtkSharp.CallbackMarshalWrapper marshal; + IntPtr data; + DestroyNotify destroy; + NativeDestroyNotify handler; + + public QuitProxy (GtkSharp.FunctionWrapper function, GtkSharp.CallbackMarshalWrapper marshal, IntPtr data, DestroyNotify destroy) + { + this.marshal = marshal; + this.function = function; + this.destroy = destroy; + this.data = data; + handler = new NativeDestroyNotify (OnDestroy); + } + + void OnDestroy (IntPtr data) + { + if (destroy != null) + destroy (); + + GCHandle gch = (GCHandle) data; + gch.Free (); + } + + public NativeDestroyNotify Handler { + get { + return handler; + } + } + } + + [DllImport("libgtk-win32-2.0-0.dll")] + static extern uint gtk_quit_add_full(uint main_level, GtkSharp.FunctionNative function, GtkSharp.CallbackMarshalNative marshal, IntPtr data, NativeDestroyNotify destroy); + + [Obsolete ("Replaced by Add method")] + public static uint AddFull (uint main_level, Function function, CallbackMarshal marshal, IntPtr data, DestroyNotify destroy) + { + GtkSharp.FunctionWrapper function_wrapper = new GtkSharp.FunctionWrapper (function); + GtkSharp.CallbackMarshalWrapper marshal_wrapper = new GtkSharp.CallbackMarshalWrapper (marshal); + QuitProxy proxy = new QuitProxy (function_wrapper, marshal_wrapper, data, destroy); + GCHandle gch = GCHandle.Alloc (proxy); + return gtk_quit_add_full (main_level, function_wrapper.NativeDelegate, marshal_wrapper.NativeDelegate, (IntPtr) gch, proxy.Handler); + } + + public static uint Add (uint main_level, Function function) + { + GtkSharp.FunctionWrapper function_wrapper = new GtkSharp.FunctionWrapper (function); + GCHandle gch = GCHandle.Alloc (function_wrapper); + return gtk_quit_add_full (main_level, function_wrapper.NativeDelegate, null, (IntPtr) gch, DestroyHelper.NotifyHandler); + } + diff --git a/gtk/TreePath.custom b/gtk/TreePath.custom index 177972081..2deb41696 100644 --- a/gtk/TreePath.custom +++ b/gtk/TreePath.custom @@ -28,3 +28,9 @@ return arr; } } + + public TreePath (int[] indices) : this () + { + foreach (int i in indices) + AppendIndex (i); + }