diff --git a/ChangeLog b/ChangeLog
index 76d4ac10c..3baba3283 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-05-02  Mike Kestner  <mkestner@novell.com>
+
+	* 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  <mkestner@novell.com>
 
 	* 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 @@
 <?xml version="1.0"?>
 <metadata>
+  <attr path="/api/namespace/class[@cname='AtkGlobal']/method[@name='AddGlobalEventListener']" name="hidden">1</attr>
   <attr path="/api/namespace/class[@cname='AtkState_']" name="name">StateManager</attr>
   <attr path="/api/namespace/interface[@cname='AtkComponent']/*[@name='RefAccessibleAtPoint']/return-type" name="owned">true</attr>
   <attr path="/api/namespace/interface[@cname='AtkDocument']/method[@name='GetAttributes']/return-type" name="element_type">AtkAttribute*</attr>
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 <mkestner@novell.com>
+//
+// 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);