From 9ff6fc75883a8f0dc11e2dd51e0264dd39a23f55 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Fri, 2 May 2008 15:13:35 +0000 Subject: [PATCH] 2008-05-02 Mike Kestner * atk/Atk.metadata: hide Global.AddGlobalEventListener. * atk/Global.custom: AddGlobalEventListener impl. * atk/Util.custom: AddGlobalEventListenerHandler prop. [Fixes the rest of #365437] svn path=/trunk/gtk-sharp/; revision=102333 --- ChangeLog | 7 +++++++ atk/Atk.metadata | 1 + atk/Global.custom | 35 +++++++++++++++++++++++++++++++++++ atk/Makefile.am | 1 + atk/Util.custom | 29 +++++++++++++++++++++++++++++ 5 files changed, 73 insertions(+) create mode 100644 atk/Global.custom diff --git a/ChangeLog b/ChangeLog index 76d4ac10c..3baba3283 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-05-02 Mike Kestner + + * atk/Atk.metadata: hide Global.AddGlobalEventListener. + * atk/Global.custom: AddGlobalEventListener impl. + * atk/Util.custom: AddGlobalEventListenerHandler prop. + [Fixes the rest of #365437] + 2008-05-01 Mike Kestner * gtk/gtk-api-2.12.raw: regen, removes some private printing API. diff --git a/atk/Atk.metadata b/atk/Atk.metadata index 6a96a9648..70ed3f1f9 100644 --- a/atk/Atk.metadata +++ b/atk/Atk.metadata @@ -1,5 +1,6 @@ + 1 StateManager true AtkAttribute* diff --git a/atk/Global.custom b/atk/Global.custom new file mode 100644 index 000000000..bc4462e01 --- /dev/null +++ b/atk/Global.custom @@ -0,0 +1,35 @@ +// Global.custom - Atk Global class customizations +// +// Author: Mike Kestner +// +// Copyright (c) 2008 Novell, Inc. +// +// This code is inserted after the automatically generated code. +// +// +// 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. + + + [DllImport("libatk-1.0-0.dll")] + static extern uint atk_add_global_event_listener (GLib.Signal.EmissionHookNative hook, IntPtr event_type); + + public static uint AddGlobalEventListener (GLib.Signal.EmissionHook hook, string event_type) + { + IntPtr native_event_type = GLib.Marshaller.StringToPtrGStrdup (event_type); + uint id = atk_add_global_event_listener (new GLib.Signal.EmissionHookMarshaler (hook).Callback, native_event_type); + GLib.Marshaller.Free (native_event_type); + return id; + } + diff --git a/atk/Makefile.am b/atk/Makefile.am index 68e051046..c615debfb 100644 --- a/atk/Makefile.am +++ b/atk/Makefile.am @@ -8,6 +8,7 @@ references = ../glib/glib-sharp.dll sources = customs = \ + Global.custom \ Misc.custom \ Object.custom \ Util.custom diff --git a/atk/Util.custom b/atk/Util.custom index f5e1171ad..e3d122cbd 100644 --- a/atk/Util.custom +++ b/atk/Util.custom @@ -22,6 +22,35 @@ // Boston, MA 02111-1307, USA. + [GLib.CDeclCallback] + delegate uint AddGlobalEventListenerNativeDelegate (GLib.Signal.EmissionHookNative hook, IntPtr event_type); + + static AddGlobalEventListenerDelegate add_global_event_listener_handler; + static AddGlobalEventListenerNativeDelegate add_global_event_listener_callback; + + static uint AddGlobalEventListenerCallback (GLib.Signal.EmissionHookNative hook, IntPtr event_type) + { + try { + return add_global_event_listener_handler (new GLib.Signal.EmissionHookMarshaler (hook, IntPtr.Zero).Invoker, GLib.Marshaller.Utf8PtrToString (event_type)); + } catch (Exception e) { + GLib.ExceptionManager.RaiseUnhandledException (e, false); + } + return 0; + } + + public delegate uint AddGlobalEventListenerDelegate (GLib.Signal.EmissionHook hook, string event_type); + + [DllImport("atksharpglue-2")] + static extern void atksharp_util_override_add_global_event_listener (AddGlobalEventListenerNativeDelegate cb); + public static AddGlobalEventListenerDelegate AddGlobalEventListenerHandler { + set { + add_global_event_listener_handler = value; + if (add_global_event_listener_callback == null) + add_global_event_listener_callback = new AddGlobalEventListenerNativeDelegate (AddGlobalEventListenerCallback); + atksharp_util_override_add_global_event_listener (add_global_event_listener_callback); + } + } + [GLib.CDeclCallback] delegate void RemoveListenerNativeDelegate (uint listener_id);